Hello @potiuk 

I believe you wrote this script - [`prepare_provider_packages.py`](https://github.com/apache/airflow/blob/master/dev/provider_packages/prepare_provider_packages.py).

I am wondering if there is any reason why you did not use the standard library - [`argument.ArgumentParser`](https://docs.python.org/3/library/argparse.html) in this script?
https://docs.python.org/3/library/argparse.html
https://github.com/apache/airflow/blob/550395192929f86376151b4385cea6b8dfb76e8e/dev/provider_packages/prepare_provider_packages.py#L1518-L1552

This makes the code overly complex and, by the way, more prone to errors e.g.  ``usage()`` method describes the `--version-suffix-for-pypi` parameter, but we changed its name to `--version-suffix`.

What do you think to rewrite this script to use the standard library? Do we have a requirement that prevents this? I think of something similar to [my gist](https://gist.github.com/mik-laj/ff008718fc6cec9fe929731b8c62d6f8).

dev/provider_packages/prepare_provider_packages.py
previous_release_version: str, past_releases: List[ReleaseInfo], current_release_version: str
) -> Optional[str]:
    """
    Find previous release. In case we are re-running current release we assume that last release was
    the previous one. This is needed so that we can generate list of changes since the previous release.
    :param previous_release_version: known last release version
    :param past_releases: list of past releases
    :param current_release_version: release that we are working on currently
    :return:
    """
    previous_release = None
    if previous_release_version == current_release_version:
        
        if len(past_releases) > 1:
            previous_release = past_releases[1].last_commit_hash
    else:
        previous_release = past_releases[0].last_commit_hash if past_releases else None
    return previous_release
def check_if_release_version_ok(