summaryrefslogtreecommitdiffstats
path: root/Demo/scripts/mkrcs.py
diff options
context:
space:
mode:
Diffstat (limited to 'Demo/scripts/mkrcs.py')
-rwxr-xr-xDemo/scripts/mkrcs.py61
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()