Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(37)

Unified Diff: infra/bots/assets/assets.py

Issue 2069543002: Add asset management scripts (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Add FYI prints for asset creation Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: infra/bots/assets/assets.py
diff --git a/infra/bots/assets/assets.py b/infra/bots/assets/assets.py
new file mode 100755
index 0000000000000000000000000000000000000000..067a2f34c1f697c6ca75d6519b24602eeb2a890b
--- /dev/null
+++ b/infra/bots/assets/assets.py
@@ -0,0 +1,116 @@
+#!/usr/bin/env python
stephana 2016/06/15 13:57:30 Why not merge asset_utils in here? It looks like i
+#
+# 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
+
+
+ASSETS_DIR = os.path.join(INFRA_BOTS_DIR, 'assets')
+
+
+def add(args):
+ """Add a new asset."""
+ # Ensure that the asset does not already exist.
+ asset_dir = os.path.join(ASSETS_DIR, args.asset_name)
+ if os.path.isdir(asset_dir):
+ raise Exception('Asset %s already exists!' % args.asset_name)
+
+ # Create upload and download scripts for the asset.
+ print 'Creating asset in %s' % asset_dir
+ os.mkdir(asset_dir)
+ def copy_script(script):
+ src = os.path.join(ASSETS_DIR, 'scripts', script)
+ dst = os.path.join(asset_dir, script)
+ print 'Creating %s' % dst
+ shutil.copyfile(src, dst)
+ subprocess.check_call([utils.GIT, 'add', dst])
+
+ for script in ('download.py', 'upload.py'):
+ copy_script(script)
+ resp = raw_input('Add script to automate creation of this asset? (y/n) ')
+ if resp == 'y':
+ copy_script('create.py')
+ copy_script('create_and_upload.py')
+ print 'You will need to add implementation to the creation script.'
+ print 'Successfully created asset %s.' % args.asset_name
+
+
+def remove(args):
+ """Remove an asset."""
+ # Ensure that the asset exists.
+ asset_dir = os.path.join(ASSETS_DIR, args.asset_name)
+ if not os.path.isdir(asset_dir):
+ raise Exception('Asset %s does not exist!' % args.asset_name)
+
+ # Remove the asset.
+ subprocess.check_call([utils.GIT, 'rm', '-rf', asset_dir])
+
+ # We *could* remove all uploaded versions of the asset in Google Storage but
+ # we choose not to be that destructive.
+
+
+def download(args):
+ """Download the current version of an asset."""
+ asset = asset_utils.Asset(
+ args.asset_name, asset_utils.DEFAULT_GS_BUCKET, gsutil=args.gsutil)
+ asset.download_current_version(args.target_dir)
+
+
+def upload(args):
+ """Upload a new version of the asset."""
+ asset = asset_utils.Asset(
+ args.asset_name, asset_utils.DEFAULT_GS_BUCKET, gsutil=args.gsutil)
+ asset.upload_new_version(args.target_dir, commit=args.commit)
+
+
+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)
+ prs_add.add_argument('asset_name', help='Name of the asset.')
+
+ prs_remove = subs.add_parser('remove', help='Remove an asset.')
+ prs_remove.set_defaults(func=remove)
+ prs_remove.add_argument('asset_name', help='Name of the asset.')
+
+ prs_download = subs.add_parser(
+ 'download', help='Download the current version of an asset.')
+ prs_download.set_defaults(func=download)
+ prs_download.add_argument('asset_name', help='Name of the asset.')
+ prs_download.add_argument('--target_dir', '-t', required=True)
+ prs_download.add_argument('--gsutil')
+
+ prs_upload = subs.add_parser(
+ 'upload', help='Upload a new version of an asset.')
+ prs_upload.set_defaults(func=upload)
+ prs_upload.add_argument('asset_name', help='Name of the asset.')
+ prs_upload.add_argument('--target_dir', '-t', required=True)
+ prs_upload.add_argument('--gsutil')
+ prs_upload.add_argument('--commit', action='store_true')
+
+ args = parser.parse_args(argv)
+ args.func(args)
+
+
+if __name__ == '__main__':
+ main(sys.argv[1:])

Powered by Google App Engine
This is Rietveld 408576698