Last active
August 2, 2019 00:11
-
-
Save mitchhentges/bf38f085d1566cf0373970b01fc0e956 to your computer and use it in GitHub Desktop.
push_apk(...) with target types
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# usage from pushapkscript | |
def pushapkscript_function_types(publish_config): | |
apks = ['file', 'file2'] | |
expected_package_names = ['org.mozilla.fenix'] | |
if publish_config['target_platform'] == 'google': | |
target = GooglePlayPush( | |
publish_config['google_service_account'], | |
publish_config['google_credentials_file'], | |
publish_config['google_track'], | |
publish_config.get('google_rollout') | |
) | |
else: | |
target = AmazonPush( | |
publish_config['amazon_client_id'], | |
publish_config['amazon_client_secret'], | |
) | |
push_apk_types( | |
apks, | |
target, | |
expected_package_names, | |
commit=publish_config['commit'], | |
contact_server=publish_config['contact_server'], | |
skip_checks_fennec=True, | |
) | |
# -------------------------------- | |
# mozapkpublisher | |
def push_apk_types( | |
apks, | |
target: Union[GooglePlayPush, AmazonPush], | |
expected_package_names, | |
*, | |
commit, | |
contact_server, | |
skip_check_ordered_version_codes=False, | |
skip_check_multiple_locales=False, | |
skip_check_same_locales=False, | |
skip_checks_fennec=False, | |
): | |
# We want to tune down some logs, even when push_apk() isn't called from the command line | |
main_logging.init() | |
apks_metadata = extract_and_check_apks_metadata( | |
apks, | |
expected_package_names, | |
skip_checks_fennec, | |
skip_check_multiple_locales, | |
skip_check_same_locales, | |
skip_check_ordered_version_codes, | |
) | |
# Each distinct product must be uploaded in different store transaction, so we split them | |
# by package name here. | |
apks_by_package_name = _apks_by_package_name(apks_metadata) | |
for package_name, extracted_apks in apks_by_package_name.items(): | |
target.push(package_name, extracted_apks, contact_server, commit) | |
@dataclass | |
class GooglePlayPush: | |
service_account: str | |
credentials_file_name: str | |
track: str | |
rollout_percentage: Optional[int] | |
def push(self, package_name, extracted_apks, contact_server, commit): | |
with GooglePlayEdit.transaction( | |
self.service_account, | |
self.credentials_file_name, | |
package_name, | |
contact_server, | |
commit, | |
) as edit: | |
edit.update_app(extracted_apks, self.track, self.rollout_percentage) | |
@dataclass | |
class AmazonPush: | |
client_id: str | |
client_secret: str | |
def push(self, package_name, extracted_apks, contact_server, commit): | |
with AmazonStoreEdit.transaction( | |
self.client_id, | |
self.client_secret, | |
package_name, | |
contact_server, | |
commit, | |
) as edit: | |
edit.update_app(extracted_apks) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment