blob: b7d4b529e951c0690c23d008447e089e930f5dfe [file] [log] [blame]
#!/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.
import os
import sys
import argparse
TELEMETRY_DIR = os.path.join(os.path.abspath(os.path.dirname(__file__)), '..')
sys.path.insert(1, TELEMETRY_DIR)
from telemetry.internal.util import binary_manager
from dependency_manager import base_config
def AddBinaryDepdendency(binary_local_path, dependency_name, platform,
download_path):
config = base_config.BaseConfig(
binary_manager.TELEMETRY_PROJECT_CONFIG, writable=True)
if not dependency_name in config:
print ('%s is a new dependency. '
'Do you want to add it to Telemetry binary dependencies?')
answer = raw_input("Enter 'y' to answer yes: ")
if answer == 'y':
config.AddNewDependency(
dependency_name,
binary_manager.TELEMETRY_BINARY_BASE_CS_FOLDER,
binary_manager.TELEMETRY_BINARY_CS_BUCKET)
else:
print 'Did not update binary for %s' % dependency_name
return
if not download_path:
download_path = '%s/%s' % (
binary_manager.PLATFORMS_TO_DOWNLOAD_FOLDER_MAP[platform],
os.path.basename(binary_local_path))
if platform.startswith('win'):
download_path += '.exe'
print "Download path wasn't specified. Using default download path: %s" % (
download_path)
print 'Do you want to continue the binary update job?'
answer = raw_input("Enter 'y' to answer yes: ")
if answer != 'y':
print 'Did not update binary for %s' % dependency_name
return
config.SetDownloadPath(dependency_name, platform,
download_path=download_path)
config.AddCloudStorageDependencyUpdateJob(
dependency_name, platform, binary_local_path, execute_job=False)
config.ExecuteUpdateJobs()
def main(args):
parser = argparse.ArgumentParser(
description='Add binary to Telemetry dependencies to store on cloud'
' storage.')
parser.add_argument('binary_path', type=str,
help='Path to binary to be added to dependencies')
parser.add_argument('dependency_name', type=str, help='Dependency name')
parser.add_argument('platform',
choices=binary_manager.SUPPORTED_DEP_PLATFORMS,
help='Platform which this binary dep belong to')
parser.add_argument('--download-path',
help=(
'Download path of the binary dependency (relative to '
'telemetry/telemetry/internal/ directory)'))
options = parser.parse_args(args)
binary_local_path = os.path.abspath(options.binary_path)
if not os.path.exists(binary_local_path):
raise ValueError('Path %s does not exist' % binary_local_path)
AddBinaryDepdendency(
binary_local_path, options.dependency_name, options.platform,
options.download_path)
if __name__ == "__main__":
main(sys.argv[1:])