2010-12-11 19:08:53 -08:00
|
|
|
import sys, os
|
|
|
|
|
|
|
|
|
|
def init(targets):
|
|
|
|
|
if not os.environ.get('REDO'):
|
|
|
|
|
# toplevel call to redo
|
|
|
|
|
exenames = [os.path.abspath(sys.argv[0]),
|
|
|
|
|
os.path.realpath(sys.argv[0])]
|
|
|
|
|
dirnames = [os.path.dirname(p) for p in exenames]
|
2010-12-21 04:19:50 -08:00
|
|
|
trynames = ([os.path.abspath(p+'/../lib/redo') for p in dirnames] +
|
|
|
|
|
[p+'/redo-sh' for p in dirnames] +
|
|
|
|
|
dirnames)
|
|
|
|
|
seen = {}
|
|
|
|
|
dirs = []
|
|
|
|
|
for k in trynames:
|
|
|
|
|
if not seen.get(k) and os.path.exists('%s/.' % k):
|
|
|
|
|
seen[k] = 1
|
|
|
|
|
dirs.append(k)
|
|
|
|
|
os.environ['PATH'] = ':'.join(dirs) + ':' + os.environ['PATH']
|
2010-12-11 19:08:53 -08:00
|
|
|
os.environ['REDO'] = os.path.abspath(sys.argv[0])
|
|
|
|
|
|
|
|
|
|
if not os.environ.get('REDO_BASE'):
|
|
|
|
|
base = os.path.commonprefix([os.path.abspath(os.path.dirname(t))
|
|
|
|
|
for t in targets] + [os.getcwd()])
|
|
|
|
|
bsplit = base.split('/')
|
|
|
|
|
for i in range(len(bsplit)-1, 0, -1):
|
|
|
|
|
newbase = '/'.join(bsplit[:i])
|
|
|
|
|
if os.path.exists(newbase + '/.redo'):
|
|
|
|
|
base = newbase
|
|
|
|
|
break
|
|
|
|
|
os.environ['REDO_BASE'] = base
|
|
|
|
|
os.environ['REDO_STARTDIR'] = os.getcwd()
|
|
|
|
|
|
|
|
|
|
import state
|
|
|
|
|
state.init()
|