1 #!/usr/bin/env python 2 # Copyright (c) 2013 The Chromium Authors. All rights reserved. 3 # Use of this source code is governed by a BSD-style license that can be 4 # found in the LICENSE file. 5 6 """Make a symlink and optionally touch a file (to handle dependencies).""" 7 8 9 import errno 10 import optparse 11 import os.path 12 import sys 13 14 15 def Main(argv): 16 parser = optparse.OptionParser() 17 parser.add_option('-f', '--force', action='store_true') 18 parser.add_option('--touch') 19 20 options, args = parser.parse_args(argv[1:]) 21 if len(args) < 2: 22 parser.error('at least two arguments required.') 23 24 target = args[-1] 25 sources = args[:-1] 26 for s in sources: 27 t = os.path.join(target, os.path.basename(s)) 28 try: 29 os.symlink(s, t) 30 except OSError, e: 31 if e.errno == errno.EEXIST and options.force: 32 os.remove(t) 33 os.symlink(s, t) 34 else: 35 raise 36 37 38 if options.touch: 39 with open(options.touch, 'w') as f: 40 pass 41 42 43 if __name__ == '__main__': 44 sys.exit(Main(sys.argv)) 45