Home | History | Annotate | Download | only in build
      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