10f1469bcdad11cf8bfe79ace33d28052418ecb48borenet#!/usr/bin/env python 20f1469bcdad11cf8bfe79ace33d28052418ecb48borenet# 30f1469bcdad11cf8bfe79ace33d28052418ecb48borenet# Copyright 2016 Google Inc. 40f1469bcdad11cf8bfe79ace33d28052418ecb48borenet# 50f1469bcdad11cf8bfe79ace33d28052418ecb48borenet# Use of this source code is governed by a BSD-style license that can be 60f1469bcdad11cf8bfe79ace33d28052418ecb48borenet# found in the LICENSE file. 70f1469bcdad11cf8bfe79ace33d28052418ecb48borenet 80f1469bcdad11cf8bfe79ace33d28052418ecb48borenet 90f1469bcdad11cf8bfe79ace33d28052418ecb48borenet"""Tool for managing assets.""" 100f1469bcdad11cf8bfe79ace33d28052418ecb48borenet 110f1469bcdad11cf8bfe79ace33d28052418ecb48borenet 120f1469bcdad11cf8bfe79ace33d28052418ecb48borenetimport argparse 130f1469bcdad11cf8bfe79ace33d28052418ecb48borenetimport asset_utils 140f1469bcdad11cf8bfe79ace33d28052418ecb48borenetimport os 150f1469bcdad11cf8bfe79ace33d28052418ecb48borenetimport shutil 160f1469bcdad11cf8bfe79ace33d28052418ecb48borenetimport subprocess 170f1469bcdad11cf8bfe79ace33d28052418ecb48borenetimport sys 180f1469bcdad11cf8bfe79ace33d28052418ecb48borenet 190f1469bcdad11cf8bfe79ace33d28052418ecb48borenetFILE_DIR = os.path.dirname(os.path.abspath(__file__)) 200f1469bcdad11cf8bfe79ace33d28052418ecb48borenetINFRA_BOTS_DIR = os.path.realpath(os.path.join(FILE_DIR, os.pardir)) 210f1469bcdad11cf8bfe79ace33d28052418ecb48borenet 220f1469bcdad11cf8bfe79ace33d28052418ecb48borenetsys.path.insert(0, INFRA_BOTS_DIR) 230f1469bcdad11cf8bfe79ace33d28052418ecb48borenetimport utils 240f1469bcdad11cf8bfe79ace33d28052418ecb48borenet 250f1469bcdad11cf8bfe79ace33d28052418ecb48borenet 260f1469bcdad11cf8bfe79ace33d28052418ecb48borenetdef add(args): 270f1469bcdad11cf8bfe79ace33d28052418ecb48borenet """Add a new asset.""" 28a42405aa522cd33292b9817da460e9f29e00a201borenet asset_utils.Asset.add(args.asset_name, 29a42405aa522cd33292b9817da460e9f29e00a201borenet asset_utils.MultiStore(gsutil=args.gsutil)) 300f1469bcdad11cf8bfe79ace33d28052418ecb48borenet 310f1469bcdad11cf8bfe79ace33d28052418ecb48borenet 320f1469bcdad11cf8bfe79ace33d28052418ecb48borenetdef remove(args): 330f1469bcdad11cf8bfe79ace33d28052418ecb48borenet """Remove an asset.""" 34a42405aa522cd33292b9817da460e9f29e00a201borenet asset_utils.Asset(args.asset_name, 35a42405aa522cd33292b9817da460e9f29e00a201borenet asset_utils.MultiStore(gsutil=args.gsutil)).remove() 360f1469bcdad11cf8bfe79ace33d28052418ecb48borenet 370f1469bcdad11cf8bfe79ace33d28052418ecb48borenet 380f1469bcdad11cf8bfe79ace33d28052418ecb48borenetdef download(args): 390f1469bcdad11cf8bfe79ace33d28052418ecb48borenet """Download the current version of an asset.""" 40a42405aa522cd33292b9817da460e9f29e00a201borenet asset = asset_utils.Asset(args.asset_name, 41a42405aa522cd33292b9817da460e9f29e00a201borenet asset_utils.MultiStore(gsutil=args.gsutil)) 420f1469bcdad11cf8bfe79ace33d28052418ecb48borenet asset.download_current_version(args.target_dir) 430f1469bcdad11cf8bfe79ace33d28052418ecb48borenet 440f1469bcdad11cf8bfe79ace33d28052418ecb48borenet 450f1469bcdad11cf8bfe79ace33d28052418ecb48borenetdef upload(args): 460f1469bcdad11cf8bfe79ace33d28052418ecb48borenet """Upload a new version of the asset.""" 47a42405aa522cd33292b9817da460e9f29e00a201borenet asset = asset_utils.Asset(args.asset_name, 48a42405aa522cd33292b9817da460e9f29e00a201borenet asset_utils.MultiStore(gsutil=args.gsutil)) 490f1469bcdad11cf8bfe79ace33d28052418ecb48borenet asset.upload_new_version(args.target_dir, commit=args.commit) 500f1469bcdad11cf8bfe79ace33d28052418ecb48borenet 510f1469bcdad11cf8bfe79ace33d28052418ecb48borenet 520f1469bcdad11cf8bfe79ace33d28052418ecb48borenetdef main(argv): 530f1469bcdad11cf8bfe79ace33d28052418ecb48borenet parser = argparse.ArgumentParser(description='Tool for managing assets.') 540f1469bcdad11cf8bfe79ace33d28052418ecb48borenet subs = parser.add_subparsers(help='Commands:') 550f1469bcdad11cf8bfe79ace33d28052418ecb48borenet 560f1469bcdad11cf8bfe79ace33d28052418ecb48borenet prs_add = subs.add_parser('add', help='Add a new asset.') 570f1469bcdad11cf8bfe79ace33d28052418ecb48borenet prs_add.set_defaults(func=add) 580f1469bcdad11cf8bfe79ace33d28052418ecb48borenet prs_add.add_argument('asset_name', help='Name of the asset.') 59a34e95a77bd0812e4af3dbb3b3f83072fd04a780Eric Boren prs_add.add_argument('--gsutil') 600f1469bcdad11cf8bfe79ace33d28052418ecb48borenet 610f1469bcdad11cf8bfe79ace33d28052418ecb48borenet prs_remove = subs.add_parser('remove', help='Remove an asset.') 620f1469bcdad11cf8bfe79ace33d28052418ecb48borenet prs_remove.set_defaults(func=remove) 630f1469bcdad11cf8bfe79ace33d28052418ecb48borenet prs_remove.add_argument('asset_name', help='Name of the asset.') 64a34e95a77bd0812e4af3dbb3b3f83072fd04a780Eric Boren prs_remove.add_argument('--gsutil') 650f1469bcdad11cf8bfe79ace33d28052418ecb48borenet 660f1469bcdad11cf8bfe79ace33d28052418ecb48borenet prs_download = subs.add_parser( 670f1469bcdad11cf8bfe79ace33d28052418ecb48borenet 'download', help='Download the current version of an asset.') 680f1469bcdad11cf8bfe79ace33d28052418ecb48borenet prs_download.set_defaults(func=download) 690f1469bcdad11cf8bfe79ace33d28052418ecb48borenet prs_download.add_argument('asset_name', help='Name of the asset.') 700f1469bcdad11cf8bfe79ace33d28052418ecb48borenet prs_download.add_argument('--target_dir', '-t', required=True) 710f1469bcdad11cf8bfe79ace33d28052418ecb48borenet prs_download.add_argument('--gsutil') 720f1469bcdad11cf8bfe79ace33d28052418ecb48borenet 730f1469bcdad11cf8bfe79ace33d28052418ecb48borenet prs_upload = subs.add_parser( 740f1469bcdad11cf8bfe79ace33d28052418ecb48borenet 'upload', help='Upload a new version of an asset.') 750f1469bcdad11cf8bfe79ace33d28052418ecb48borenet prs_upload.set_defaults(func=upload) 760f1469bcdad11cf8bfe79ace33d28052418ecb48borenet prs_upload.add_argument('asset_name', help='Name of the asset.') 770f1469bcdad11cf8bfe79ace33d28052418ecb48borenet prs_upload.add_argument('--target_dir', '-t', required=True) 780f1469bcdad11cf8bfe79ace33d28052418ecb48borenet prs_upload.add_argument('--gsutil') 790f1469bcdad11cf8bfe79ace33d28052418ecb48borenet prs_upload.add_argument('--commit', action='store_true') 800f1469bcdad11cf8bfe79ace33d28052418ecb48borenet 810f1469bcdad11cf8bfe79ace33d28052418ecb48borenet args = parser.parse_args(argv) 820f1469bcdad11cf8bfe79ace33d28052418ecb48borenet args.func(args) 830f1469bcdad11cf8bfe79ace33d28052418ecb48borenet 840f1469bcdad11cf8bfe79ace33d28052418ecb48borenet 850f1469bcdad11cf8bfe79ace33d28052418ecb48borenetif __name__ == '__main__': 860f1469bcdad11cf8bfe79ace33d28052418ecb48borenet main(sys.argv[1:]) 87