1fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#!/usr/bin/env python 2fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot# 3fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot# Copyright 2016 Google Inc. 4fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot# 5fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot# Use of this source code is governed by a BSD-style license that can be 6fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot# found in the LICENSE file. 7fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 8fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 9fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot"""Tool for managing assets.""" 10fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 11fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 12fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotimport argparse 13fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotimport asset_utils 14fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotimport os 15fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotimport shutil 16fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotimport subprocess 17fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotimport sys 18fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 19fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team RobotFILE_DIR = os.path.dirname(os.path.abspath(__file__)) 20fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team RobotINFRA_BOTS_DIR = os.path.realpath(os.path.join(FILE_DIR, os.pardir)) 21fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 22fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotsys.path.insert(0, INFRA_BOTS_DIR) 23fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotimport utils 24fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 25fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 26fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotdef add(args): 27fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot """Add a new asset.""" 28fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot asset_utils.Asset.add(args.asset_name, 29fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot asset_utils.MultiStore(gsutil=args.gsutil)) 30fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 31fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 32fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotdef remove(args): 33fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot """Remove an asset.""" 34fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot asset_utils.Asset(args.asset_name, 35fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot asset_utils.MultiStore(gsutil=args.gsutil)).remove() 36fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 37fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 38fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotdef download(args): 39fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot """Download the current version of an asset.""" 40fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot asset = asset_utils.Asset(args.asset_name, 41fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot asset_utils.MultiStore(gsutil=args.gsutil)) 42fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot asset.download_current_version(args.target_dir) 43fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 44fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 45fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotdef upload(args): 46fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot """Upload a new version of the asset.""" 47fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot asset = asset_utils.Asset(args.asset_name, 48fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot asset_utils.MultiStore(gsutil=args.gsutil)) 49fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot asset.upload_new_version(args.target_dir, commit=args.commit) 50fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 51fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 52fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotdef main(argv): 53fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot parser = argparse.ArgumentParser(description='Tool for managing assets.') 54fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot subs = parser.add_subparsers(help='Commands:') 55fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 56fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot prs_add = subs.add_parser('add', help='Add a new asset.') 57fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot prs_add.set_defaults(func=add) 58fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot prs_add.add_argument('asset_name', help='Name of the asset.') 59fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot prs_add.add_argument('--gsutil') 60fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 61fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot prs_remove = subs.add_parser('remove', help='Remove an asset.') 62fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot prs_remove.set_defaults(func=remove) 63fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot prs_remove.add_argument('asset_name', help='Name of the asset.') 64fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot prs_remove.add_argument('--gsutil') 65fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 66fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot prs_download = subs.add_parser( 67fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 'download', help='Download the current version of an asset.') 68fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot prs_download.set_defaults(func=download) 69fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot prs_download.add_argument('asset_name', help='Name of the asset.') 70fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot prs_download.add_argument('--target_dir', '-t', required=True) 71fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot prs_download.add_argument('--gsutil') 72fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 73fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot prs_upload = subs.add_parser( 74fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 'upload', help='Upload a new version of an asset.') 75fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot prs_upload.set_defaults(func=upload) 76fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot prs_upload.add_argument('asset_name', help='Name of the asset.') 77fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot prs_upload.add_argument('--target_dir', '-t', required=True) 78fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot prs_upload.add_argument('--gsutil') 79fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot prs_upload.add_argument('--commit', action='store_true') 80fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 81fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot args = parser.parse_args(argv) 82fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot args.func(args) 83fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 84fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 85fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotif __name__ == '__main__': 86fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot main(sys.argv[1:]) 87