You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

67 lines
1.9 KiB

"""Fetches artifacts from Android Build."""
import argparse
import os
from treble.fetcher import fetcher_lib
def main():
parser = argparse.ArgumentParser(
description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter)
parser.add_argument(
'--json_keyfile',
help='JSON keyfile containing credentials. '
'(Default: Use default credential file)')
parser.add_argument(
'--target', required=True, help='The target name to download from.')
parser.add_argument(
'--artifact',
action='append',
default=[],
help='The name of the artifact to download. '
'Can be specified multiple times.')
parser.add_argument(
'--regex',
action='append',
default=[],
help='A regex pattern to compare to the names of the artifact to '
'download. Can be specified multiple times.')
parser.add_argument(
'--out_dir',
default='out/artifacts/',
help='Path to store fetched artifact to.')
group = parser.add_mutually_exclusive_group(required=True)
group.add_argument(
'--branch', help='Download from the latest build of this branch.')
group.add_argument('--build_id', help='Download from the specified build.')
args = parser.parse_args()
client = fetcher_lib.create_client_from_json_keyfile(
json_keyfile_name=args.json_keyfile)
build_id = fetcher_lib.get_latest_build_id(
client=client, branch=args.branch,
target=args.target) if args.branch else args.build_id
for artifact in args.artifact:
fetcher_lib.fetch_artifact(
client=client,
build_id=build_id,
target=args.target,
resource_id=artifact,
dest=os.path.join(args.out_dir, artifact))
for re in args.regex:
fetcher_lib.fetch_artifacts(
client=client,
build_id=build_id,
target=args.target,
pattern=re,
out_dir=args.out_dir)
if __name__ == '__main__':
main()