Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix handling empty CLI options for tool google-play #363

Merged

Conversation

priitlatt
Copy link
Contributor

@priitlatt priitlatt commented Oct 24, 2023

When calling google-play actions with empty track or package name, then the invocation can fail because there is no validation that ensures values for those options. For example

$ google-play  get-latest-build-number --package-name "${UNDEFINED_PACKAGE_NAME}" --tracks "${UNDEFINED_TRACK_NAME}"
Get package "None" latest build number from track ""
Executing GooglePlay action get-latest-build-number failed unexpectedly. Detailed logs are available at "/var/folders/wr/c44p23x10f302_kfbj32z0p80000gn/T/codemagic-24-10-23.log". To see more details about the error, add `--verbose` command line option.

fails with

Traceback (most recent call last):
  File "/Users/priit/.pyenv/versions/3.12.0/lib/python3.12/site-packages/codemagic/cli/cli_app.py", line 206, in invoke_cli
    CliApp._running_app._invoke_action(args)
  File "/Users/priit/.pyenv/versions/3.12.0/lib/python3.12/site-packages/codemagic/cli/cli_app.py", line 163, in _invoke_action
    return cli_action(**action_args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/priit/.pyenv/versions/3.12.0/lib/python3.12/site-packages/codemagic/cli/cli_app.py", line 458, in wrapper
    return func(self, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/priit/.pyenv/versions/3.12.0/lib/python3.12/site-packages/codemagic/tools/google_play/actions/get_latest_build_number_action.py", line 33, in get_latest_build_number
    package_tracks = self.list_tracks(package_name, should_print=False)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/priit/.pyenv/versions/3.12.0/lib/python3.12/site-packages/codemagic/cli/cli_app.py", line 458, in wrapper
    return func(self, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/priit/.pyenv/versions/3.12.0/lib/python3.12/site-packages/codemagic/tools/google_play/action_groups/tracks_action_group.py", line 68, in list_tracks
    tracks = self.api_client.list_tracks(package_name)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/priit/.pyenv/versions/3.12.0/lib/python3.12/site-packages/codemagic/google_play/api_client.py", line 152, in list_tracks
    with self.use_app_edit(package_name) as _edit:
  File "/Users/priit/.pyenv/versions/3.12.0/lib/python3.12/contextlib.py", line 137, in __enter__
    return next(self.gen)
           ^^^^^^^^^^^^^^
  File "/Users/priit/.pyenv/versions/3.12.0/lib/python3.12/site-packages/codemagic/google_play/api_client.py", line 111, in use_app_edit
    edit = self.create_edit(package_name)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/priit/.pyenv/versions/3.12.0/lib/python3.12/site-packages/codemagic/google_play/api_client.py", line 85, in create_edit
    edit_request = self.edits_service.insert(body={}, packageName=package_name)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/priit/.pyenv/versions/3.12.0/lib/python3.12/site-packages/googleapiclient/discovery.py", line 1063, in method
    raise TypeError('Missing required parameter "%s"' % name)
TypeError: Missing required parameter "packageName"

This PR adds a restriction to relevant CLI argument which cannot be used with empty values. Updated usage is

google-play get-latest-build-number get-latest-build-number --package-name "${UNDEFINED_PACKAGE_NAME}" --tracks "${UNDEFINED_TRACK_NAME}"
usage: google-play get-latest-build-number [-h] [--log-stream {stderr,stdout}] [--no-color] [--version] [-s] [-v] --package-name PACKAGE_NAME [--tracks TRACKS [TRACKS ...]]
                                           [--credentials CREDENTIALS]
google-play get-latest-build-number: error: argument --package-name/-p: Empty value is not allowed

Updated actions:

  • google-play tracks get,
  • google-play tracks list,
  • google-play tracks promote-release,
  • google-play get-latest-build-number.

@priitlatt priitlatt marked this pull request as ready for review October 24, 2023 12:45
@priitlatt priitlatt merged commit a78b154 into master Oct 26, 2023
@priitlatt priitlatt deleted the bugfix/do-not-allow-empty-values-for-goole-play-actions branch October 26, 2023 07:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants