1*c8dee2aaSAndroid Build Coastguard Worker#!/usr/bin/env python 2*c8dee2aaSAndroid Build Coastguard Worker 3*c8dee2aaSAndroid Build Coastguard Worker# Copyright 2019 Google LLC. All rights reserved. 4*c8dee2aaSAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be 5*c8dee2aaSAndroid Build Coastguard Worker# found in the LICENSE file. 6*c8dee2aaSAndroid Build Coastguard Worker 7*c8dee2aaSAndroid Build Coastguard Worker""" 8*c8dee2aaSAndroid Build Coastguard Worker Generate a Fuchsia repo capable of serving Fuchsia archives over the 9*c8dee2aaSAndroid Build Coastguard Worker network. 10*c8dee2aaSAndroid Build Coastguard Worker""" 11*c8dee2aaSAndroid Build Coastguard Worker 12*c8dee2aaSAndroid Build Coastguard Workerimport argparse 13*c8dee2aaSAndroid Build Coastguard Workerimport os 14*c8dee2aaSAndroid Build Coastguard Workerimport subprocess 15*c8dee2aaSAndroid Build Coastguard Workerimport sys 16*c8dee2aaSAndroid Build Coastguard Worker 17*c8dee2aaSAndroid Build Coastguard Workerdef main(): 18*c8dee2aaSAndroid Build Coastguard Worker parser = argparse.ArgumentParser() 19*c8dee2aaSAndroid Build Coastguard Worker 20*c8dee2aaSAndroid Build Coastguard Worker parser.add_argument('--pm-bin', dest='pm_bin', action='store', required=True) 21*c8dee2aaSAndroid Build Coastguard Worker parser.add_argument( 22*c8dee2aaSAndroid Build Coastguard Worker '--repo-dir', dest='repo_dir', action='store', required=True) 23*c8dee2aaSAndroid Build Coastguard Worker parser.add_argument( 24*c8dee2aaSAndroid Build Coastguard Worker '--archive', dest='archives', action='append', required=True) 25*c8dee2aaSAndroid Build Coastguard Worker 26*c8dee2aaSAndroid Build Coastguard Worker args = parser.parse_args() 27*c8dee2aaSAndroid Build Coastguard Worker 28*c8dee2aaSAndroid Build Coastguard Worker assert os.path.exists(args.pm_bin) 29*c8dee2aaSAndroid Build Coastguard Worker 30*c8dee2aaSAndroid Build Coastguard Worker if not os.path.exists(args.repo_dir): 31*c8dee2aaSAndroid Build Coastguard Worker pm_newrepo_command = [args.pm_bin, 'newrepo', '-repo', args.repo_dir] 32*c8dee2aaSAndroid Build Coastguard Worker subprocess.check_call(pm_newrepo_command) 33*c8dee2aaSAndroid Build Coastguard Worker 34*c8dee2aaSAndroid Build Coastguard Worker pm_publish_command = [ 35*c8dee2aaSAndroid Build Coastguard Worker args.pm_bin, 36*c8dee2aaSAndroid Build Coastguard Worker 'publish', 37*c8dee2aaSAndroid Build Coastguard Worker '-C', # Remove all previous registrations. 38*c8dee2aaSAndroid Build Coastguard Worker '-a', # Publish archives from an archive (mode). 39*c8dee2aaSAndroid Build Coastguard Worker '-repo', 40*c8dee2aaSAndroid Build Coastguard Worker args.repo_dir 41*c8dee2aaSAndroid Build Coastguard Worker ] 42*c8dee2aaSAndroid Build Coastguard Worker 43*c8dee2aaSAndroid Build Coastguard Worker for archive in args.archives: 44*c8dee2aaSAndroid Build Coastguard Worker pm_publish_command.append('-f') 45*c8dee2aaSAndroid Build Coastguard Worker pm_publish_command.append(archive) 46*c8dee2aaSAndroid Build Coastguard Worker 47*c8dee2aaSAndroid Build Coastguard Worker print "PM Publish: " 48*c8dee2aaSAndroid Build Coastguard Worker print pm_publish_command 49*c8dee2aaSAndroid Build Coastguard Worker subprocess.check_call(pm_publish_command) 50*c8dee2aaSAndroid Build Coastguard Worker 51*c8dee2aaSAndroid Build Coastguard Worker return 0 52*c8dee2aaSAndroid Build Coastguard Worker 53*c8dee2aaSAndroid Build Coastguard Worker 54*c8dee2aaSAndroid Build Coastguard Workerif __name__ == '__main__': 55*c8dee2aaSAndroid Build Coastguard Worker sys.exit(main()) 56