("email","Enter your email address for changelogs") ]
config={}
- # what to parse in a spec file
- varnames = ["name","version","taglevel"]
- varmatcher=re.compile("%define\s+(\S+)\s+(.*)")
-
svn_magic_line="--This line, and those below, will be ignored--"
def __init__ (self,name,options):
self.options=options
self.moddir="%s/%s/%s"%(os.getenv("HOME"),options.modules,name)
self.trunkdir="%s/trunk"%(self.moddir)
+ # what to parse in a spec file
+ self.varnames = ["name",options.version,options.taglevel]
+ self.varmatcher=re.compile("%define\s+(\S+)\s+(.*)")
+
def run (self,command):
return Command(command,self.options).run()
if self.options.verbose:
print 'Checking for',self.trunkdir
if not os.path.isdir (self.trunkdir):
- self.run_fatal("svn up %s"%self.trunkdir)
+ self.run_fatal("svn up -N %s"%self.trunkdir)
def revert_trunkdir (self):
if self.options.verbose:
self.run_fatal("svn revert -R %s"%self.trunkdir)
def update_trunkdir (self):
+ if self.options.skip_update:
+ return
if self.options.verbose:
print 'Updating',self.trunkdir
self.run_fatal("svn update %s"%self.trunkdir)
result={}
f=open(specfile)
for line in f.readlines():
- if Module.varmatcher.match(line):
- (var,value)=Module.varmatcher.match(line).groups()
- if var in Module.varnames:
+ if self.varmatcher.match(line):
+ (var,value)=self.varmatcher.match(line).groups()
+ if var in self.varnames:
result[var]=value
f.close()
if self.options.verbose:
new=open(newspecfile,"w")
for line in spec.readlines():
- if Module.varmatcher.match(line):
- (var,value)=Module.varmatcher.match(line).groups()
+ if self.varmatcher.match(line):
+ (var,value)=self.varmatcher.match(line).groups()
if var in patch_dict.keys():
new.write('%%define %s %s\n'%(var,patch_dict[var]))
continue
def trunk_url (self):
return "%s/%s/trunk"%(Module.config['svnpath'],self.name)
def tag_name (self, spec_dict):
- return "%s-%s.%s"%(spec_dict['name'],spec_dict['version'],spec_dict['taglevel'])
+ return "%s-%s-%s"%(spec_dict['name'],spec_dict[self.options.version],spec_dict[self.options.taglevel])
def tag_url (self, spec_dict):
return "%s/%s/tags/%s"%(Module.config['svnpath'],self.name,self.tag_name(spec_dict))
self.init_trunkdir()
self.revert_trunkdir()
self.update_trunkdir()
- for (key,message) in Module.configKeys:
- print key,':',Module.config[key]
- print 'module:',self.name
- print 'specfile:',self.guess_specname()
+ print '==============================',self.name
+ #for (key,message) in Module.configKeys:
+ # print key,':',Module.config[key]
spec_dict = self.spec_dict()
- for varname in Module.varnames:
+ print 'trunk url',self.trunk_url()
+ print 'latest tag url',self.tag_url(spec_dict)
+ print 'specfile:',self.guess_specname()
+ for varname in self.varnames:
if not spec_dict.has_key(varname):
print 'Could not find %%define for %s'%varname
return
print 'Module %s already has a tag %s'%(self.name,tag_name)
return
- self.run("svn copy --editor-cmd=%s %s %s"%(self.options.editor,trunk_url,tag_url))
+ self.run_prompt("Create initial tag",
+ "svn copy --editor-cmd=%s %s %s"%(self.options.editor,trunk_url,tag_url))
def do_diff (self):
self.init_moddir()
old_tag_name = self.tag_name(spec_dict)
old_tag_url=self.tag_url(spec_dict)
# increment taglevel
- new_taglevel = str ( int (spec_dict['taglevel']) + 1)
- spec_dict['taglevel'] = new_taglevel
+ new_taglevel = str ( int (spec_dict[self.options.taglevel]) + 1)
+ spec_dict[self.options.taglevel] = new_taglevel
new_tag_name = self.tag_name(spec_dict)
new_tag_url=self.tag_url(spec_dict)
for url in [ trunk_url, old_tag_url ] :
sys.exit(1)
# side effect in trunk's specfile
- self.patch_spec_var({"taglevel":new_taglevel})
+ self.patch_spec_var({self.options.taglevel:new_taglevel})
# prepare changelog file
# we use the standard subversion magic string (see svn_magic_line)
module-version : only check specfile and print out details"""
def main():
+ all_modules=os.path.dirname(sys.argv[0])+"/modules.list"
+
parser=OptionParser(usage=usage,version=subversion_id)
+ parser.add_option("-a","--all",action="store_true",dest="all_modules",default=False,
+ help="Runs all modules as found in %s"%all_modules)
parser.add_option("-e","--editor", action="store", dest="editor", default="emacs",
help="Specify editor")
- parser.add_option("-c","--changelog", action="store_false", dest="changelog", default=True,
+ parser.add_option("-u","--no-update",action="store_true",dest="skip_update",default=False,
+ help="Skips svn updates")
+ parser.add_option("-c","--no-changelog", action="store_false", dest="changelog", default=True,
help="Does not update changelog section in specfile when tagging")
parser.add_option("-m","--modules", action="store", dest="modules", default="modules",
help="Name for topdir - defaults to modules")
parser.add_option("-b","--build", action="store", dest="build", default="build",
help="Set module name for build")
+ parser.add_option("-t","--taglevel",action="store",dest="taglevel",default="taglevel",
+ help="Specify an alternate spec variable for taglevel")
+ parser.add_option("-s","--version-string",action="store",dest="version",default="version",
+ help="Specify an alternate spec variable for version")
parser.add_option("-v","--verbose", action="store_true", dest="verbose", default=False,
help="Run in verbose mode")
parser.add_option("-d","--debug", action="store_true", dest="debug", default=False,
if options.debug: options.verbose=True
if len(args) == 0:
- parser.print_help()
- sys.exit(1)
- else:
- Module.init_homedir(options)
- for modname in args:
- module=Module(modname,options)
- if sys.argv[0].find("diff") >= 0:
- module.do_diff()
- elif sys.argv[0].find("tag") >= 0:
- module.do_tag()
- elif sys.argv[0].find("init") >= 0:
- module.do_init()
- elif sys.argv[0].find("version") >= 0:
- module.do_version()
- else:
- print "Unsupported command",sys.argv[0]
- parser.print_help()
- sys.exit(1)
+ if options.all_modules:
+ args=Command("grep -v '#' %s"%all_modules,options).output_of().split()
+ else:
+ parser.print_help()
+ sys.exit(1)
+ Module.init_homedir(options)
+ for modname in args:
+ module=Module(modname,options)
+ if sys.argv[0].find("diff") >= 0:
+ module.do_diff()
+ elif sys.argv[0].find("tag") >= 0:
+ module.do_tag()
+ elif sys.argv[0].find("init") >= 0:
+ module.do_init()
+ elif sys.argv[0].find("version") >= 0:
+ module.do_version()
+ else:
+ print "Unsupported command",sys.argv[0]
+ parser.print_help()
+ sys.exit(1)
# basically, we exit if anything goes wrong
if __name__ == "__main__" :