Mercurial > cpython-lru_cache-weakref
annotate Tools/scripts/linktree.py @ 60174:255a401c19b0
(partially)
Merged revisions 79534,79537,79539,79558,79606 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r79534 | florent.xicluna | 2010-03-31 23:21:54 +0200 (mer, 31 mar 2010) | 2 lines
Fix test for xml.etree when using a non-ascii path. And use check_warnings instead of catch_warnings.
........
r79537 | florent.xicluna | 2010-03-31 23:40:32 +0200 (mer, 31 mar 2010) | 2 lines
Fix typo
........
r79539 | florent.xicluna | 2010-04-01 00:01:03 +0200 (jeu, 01 avr 2010) | 2 lines
Replace catch_warnings with check_warnings when it makes sense. Use assertRaises context manager to simplify some tests.
........
r79558 | florent.xicluna | 2010-04-01 20:17:09 +0200 (jeu, 01 avr 2010) | 2 lines
#7092: Fix some -3 warnings, and fix Lib/platform.py when the path contains a double-quote.
........
r79606 | florent.xicluna | 2010-04-02 19:26:42 +0200 (ven, 02 avr 2010) | 2 lines
Backport some robotparser test and skip the test if the external resource is not available.
........
| author | Florent Xicluna <florent.xicluna@gmail.com> |
|---|---|
| date | Fri, 02 Apr 2010 18:52:12 +0000 |
| parents | fcfe324663a6 |
| children | 6cfe2982de42 |
| rev | line source |
|---|---|
|
59522
fcfe324663a6
convert shebang lines: python -> python3
Benjamin Peterson <benjamin@python.org>
parents:
42427
diff
changeset
|
1 #! /usr/bin/env python3 |
| 687 | 2 |
| 3 # linktree | |
| 4 # | |
| 5 # Make a copy of a directory tree with symbolic links to all files in the | |
| 6 # original tree. | |
| 7 # All symbolic links go to a special symbolic link at the top, so you | |
| 8 # can easily fix things if the original source tree moves. | |
| 9 # See also "mkreal". | |
| 10 # | |
| 11 # usage: mklinks oldtree newtree | |
| 12 | |
| 755 | 13 import sys, os |
| 687 | 14 |
| 15 LINK = '.LINK' # Name of special symlink at the top. | |
| 16 | |
| 17 debug = 0 | |
| 18 | |
| 19 def main(): | |
|
15930
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
7735
diff
changeset
|
20 if not 3 <= len(sys.argv) <= 4: |
|
42427
46625e6122e9
Convert print statements to function calls in Tools/.
Collin Winter <collinw@gmail.com>
parents:
42084
diff
changeset
|
21 print('usage:', sys.argv[0], 'oldtree newtree [linkto]') |
|
15930
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
7735
diff
changeset
|
22 return 2 |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
7735
diff
changeset
|
23 oldtree, newtree = sys.argv[1], sys.argv[2] |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
7735
diff
changeset
|
24 if len(sys.argv) > 3: |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
7735
diff
changeset
|
25 link = sys.argv[3] |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
7735
diff
changeset
|
26 link_may_fail = 1 |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
7735
diff
changeset
|
27 else: |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
7735
diff
changeset
|
28 link = LINK |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
7735
diff
changeset
|
29 link_may_fail = 0 |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
7735
diff
changeset
|
30 if not os.path.isdir(oldtree): |
|
42427
46625e6122e9
Convert print statements to function calls in Tools/.
Collin Winter <collinw@gmail.com>
parents:
42084
diff
changeset
|
31 print(oldtree + ': not a directory') |
|
15930
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
7735
diff
changeset
|
32 return 1 |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
7735
diff
changeset
|
33 try: |
|
42084
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40587
diff
changeset
|
34 os.mkdir(newtree, 0o777) |
|
40587
6b18a095c2e7
SF patch 1631942 by Collin Winter:
Guido van Rossum <guido@python.org>
parents:
33074
diff
changeset
|
35 except os.error as msg: |
|
42427
46625e6122e9
Convert print statements to function calls in Tools/.
Collin Winter <collinw@gmail.com>
parents:
42084
diff
changeset
|
36 print(newtree + ': cannot mkdir:', msg) |
|
15930
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
7735
diff
changeset
|
37 return 1 |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
7735
diff
changeset
|
38 linkname = os.path.join(newtree, link) |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
7735
diff
changeset
|
39 try: |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
7735
diff
changeset
|
40 os.symlink(os.path.join(os.pardir, oldtree), linkname) |
|
40587
6b18a095c2e7
SF patch 1631942 by Collin Winter:
Guido van Rossum <guido@python.org>
parents:
33074
diff
changeset
|
41 except os.error as msg: |
|
15930
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
7735
diff
changeset
|
42 if not link_may_fail: |
|
42427
46625e6122e9
Convert print statements to function calls in Tools/.
Collin Winter <collinw@gmail.com>
parents:
42084
diff
changeset
|
43 print(linkname + ': cannot symlink:', msg) |
|
15930
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
7735
diff
changeset
|
44 return 1 |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
7735
diff
changeset
|
45 else: |
|
42427
46625e6122e9
Convert print statements to function calls in Tools/.
Collin Winter <collinw@gmail.com>
parents:
42084
diff
changeset
|
46 print(linkname + ': warning: cannot symlink:', msg) |
|
15930
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
7735
diff
changeset
|
47 linknames(oldtree, newtree, link) |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
7735
diff
changeset
|
48 return 0 |
| 687 | 49 |
| 50 def linknames(old, new, link): | |
|
42427
46625e6122e9
Convert print statements to function calls in Tools/.
Collin Winter <collinw@gmail.com>
parents:
42084
diff
changeset
|
51 if debug: print('linknames', (old, new, link)) |
|
15930
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
7735
diff
changeset
|
52 try: |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
7735
diff
changeset
|
53 names = os.listdir(old) |
|
40587
6b18a095c2e7
SF patch 1631942 by Collin Winter:
Guido van Rossum <guido@python.org>
parents:
33074
diff
changeset
|
54 except os.error as msg: |
|
42427
46625e6122e9
Convert print statements to function calls in Tools/.
Collin Winter <collinw@gmail.com>
parents:
42084
diff
changeset
|
55 print(old + ': warning: cannot listdir:', msg) |
|
15930
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
7735
diff
changeset
|
56 return |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
7735
diff
changeset
|
57 for name in names: |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
7735
diff
changeset
|
58 if name not in (os.curdir, os.pardir): |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
7735
diff
changeset
|
59 oldname = os.path.join(old, name) |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
7735
diff
changeset
|
60 linkname = os.path.join(link, name) |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
7735
diff
changeset
|
61 newname = os.path.join(new, name) |
|
42427
46625e6122e9
Convert print statements to function calls in Tools/.
Collin Winter <collinw@gmail.com>
parents:
42084
diff
changeset
|
62 if debug > 1: print(oldname, newname, linkname) |
|
15930
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
7735
diff
changeset
|
63 if os.path.isdir(oldname) and \ |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
7735
diff
changeset
|
64 not os.path.islink(oldname): |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
7735
diff
changeset
|
65 try: |
|
42084
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40587
diff
changeset
|
66 os.mkdir(newname, 0o777) |
|
15930
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
7735
diff
changeset
|
67 ok = 1 |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
7735
diff
changeset
|
68 except: |
|
42427
46625e6122e9
Convert print statements to function calls in Tools/.
Collin Winter <collinw@gmail.com>
parents:
42084
diff
changeset
|
69 print(newname + \ |
|
46625e6122e9
Convert print statements to function calls in Tools/.
Collin Winter <collinw@gmail.com>
parents:
42084
diff
changeset
|
70 ': warning: cannot mkdir:', msg) |
|
15930
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
7735
diff
changeset
|
71 ok = 0 |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
7735
diff
changeset
|
72 if ok: |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
7735
diff
changeset
|
73 linkname = os.path.join(os.pardir, |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
7735
diff
changeset
|
74 linkname) |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
7735
diff
changeset
|
75 linknames(oldname, newname, linkname) |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
7735
diff
changeset
|
76 else: |
|
14a27acc755a
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
7735
diff
changeset
|
77 os.symlink(linkname, newname) |
| 687 | 78 |
|
33074
981fff7363b9
[Patch #1005491 ] use __name__ == '__main__' in scripts
Andrew M. Kuchling <amk@amk.ca>
parents:
15930
diff
changeset
|
79 if __name__ == '__main__': |
|
981fff7363b9
[Patch #1005491 ] use __name__ == '__main__' in scripts
Andrew M. Kuchling <amk@amk.ca>
parents:
15930
diff
changeset
|
80 sys.exit(main()) |
