| #!/usr/bin/env python |
| # |
| # Copyright 2016 Google Inc. |
| # |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| |
| """Tool for managing assets.""" |
| |
| |
| import argparse |
| import asset_utils |
| import os |
| import shutil |
| import subprocess |
| import sys |
| |
| FILE_DIR = os.path.dirname(os.path.abspath(__file__)) |
| INFRA_BOTS_DIR = os.path.realpath(os.path.join(FILE_DIR, os.pardir)) |
| |
| sys.path.insert(0, INFRA_BOTS_DIR) |
| import utils |
| |
| |
| def _common_args(prs): |
| """Add common args to the given argparse.ArgumentParser.""" |
| prs.add_argument('asset_name', help='Name of the asset.') |
| prs.add_argument('--gsutil') |
| prs.add_argument('--service_account_json') |
| |
| |
| def _store(args): |
| """Return asset_utils.MultiStore based on args.""" |
| return asset_utils.MultiStore(gsutil=args.gsutil, |
| service_account_json=args.service_account_json) |
| |
| |
| def _asset(args): |
| """Return asset_utils.Asset based on args.""" |
| return asset_utils.Asset(args.asset_name, _store(args)) |
| |
| |
| def add(args): |
| """Add a new asset.""" |
| asset_utils.Asset.add(args.asset_name, _store(args)) |
| |
| |
| def remove(args): |
| """Remove an asset.""" |
| _asset(args).remove() |
| |
| |
| def download(args): |
| """Download the current version of an asset.""" |
| _asset(args).download_current_version(args.target_dir) |
| |
| |
| def upload(args): |
| """Upload a new version of the asset.""" |
| _asset(args).upload_new_version(args.target_dir, commit=args.commit, |
| extra_tags=args.extra_tags) |
| |
| |
| def main(argv): |
| parser = argparse.ArgumentParser(description='Tool for managing assets.') |
| subs = parser.add_subparsers(help='Commands:') |
| |
| prs_add = subs.add_parser('add', help='Add a new asset.') |
| prs_add.set_defaults(func=add) |
| _common_args(prs_add) |
| |
| prs_remove = subs.add_parser('remove', help='Remove an asset.') |
| prs_remove.set_defaults(func=remove) |
| _common_args(prs_remove) |
| |
| prs_download = subs.add_parser( |
| 'download', help='Download the current version of an asset.') |
| prs_download.set_defaults(func=download) |
| _common_args(prs_download) |
| prs_download.add_argument('--target_dir', '-t', required=True) |
| |
| prs_upload = subs.add_parser( |
| 'upload', help='Upload a new version of an asset.') |
| prs_upload.set_defaults(func=upload) |
| _common_args(prs_upload) |
| prs_upload.add_argument('--target_dir', '-t', required=True) |
| prs_upload.add_argument('--commit', action='store_true') |
| prs_upload.add_argument( |
| '--extra_tags', nargs='+', |
| help='Additional tags for the CIPD package, "key:value"') |
| |
| args = parser.parse_args(argv) |
| args.func(args) |
| |
| |
| if __name__ == '__main__': |
| main(sys.argv[1:]) |