Hashar has uploaded a new change for review.
https://gerrit.wikimedia.org/r/81562
Change subject: make-release: use argparse, snapshot by default
......................................................................
make-release: use argparse, snapshot by default
argparse is way funnier than getopt and gives you a nice usage message
whenever needed. Since the positional arguments are now named
(newversion, previousversion) we no more need to use args[x]:
args[0] => options.newversion
args[1] => options.previousversion
The usage is now in the docstring which is passed to argparse
description. That will show up whenever one use --help
--snapshot has been removed, invoking the script with no newversion will
simply generate a snapshot.
Change-Id: I31bb325027afef2e1faf8a253ef57fbb8aecd553
---
M make-release/make-release
1 file changed, 70 insertions(+), 58 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/tools/release
refs/changes/62/81562/1
diff --git a/make-release/make-release b/make-release/make-release
index a0554cf..5cefda1 100755
--- a/make-release/make-release
+++ b/make-release/make-release
@@ -1,7 +1,21 @@
#!/usr/bin/python
# vim:sw=4:ts=4:et:
-import getopt
+"""
+Helper to generate a MediaWiki tarball.
+
+example:
+ ./make-release 1.19.0
+ ./make-release # takes a snapshot
+
+If the previous version is not given, it will be derived from the next version,
+and you will be prompted to confirm that the version number is correct. To
+always answer "yes", use the --yes option.
+
+Use --no-previous to disable the diff to previous entirely.
+"""
+
+import argparse
import hashlib
import os
import re
@@ -11,29 +25,12 @@
def dieUsage():
- print """
-Usage:
- ./make-release --snapshot
- ./make-release [--yes] [--no-previous] <next-version> [<previous-version>]
-
-Example:
- ./make-release 1.19.0
-
-If the previous version is not given, it will be derived from the next version,
-and you will be prompted to confirm that the version number is correct. To
-always answer "yes", use the --yes option.
-
-Use --no-previous to disable the diff to previous entirely.
-"""
+ print __doc__
sys.exit(1)
def main():
- try:
- options, args = getopt.getopt(sys.argv[1:], '', ['help', 'snapshot',
'yes', 'no-previous', 'git-root=', 'smw'])
- except getopt.GetoptError, err:
- print str(err)
- dieUsage()
+ options = parse_args()
extensions = []
smwExtensions = [
@@ -42,60 +39,38 @@
"SemanticMaps", "SemanticWatchlist", "SemanticTasks",
"SemanticFormsInputs",
"SemanticImageInput", "Validator", "AdminLinks", "ApprovedRevs",
"Arrays", "DataTransfer",
"ExternalData", "HeaderTabs", "Maps", "PageSchemas", "ReplaceText",
"Widgets"]
- snapshot = False
- yes = False
- noPrevious = False
- gitRoot = 'ssh://gerrit.wikimedia.org:29418/mediawiki'
- smw = False
- for name, value in options:
- if name == '--help':
- dieUsage()
- elif name == '--snapshot':
- snapshot = True
- elif name == '--yes':
- yes = True
- elif name == '--no-previous':
- noPrevious = True
- elif name == '--git-root':
- gitRoot = value
- elif name == '--smw':
- smw = True
- # Snapshot release?
- if snapshot:
+ # No version specified, assuming a snapshot release
+ if options.nextversion is None:
makeRelease(
version='snapshot-' + time.strftime('%Y%m%d', time.gmtime()),
branch='trunk',
dir='snapshots',
- gitRoot=gitRoot)
+ gitRoot=options.gitroot)
return
- # Need a version specified if not snapshot
- if len(args) == 0:
- dieUsage()
-
- decomposed = decomposeVersion(args[0])
+ decomposed = decomposeVersion(options.nextversion)
if decomposed is None:
- print 'Invalid version number "%s"' % (args[0])
- sys.exit(1)
+ print 'Invalid version number "%s"' % (options.nextversion)
+ sys.exit(1) # FIXME: return 1
version = decomposed['major']
- if smw:
+ if options.smw:
# Other extensions for inclusion
for ext in smwExtensions:
extensions.append(ext)
- if len(args) >= 2:
+ if options.previousversion:
# Given the previous version on the command line
makeRelease(
extensions=extensions,
- version=args[0],
- prevVersion=args[1],
- prevBranch=versionToBranch(args[1]),
+ version=options.nextversion,
+ prevVersion=options.previousversion,
+ prevBranch=versionToBranch(options.previousversion),
branch=decomposed['branch'],
dir=decomposed['major'],
- gitRoot=gitRoot)
+ gitRoot=options.gitroot)
return
if decomposed['prevVersion'] is None:
@@ -108,10 +83,10 @@
if noPrevious:
makeRelease(
extensions=extensions,
- version=args[0],
+ version=options.nextversion,
branch=decomposed['branch'],
dir=decomposed['major'],
- gitRoot=gitRoot)
+ gitRoot=options.gitroot)
else:
if not ask("Was %s the previous release?" %
(decomposed['prevVersion'])):
print 'Please specify the correct previous release on the command
line'
@@ -119,12 +94,49 @@
makeRelease(
extensions=extensions,
- version=args[0],
+ version=options.nextversion,
prevVersion=decomposed['prevVersion'],
prevBranch=decomposed['prevBranch'],
branch=decomposed['branch'],
dir=decomposed['major'],
- gitRoot=gitRoot)
+ gitRoot=options.gitroot)
+
+
+def parse_args():
+ """Parse command line arguments and returns options"""
+ parser = argparse.ArgumentParser(
+ description=__doc__,
+ formatter_class=argparse.RawDescriptionHelpFormatter,
+ )
+
+ # Positional arguments:
+ parser.add_argument(
+ 'nextversion', nargs='?',
+ help='version you are about to release')
+ parser.add_argument(
+ 'previousversion', nargs='?',
+ help='version that came before')
+
+ # Optional arguments:
+ parser.add_argument(
+ '--yes', dest='yes', action='store_true',
+ help='answer yes to any question'
+ )
+ parser.add_argument(
+ '--no-previous', dest='no-previous', action='store_true',
+ help='disable the diff with previous version'
+ )
+ parser.add_argument(
+ '--git-root', dest='gitroot',
+ default='ssh://gerrit.wikimedia.org:29418/mediawiki',
+ help='base git URL to fetch projects from (defaults to Gerrit)'
+ )
+ parser.add_argument(
+ '--smw', dest='smw', action='store_true',
+ help='include the SemanticMediaWiki bundle'
+ )
+
+ return parser.parse_args()
def ask(question):
--
To view, visit https://gerrit.wikimedia.org/r/81562
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I31bb325027afef2e1faf8a253ef57fbb8aecd553
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/tools/release
Gerrit-Branch: master
Gerrit-Owner: Hashar <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits