Merge lp:~sergiusens/snapcraft/1501222 into lp:~snappy-dev/snapcraft/core

Proposed by Sergio Schvezov on 2015-10-29
Status: Merged
Approved by: John Lenton on 2015-10-29
Approved revision: 260
Merged at revision: 260
Proposed branch: lp:~sergiusens/snapcraft/1501222
Merge into: lp:~snappy-dev/snapcraft/core
Diff against target: 86 lines (+38/-17)
1 file modified
snapcraft/main.py (+38/-17)
To merge this branch: bzr merge lp:~sergiusens/snapcraft/1501222
Reviewer Review Type Date Requested Status
John Lenton 2015-10-29 Approve on 2015-10-29
Review via email: mp+276089@code.launchpad.net

Commit Message

Support combinations of --version, -v and version. Also order help

To post a comment you must log in.
lp:~sergiusens/snapcraft/1501222 updated on 2015-10-29
260. By Sergio Schvezov on 2015-10-29

Support combinations of --version, -v and version. Also order help

John Lenton (chipaca) wrote :

Ugh, well that turned out to be ugly to implement :)

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'snapcraft/main.py'
2--- snapcraft/main.py 2015-10-28 17:35:04 +0000
3+++ snapcraft/main.py 2015-10-29 09:14:19 +0000
4@@ -24,12 +24,28 @@
5 from snapcraft import help
6 from snapcraft import log
7
8-try:
9- _version = pkg_resources.require('snapcraft')[0].version
10-except pkg_resources.DistributionNotFound:
11- _version = 'devel'
12-_VERSION = '%(prog)s ({}). Run "%(prog)s help" to get started.'.format(
13- _version)
14+
15+class _VersionAction(argparse.Action):
16+
17+ def __init__(self, option_strings, version=None, dest=argparse.SUPPRESS,
18+ default=argparse.SUPPRESS, nargs=0, help=None):
19+ super(_VersionAction, self).__init__(
20+ option_strings=option_strings,
21+ dest=dest,
22+ default=default,
23+ nargs=0,
24+ help=help)
25+
26+ def __call__(self, parser, namespace, values, option_string=None):
27+ version_string = '{prog} ({ver}).\nRun "{prog} help" to get started.'
28+
29+ try:
30+ version = pkg_resources.require('snapcraft')[0].version
31+ except pkg_resources.DistributionNotFound:
32+ version = 'devel'
33+
34+ print(version_string.format(prog=parser.prog.split()[0], ver=version))
35+ parser.exit()
36
37
38 def main():
39@@ -47,8 +63,8 @@
40 parents=[force_parser])
41 cmd_parser.add_argument('part', nargs='*')
42
43- root_parser.add_argument('--version', action='version',
44- version=_VERSION)
45+ root_parser.add_argument('-v', '--version', action=_VersionAction,
46+ help="show the program's version number and exit")
47
48 # Command parsers
49
50@@ -78,15 +94,6 @@
51 help='clean up the environment (to start from scratch)')
52 parser.set_defaults(func=snapcraft.cmds.clean)
53
54- parser = subparsers.add_parser(
55- 'help',
56- usage=help.topic.__doc__,
57- help='obtain help for plugins and specific topics')
58- parser.set_defaults(func=help.topic)
59- parser.add_argument('topic', help='plugin name or topic to get help from')
60- parser.add_argument('--devel', action='store_true',
61- help='show the development help')
62-
63 parser = subparsers.add_parser('pull', help='get sources',
64 parents=[cmd_parser])
65 parser.set_defaults(func=snapcraft.cmds.cmd)
66@@ -112,6 +119,20 @@
67 aliases=['all'])
68 parser.set_defaults(func=snapcraft.cmds.assemble)
69
70+ parser = subparsers.add_parser(
71+ 'version', help="show the program's version number and exit")
72+ parser.add_argument('foo', action=_VersionAction, nargs='?',
73+ help=argparse.SUPPRESS)
74+
75+ parser = subparsers.add_parser(
76+ 'help',
77+ usage=help.topic.__doc__,
78+ help='obtain help for plugins and specific topics')
79+ parser.set_defaults(func=help.topic)
80+ parser.add_argument('topic', help='plugin name or topic to get help from')
81+ parser.add_argument('--devel', action='store_true',
82+ help='show the development help')
83+
84 # Now run parser
85
86 if len(sys.argv) < 2:

Subscribers

People subscribed via source and target branches