mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-05-23 22:02:27 +00:00
python-3.6.zip added from Github
README.cosmo contains the necessary links.
This commit is contained in:
parent
75fc601ff5
commit
0c4c56ff39
4219 changed files with 1968626 additions and 0 deletions
80
third_party/python/Tools/scripts/linktree.py
vendored
Executable file
80
third_party/python/Tools/scripts/linktree.py
vendored
Executable file
|
@ -0,0 +1,80 @@
|
|||
#! /usr/bin/env python3
|
||||
|
||||
# linktree
|
||||
#
|
||||
# Make a copy of a directory tree with symbolic links to all files in the
|
||||
# original tree.
|
||||
# All symbolic links go to a special symbolic link at the top, so you
|
||||
# can easily fix things if the original source tree moves.
|
||||
# See also "mkreal".
|
||||
#
|
||||
# usage: mklinks oldtree newtree
|
||||
|
||||
import sys, os
|
||||
|
||||
LINK = '.LINK' # Name of special symlink at the top.
|
||||
|
||||
debug = 0
|
||||
|
||||
def main():
|
||||
if not 3 <= len(sys.argv) <= 4:
|
||||
print('usage:', sys.argv[0], 'oldtree newtree [linkto]')
|
||||
return 2
|
||||
oldtree, newtree = sys.argv[1], sys.argv[2]
|
||||
if len(sys.argv) > 3:
|
||||
link = sys.argv[3]
|
||||
link_may_fail = 1
|
||||
else:
|
||||
link = LINK
|
||||
link_may_fail = 0
|
||||
if not os.path.isdir(oldtree):
|
||||
print(oldtree + ': not a directory')
|
||||
return 1
|
||||
try:
|
||||
os.mkdir(newtree, 0o777)
|
||||
except OSError as msg:
|
||||
print(newtree + ': cannot mkdir:', msg)
|
||||
return 1
|
||||
linkname = os.path.join(newtree, link)
|
||||
try:
|
||||
os.symlink(os.path.join(os.pardir, oldtree), linkname)
|
||||
except OSError as msg:
|
||||
if not link_may_fail:
|
||||
print(linkname + ': cannot symlink:', msg)
|
||||
return 1
|
||||
else:
|
||||
print(linkname + ': warning: cannot symlink:', msg)
|
||||
linknames(oldtree, newtree, link)
|
||||
return 0
|
||||
|
||||
def linknames(old, new, link):
|
||||
if debug: print('linknames', (old, new, link))
|
||||
try:
|
||||
names = os.listdir(old)
|
||||
except OSError as msg:
|
||||
print(old + ': warning: cannot listdir:', msg)
|
||||
return
|
||||
for name in names:
|
||||
if name not in (os.curdir, os.pardir):
|
||||
oldname = os.path.join(old, name)
|
||||
linkname = os.path.join(link, name)
|
||||
newname = os.path.join(new, name)
|
||||
if debug > 1: print(oldname, newname, linkname)
|
||||
if os.path.isdir(oldname) and \
|
||||
not os.path.islink(oldname):
|
||||
try:
|
||||
os.mkdir(newname, 0o777)
|
||||
ok = 1
|
||||
except:
|
||||
print(newname + \
|
||||
': warning: cannot mkdir:', msg)
|
||||
ok = 0
|
||||
if ok:
|
||||
linkname = os.path.join(os.pardir,
|
||||
linkname)
|
||||
linknames(oldname, newname, linkname)
|
||||
else:
|
||||
os.symlink(linkname, newname)
|
||||
|
||||
if __name__ == '__main__':
|
||||
sys.exit(main())
|
Loading…
Add table
Add a link
Reference in a new issue