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