except:
raise
+def default_editor():
+ try:
+ editor = os.environ['EDITOR']
+ except:
+ editor = "emacs"
+ return editor
+
class Command:
def __init__ (self,command,options):
self.command=command
sys.stdout.flush()
retcod=os.system(self.command + " &> " + self.tmp)
if retcod != 0:
- print "FAILED ! -- output quoted below "
+ print "FAILED ! -- out+err below (command was %s)"%self.command
os.system("cat " + self.tmp)
print "FAILED ! -- end of quoted output"
elif self.options.verbose:
# for parsing module spec name:branch
- matcher_branch_spec=re.compile("\A(?P<name>[\w-]+):(?P<branch>[\w\.]+)\Z")
+ matcher_branch_spec=re.compile("\A(?P<name>[\w-]+):(?P<branch>[\w\.-]+)\Z")
matcher_rpm_define=re.compile("%(define|global)\s+(\S+)\s+(\S*)\s*")
def __init__ (self,module_spec,options):
for (key,was_changed) in changed.iteritems():
if not was_changed:
if self.options.debug:
- print 'rewriting missed %s as %s'%(key,patch_dict[key])
- new.write('%%define %s %s\n'%(key,patch_dict[key]))
+ print 'rewriting missing %s as %s'%(key,patch_dict[key])
+ new.write('\n%%define %s %s\n'%(key,patch_dict[key]))
spec.close()
new.close()
os.rename(newspecfile,specfile)
def unignored_lines (self, logfile):
result=[]
exclude="Tagging module %s"%self.name
+ white_line_matcher = re.compile("\A\s*\Z")
for logline in file(logfile).readlines():
if logline.strip() == Module.svn_magic_line:
break
- if logline.find(exclude) < 0:
- result += [ logline ]
+ if logline.find(exclude) >= 0:
+ continue
+ elif white_line_matcher.match(logline):
+ continue
+ else:
+ result.append(logline.strip()+'\n')
return result
def insert_changelog (self, logfile, oldtag, newtag):
if re.compile('%changelog').match(line):
dateformat="* %a %b %d %Y"
datepart=time.strftime(dateformat)
- logpart="%s <%s> - %s %s"%(Module.config['username'],
+ logpart="%s <%s> - %s"%(Module.config['username'],
Module.config['email'],
- oldtag,newtag)
+ newtag)
new.write(datepart+" "+logpart+"\n")
for logline in self.unignored_lines(logfile):
new.write("- " + logline)
buildname=Module.config['build']
except:
buildname="build"
+ if self.options.build_branch:
+ buildname+=":"+self.options.build_branch
build = Module(buildname,self.options)
build.init_moddir()
build.init_edge_dir()
if mode == "tag" :
parser.add_option("-c","--no-changelog", action="store_false", dest="changelog", default=True,
help="do not update changelog section in specfile when tagging")
+ parser.add_option("-b","--build-branch", action="store", dest="build_branch", default=None,
+ help="specify a build branch; used for locating the *tags*.mk files where adoption is to take place")
if mode == "tag" or mode == "sync" :
- parser.add_option("-e","--editor", action="store", dest="editor", default="emacs",
+ parser.add_option("-e","--editor", action="store", dest="editor", default=default_editor(),
help="specify editor")
if mode == "sync" :
parser.add_option("-m","--message", action="store", dest="message", default=None,
try:
method(module)
except Exception,e:
- print 'Skipping failed %s - %r'%(modname,e)
+ print 'Skipping failed %s: '%modname,e
if __name__ == "__main__" :
try: