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

Side by Side Diff: infra/bots/assets/assets.py

Issue 2069543002: Add asset management scripts (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Make executable 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 unified diff | Download patch
OLDNEW
(Empty)
1 #!/usr/bin/env python
2 #
3 # Copyright 2016 Google Inc.
4 #
5 # Use of this source code is governed by a BSD-style license that can be
6 # found in the LICENSE file.
7
8
9 """Tool for managing assets."""
10
11
12 import argparse
13 import asset_utils
14 import os
15 import shutil
16 import subprocess
17 import sys
18
19 FILE_DIR = os.path.dirname(os.path.abspath(__file__))
20 INFRA_BOTS_DIR = os.path.realpath(os.path.join(FILE_DIR, os.pardir))
21
22 sys.path.insert(0, INFRA_BOTS_DIR)
23 import utils
24
25
26 ASSETS_DIR = os.path.join(INFRA_BOTS_DIR, 'assets')
27
28
29 def add(args):
30 """Add a new asset."""
31 # Ensure that the asset does not already exist.
32 asset_dir = os.path.join(ASSETS_DIR, args.asset_name)
33 if os.path.isdir(asset_dir):
34 raise Exception('Asset %s already exists!' % args.asset_name)
35
36 # Create upload and download scripts for the asset.
37 os.mkdir(asset_dir)
38 def copy_script(script):
39 src = os.path.join(ASSETS_DIR, 'scripts', script)
40 dst = os.path.join(asset_dir, script)
41 shutil.copyfile(src, dst)
42 subprocess.check_call([utils.GIT, 'add', dst])
43
44 for script in ('download.py', 'upload.py'):
45 copy_script(script)
46 resp = raw_input('Add script to automate creation of this asset? (y/n) ')
47 if resp == 'y':
48 copy_script('create.py')
49 copy_script('create_and_upload.py')
50
51
52 def remove(args):
53 """Remove an asset."""
54 # Ensure that the asset exists.
55 asset_dir = os.path.join(ASSETS_DIR, args.asset_name)
56 if not os.path.isdir(asset_dir):
57 raise Exception('Asset %s does not exist!' % args.asset_name)
58
59 # Remove the asset.
60 subprocess.check_call([utils.GIT, 'rm', '-rf', asset_dir])
61
62 # We *could* remove all uploaded versions of the asset in Google Storage but
63 # we choose not to be that destructive.
64
65
66 def download(args):
67 """Download the current version of an asset."""
68 asset = asset_utils.Asset(
69 args.asset_name, asset_utils.DEFAULT_GS_BUCKET, gsutil=args.gsutil)
70 asset.download_current_version(args.target_dir)
71
72
73 def upload(args):
74 """Upload a new version of the asset."""
75 asset = asset_utils.Asset(
76 args.asset_name, asset_utils.DEFAULT_GS_BUCKET, gsutil=args.gsutil)
77 asset.upload_new_version(args.target_dir, commit=args.commit)
78
79
80 def main(argv):
81 parser = argparse.ArgumentParser(description='Tool for managing assets.')
82 subs = parser.add_subparsers(help='Commands:')
83
84 prs_add = subs.add_parser('add', help='Add a new asset.')
85 prs_add.set_defaults(func=add)
86 prs_add.add_argument('asset_name', help='Name of the asset.')
87
88 prs_remove = subs.add_parser('remove', help='Remove an asset.')
89 prs_remove.set_defaults(func=remove)
90 prs_remove.add_argument('asset_name', help='Name of the asset.')
91
92 prs_download = subs.add_parser(
93 'download', help='Download the current version of an asset.')
94 prs_download.set_defaults(func=download)
95 prs_download.add_argument('asset_name', help='Name of the asset.')
96 prs_download.add_argument('--target_dir', '-t', required=True)
97 prs_download.add_argument('--gsutil')
98
99 prs_upload = subs.add_parser(
100 'upload', help='Upload a new version of an asset.')
101 prs_upload.set_defaults(func=upload)
102 prs_upload.add_argument('asset_name', help='Name of the asset.')
103 prs_upload.add_argument('--target_dir', '-t', required=True)
104 prs_upload.add_argument('--gsutil')
105 prs_upload.add_argument('--commit', action='store_true')
106
107 args = parser.parse_args(argv)
108 args.func(args)
109
110
111 if __name__ == '__main__':
112 main(sys.argv[1:])
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698