naiveproxy/tools/binary_size/libsupersize/gsutil.py
2018-12-09 21:59:24 -05:00

65 lines
1.7 KiB
Python
Executable File

#!/usr/bin/env python
# Copyright 2018 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Update the Google Cloud Storage bucket hosting the Super Size UI."""
import argparse
import os
import subprocess
import uuid
GS_BUCKET = 'gs://chrome-supersize'
def _SyncStatic():
"""Upload static files from the static directory."""
static_files = os.path.join(os.path.dirname(__file__), 'static')
subprocess.check_call([
'gsutil.py', '-m', 'rsync', '-r', static_files, GS_BUCKET
])
def _SyncTemplates():
"""Generate and upload the templates/sw.js file."""
template_file = os.path.join(os.path.dirname(__file__), 'templates', 'sw.js')
cache_hash = uuid.uuid4().hex
p = subprocess.Popen([
'gsutil.py', 'cp', '-p', '-', '%s/sw.js' % GS_BUCKET
], stdin=subprocess.PIPE)
with open(template_file, 'r') as in_file:
p.communicate(in_file.read().replace('{{cache_hash}}', cache_hash))
def _SetMetaAndPermissions():
# sw.js has the wrong type due to being created from a stream
subprocess.check_call([
'gsutil.py', 'setmeta', '-h', 'Content-Type:application/javascript',
'%s/sw.js' % GS_BUCKET
])
# All files in the root of the bucket are user readable
subprocess.check_call([
'gsutil.py', '-m', 'acl', 'ch', '-u', 'AllUsers:R', '%s/*' % GS_BUCKET
])
def main():
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument('--sync', action='store_true', required=True,
help='Sync static and template files to GCS.')
args = parser.parse_args()
if args.sync:
_SyncStatic()
_SyncTemplates()
_SetMetaAndPermissions()
if __name__ == '__main__':
main()