File: mkrcs.py

package info (click to toggle)
python2.1 2.1.3dfsg-1sarge1
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 38,028 kB
  • ctags: 64,228
  • sloc: python: 186,023; ansic: 184,754; xml: 43,435; sh: 12,381; makefile: 3,523; perl: 3,108; lisp: 2,460; cpp: 106; sed: 2
file content (60 lines) | stat: -rwxr-xr-x 1,548 bytes parent folder | download | duplicates (9)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#! /usr/bin/env 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()