Ejemplo n.º 1
0
from bob import Rule as rule
#import bob
from sh import touch

rule('tests',None,func=['mkdir','{targets}'])

r1 = rule('tests/test1.txt',None,order_only='tests')
r2 = rule('tests/test2.txt',None)
r3 = rule('tests/test3.txt',None)

@rule(['tests/foo.txt','tests/foo2.txt'],'tests/test*.txt',shared=True)
@rule('tests/ex%.txt','tests/test%.txt')
def mytouch(self):
    touch(self.targets)

for r in r1,r2,r3:
    r.func = mytouch

rule('All',['tests','tests/foo2.txt','tests/ex2.txt'],PHONY=True)

if __name__=="__main__":
    rule.main() #supplies a simple commandline interface

# Can alternatively easily run buildbit from within script. 
if False: #__name__=="__main__":
    buildseq = rule.calc_build('All')
    print buildseq
    response=raw_input("run build? [(y)es/(n)o]")
    if response in ('y','yes'):
        rule.build(buildseq)
Ejemplo n.º 2
0
#make test directory
rule('tests/C',[]).func = makedir

#make test prerequisites
@rule('tests/C/*.txt',None,order_only='tests/C')
def source(self):
    touch(self.targets)

#test PatternSharedRule
@rule(['%.c','%.o'],'%.txt',shared=True)
def compile(self):
    touch([pjoin(self.extratargetpath,self.stems[0]+'.o'),
           pjoin(self.extratargetpath,self.stems[0]+'.c')])
    #self.extratargetpath - pattern rules can be applied to subdirs too, this 
    #                       attribute might sometimes be useful.
    

#This PatternRule instance should be shadowed by the PatternSharedRule
@rule(['%.c','%.o'],'%.txt',shared=False)
def compile(self):
    print "shouldn't run"
    touch(self.targets)

rule('All',PHONY=True,reqs=['tests/C/1.c','tests/C/1.o','tests/C/2.c'])



if __name__=="__main__":
    rule.main()