diff options
Diffstat (limited to 'Demo/scripts/mkrcs.py')
-rwxr-xr-x | Demo/scripts/mkrcs.py | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/Demo/scripts/mkrcs.py b/Demo/scripts/mkrcs.py new file mode 100755 index 0000000..dc8dffb --- /dev/null +++ b/Demo/scripts/mkrcs.py @@ -0,0 +1,61 @@ +#! /ufs/guido/bin/sgi/python +#! /usr/local/python + +# A rather specialized script to make sure that a symbolic link named +# RCS exists pointing to a real RCS directory in a parallel tree +# referenced as RCStree in an ancestor directory. +# (I use this because I like my RCS files to reside on a physically +# different machine). + +import os + +def main(): + rcstree = 'RCStree' + rcs = 'RCS' + if os.path.islink(rcs): + print `rcs`, 'is a symlink to', `os.readlink(rcs)` + return + if os.path.isdir(rcs): + print `rcs`, 'is an ordinary directory' + return + if os.path.exists(rcs): + print `rcs`, 'is a file?!?!' + return + # + p = os.getcwd() + up = '' + down = '' + # Invariants: + # (1) join(p, down) is the current directory + # (2) up is the same directory as p + # Ergo: + # (3) join(up, down) is the current directory + #print 'p =', `p` + while not os.path.isdir(os.path.join(p, rcstree)): + head, tail = os.path.split(p) + #print 'head =', `head`, '; tail =', `tail` + if not tail: + print 'Sorry, no ancestor dir contains', `rcstree` + return + p = head + up = os.path.join(os.pardir, up) + down = os.path.join(tail, down) + #print 'p =', `p`, '; up =', `up`, '; down =', `down` + there = os.path.join(up, rcstree) + there = os.path.join(there, down) + there = os.path.join(there, rcs) + if os.path.isdir(there): + print `there`, 'already exists' + else: + print 'making', `there` + makedirs(there) + print 'making symlink', `rcs`, '->', `there` + os.symlink(there, rcs) + +def makedirs(p): + if not os.path.isdir(p): + head, tail = os.path.split(p) + makedirs(head) + os.mkdir(p, 0777) + +main() |