~snappy-dev/snapcraft/core

« back to all changes in this revision

Viewing changes to snapcraft/main.py

  • Committer: Snappy Tarmac
  • Author(s): Sergio Schvezov
  • Date: 2015-10-29 11:54:55 UTC
  • mfrom: (259.1.1 work)
  • Revision ID: snappy_tarmac-20151029115455-m9hipofdllnvjdxb
Support combinations of --version, -v and version. Also order help by sergiusens approved by chipaca

Show diffs side-by-side

added added

removed removed

Lines of Context:
24
24
from snapcraft import help
25
25
from snapcraft import log
26
26
 
27
 
try:
28
 
    _version = pkg_resources.require('snapcraft')[0].version
29
 
except pkg_resources.DistributionNotFound:
30
 
    _version = 'devel'
31
 
_VERSION = '%(prog)s ({}). Run "%(prog)s help" to get started.'.format(
32
 
    _version)
 
27
 
 
28
class _VersionAction(argparse.Action):
 
29
 
 
30
    def __init__(self, option_strings, version=None, dest=argparse.SUPPRESS,
 
31
                 default=argparse.SUPPRESS, nargs=0, help=None):
 
32
        super(_VersionAction, self).__init__(
 
33
            option_strings=option_strings,
 
34
            dest=dest,
 
35
            default=default,
 
36
            nargs=0,
 
37
            help=help)
 
38
 
 
39
    def __call__(self, parser, namespace, values, option_string=None):
 
40
        version_string = '{prog} ({ver}).\nRun "{prog} help" to get started.'
 
41
 
 
42
        try:
 
43
            version = pkg_resources.require('snapcraft')[0].version
 
44
        except pkg_resources.DistributionNotFound:
 
45
            version = 'devel'
 
46
 
 
47
        print(version_string.format(prog=parser.prog.split()[0], ver=version))
 
48
        parser.exit()
33
49
 
34
50
 
35
51
def main():
47
63
                                         parents=[force_parser])
48
64
    cmd_parser.add_argument('part', nargs='*')
49
65
 
50
 
    root_parser.add_argument('--version', action='version',
51
 
                             version=_VERSION)
 
66
    root_parser.add_argument('-v', '--version', action=_VersionAction,
 
67
                             help="show the program's version number and exit")
52
68
 
53
69
    # Command parsers
54
70
 
78
94
        help='clean up the environment (to start from scratch)')
79
95
    parser.set_defaults(func=snapcraft.cmds.clean)
80
96
 
81
 
    parser = subparsers.add_parser(
82
 
        'help',
83
 
        usage=help.topic.__doc__,
84
 
        help='obtain help for plugins and specific topics')
85
 
    parser.set_defaults(func=help.topic)
86
 
    parser.add_argument('topic', help='plugin name or topic to get help from')
87
 
    parser.add_argument('--devel', action='store_true',
88
 
                        help='show the development help')
89
 
 
90
97
    parser = subparsers.add_parser('pull', help='get sources',
91
98
                                   parents=[cmd_parser])
92
99
    parser.set_defaults(func=snapcraft.cmds.cmd)
112
119
        aliases=['all'])
113
120
    parser.set_defaults(func=snapcraft.cmds.assemble)
114
121
 
 
122
    parser = subparsers.add_parser(
 
123
        'version', help="show the program's version number and exit")
 
124
    parser.add_argument('foo', action=_VersionAction, nargs='?',
 
125
                        help=argparse.SUPPRESS)
 
126
 
 
127
    parser = subparsers.add_parser(
 
128
        'help',
 
129
        usage=help.topic.__doc__,
 
130
        help='obtain help for plugins and specific topics')
 
131
    parser.set_defaults(func=help.topic)
 
132
    parser.add_argument('topic', help='plugin name or topic to get help from')
 
133
    parser.add_argument('--devel', action='store_true',
 
134
                        help='show the development help')
 
135
 
115
136
    # Now run parser
116
137
 
117
138
    if len(sys.argv) < 2: