Merge libdo.py and log.py into helpers.py.

This commit is contained in:
Avery Pennarun 2010-11-13 00:53:55 -08:00
commit fc27b19108
5 changed files with 66 additions and 73 deletions

View file

@ -1,4 +1,5 @@
import sys, os, errno
import vars
def atoi(v):
@ -39,3 +40,49 @@ def mkdirp(d, mode=None):
raise
def _log(s):
sys.stdout.flush()
sys.stderr.write(s)
sys.stderr.flush()
def _clog(s):
_log('\x1b[32mredo: %s\x1b[1m%s\x1b[m' % (vars.DEPTH, s))
def _bwlog(s):
_log('redo: %s%s' % (vars.DEPTH, s))
if os.isatty(2):
log = _clog
else:
log = _bwlog
def debug(s):
if vars.DEBUG:
_log('redo: %s%s' % (vars.DEPTH, s))
def relpath(t, base):
t = os.path.abspath(t)
tparts = t.split('/')
bparts = base.split('/')
for tp,bp in zip(tparts,bparts):
if tp != bp:
break
tparts.pop(0)
bparts.pop(0)
while bparts:
tparts.insert(0, '..')
bparts.pop(0)
return '/'.join(tparts)
def sname(typ, t):
# FIXME: t.replace(...) is non-reversible and non-unique here!
tnew = relpath(t, vars.BASE)
#log('sname: (%r) %r -> %r\n' % (vars.BASE, t, tnew))
return vars.BASE + ('/.redo/%s^%s' % (typ, tnew.replace('/', '^')))
def add_dep(t, mode, dep):
open(sname('dep', t), 'a').write('%s %s\n' % (mode, dep))

View file

@ -1,27 +0,0 @@
import sys, os
import vars
def relpath(t, base):
t = os.path.abspath(t)
tparts = t.split('/')
bparts = base.split('/')
for tp,bp in zip(tparts,bparts):
if tp != bp:
break
tparts.pop(0)
bparts.pop(0)
while bparts:
tparts.insert(0, '..')
bparts.pop(0)
return '/'.join(tparts)
def sname(typ, t):
# FIXME: t.replace(...) is non-reversible and non-unique here!
tnew = relpath(t, vars.BASE)
#log('sname: (%r) %r -> %r\n' % (vars.BASE, t, tnew))
return vars.BASE + ('/.redo/%s^%s' % (typ, tnew.replace('/', '^')))
def add_dep(t, mode, dep):
open(sname('dep', t), 'a').write('%s %s\n' % (mode, dep))

23
log.py
View file

@ -1,23 +0,0 @@
import sys, os
import vars
def _log(s):
sys.stdout.flush()
sys.stderr.write(s)
sys.stderr.flush()
def _clog(s):
_log('\x1b[32mredo: %s\x1b[1m%s\x1b[m' % (vars.DEPTH, s))
def _bwlog(s):
_log('redo: %s%s' % (vars.DEPTH, s))
if os.isatty(2):
log = _clog
else:
log = _bwlog
def debug(s):
if vars.DEBUG:
_log('redo: %s%s' % (vars.DEPTH, s))

View file

@ -2,8 +2,6 @@
import sys, os
import vars
from helpers import *
from log import *
from libdo import *
def _dirty_deps(t, depth):

40
redo.py
View file

@ -1,7 +1,6 @@
#!/usr/bin/python
import sys, os, subprocess
import options
from helpers import *
optspec = """
redo [targets...]
@ -14,6 +13,25 @@ o = options.Options('redo', optspec)
targets = extra or ['it']
if opt.debug:
os.environ['REDO_DEBUG'] = '1'
if opt.verbose:
os.environ['REDO_VERBOSE'] = '1'
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 = '%s/.redo' % '/'.join(bsplit[:i])
if os.path.exists(newbase):
base = newbase
break
os.environ['REDO_BASE'] = base
import vars
from helpers import *
def find_do_file(t):
dofile = '%s.do' % t
@ -87,26 +105,6 @@ def build(t):
raise Exception('non-zero return code building %r' % t)
if opt.debug:
os.environ['REDO_DEBUG'] = '1'
if opt.verbose:
os.environ['REDO_VERBOSE'] = '1'
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 = '%s/.redo' % '/'.join(bsplit[:i])
if os.path.exists(newbase):
base = newbase
break
os.environ['REDO_BASE'] = base
import vars
from log import *
from libdo import *
if not vars.DEPTH:
# toplevel call to redo
exenames = [os.path.abspath(sys.argv[0]), os.path.realpath(sys.argv[0])]