+
+ Main.usage += "\nmodule-%s : %s"%(mode,Main.modes[mode])
+ all_modules=os.path.dirname(sys.argv[0])+"/modules.list"
+
+ parser=OptionParser(usage=Main.usage,version=subversion_id)
+
+ if mode == 'list':
+ parser.add_option("-b","--branches",action="store_true",dest="list_branches",default=False,
+ help="list branches")
+ parser.add_option("-t","--tags",action="store_false",dest="list_branches",
+ help="list tags")
+ parser.add_option("-m","--match",action="store",dest="list_pattern",default=None,
+ help="grep pattern for filtering output")
+ parser.add_option("-x","--exact-match",action="store",dest="list_exact",default=None,
+ help="exact grep pattern for filtering output")
+ if mode == "tag" or mode == 'branch':
+ parser.add_option("-s","--set-version",action="store",dest="new_version",default=None,
+ help="set new version and reset taglevel to 0")
+ 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")
+ if mode == "tag" or mode == "sync" :
+ parser.add_option("-e","--editor", action="store", dest="editor", default="emacs",
+ help="specify editor")
+ if mode == "sync" :
+ parser.add_option("-m","--message", action="store", dest="message", default=None,
+ help="specify log message")
+ if mode == "diff" :
+ parser.add_option("-o","--only", action="store_true", dest="only", default=False,
+ help="report diff only for modules that exhibit differences")
+ if mode == "diff" :
+ parser.add_option("-l","--list", action="store_true", dest="list", default=False,
+ help="just list modules that exhibit differences")
+
+ if mode == 'version':
+ parser.add_option("-u","--url", action="store_true", dest="show_urls", default=False,
+ help="display URLs")
+
+ # default verbosity depending on function - temp
+ parser.add_option("-a","--all",action="store_true",dest="all_modules",default=False,
+ help="run on all modules as found in %s"%all_modules)
+ verbose_default=False
+ if mode in ['tag','sync'] : verbose_default = True
+ parser.add_option("-v","--verbose", action="store_true", dest="verbose", default=verbose_default,
+ help="run in verbose mode")
+ if mode not in ['version','list']:
+ parser.add_option("-q","--quiet", action="store_false", dest="verbose",
+ help="run in quiet (non-verbose) mode")
+ parser.add_option("-w","--workdir", action="store", dest="workdir",
+ default="%s/%s"%(os.getenv("HOME"),"modules"),
+ help="""name for dedicated working dir - defaults to ~/modules
+** THIS MUST NOT ** be your usual working directory""")
+ parser.add_option("-f","--fast-checks",action="store_true",dest="fast_checks",default=False,
+ help="skip safety checks, such as svn updates -- use with care")
+ parser.add_option("-d","--debug", action="store_true", dest="debug", default=False,
+ help="debug mode - mostly more verbose")
+ (options, args) = parser.parse_args()
+ options.mode=mode
+
+ if len(args) == 0:
+ 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 len(args)>1 and mode not in Main.silent_modes:
+ print '========================================',module.friendly_name()
+ # call the method called do_<mode>
+ method=Module.__dict__["do_%s"%mode]
+ method(module)
+