include <limits> for std::numeric_limits
[chromium-blink-merge.git] / build / symlink.py
blobaade2f865c7a18993dcf58d5aa68ea74464741fa
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.
6 """Make a symlink and optionally touch a file (to handle dependencies)."""
9 import errno
10 import optparse
11 import os.path
12 import sys
15 def Main(argv):
16 parser = optparse.OptionParser()
17 parser.add_option('-f', '--force', action='store_true')
18 parser.add_option('--touch')
20 options, args = parser.parse_args(argv[1:])
21 if len(args) < 2:
22 parser.error('at least two arguments required.')
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
38 if options.touch:
39 with open(options.touch, 'w') as f:
40 pass
43 if __name__ == '__main__':
44 sys.exit(Main(sys.argv))