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