/stdhome

To get this branch, use:
bzr branch http://bzr.ed.am/stdhome

« back to all changes in this revision

Viewing changes to lib/stdhome/program.py

  • Committer: Tim Marston
  • Date: 2021-07-05 19:11:53 UTC
  • Revision ID: tim@ed.am-20210705191153-5jcbb6lxv5i15ypx
fix debian dist-package installation

Show diffs side-by-side

added added

removed removed

Lines of Context:
98
98
 
99
99
 
100
100
        def check_command( self, command ):
101
 
                """
102
 
                Check that the given command is valid and return the full name of the command.
103
 
        
104
 
                Arguments:
105
 
                - `command`: the given command
106
 
                """
 
101
                """Check that the given command is valid and return the full name of the
 
102
                command.
 
103
 
 
104
                @param command the given command
 
105
                """
 
106
 
107
107
                # commands
108
108
                if [ 'init', 'update', 'resolve', 'add', 'remove', 'revert', 'status',
109
109
                         'diff', 'stage-add', 'stage-remove', 'stage-revert',
117
117
                        'rm': 'remove',
118
118
                        'st': 'status',
119
119
                        'co': 'init',
 
120
                        'ci': 'add',
120
121
                }.get( command, False )
121
122
                if alias: return alias
122
123
 
124
125
                return None
125
126
 
126
127
 
 
128
        def get_command_argument( self, args ):
 
129
                """Find the first program argument what isn't an option argument.
 
130
 
 
131
                @param args the program arguments
 
132
                """
 
133
 
 
134
                while args:
 
135
                        if args[ 0 ] == '--':
 
136
                                return args[ 1 ] if len( args ) > 1 else None
 
137
                        if args[ 0 ][ 0 : 1 ] != '-':
 
138
                                return args[ 0 ]
 
139
                        args = args[ 1 : ]
 
140
                return None
 
141
 
 
142
 
127
143
        def run( self ):
128
144
                # make an initial attempt to parse the command line, looking only for
129
 
                # --help and --version, so that they have the chance to run without a
 
145
                # --help and --version so that they have the chance to run without a
130
146
                # command being specified
131
147
                try:
132
148
                        opts, args = getopt.gnu_getopt(
149
165
                # read program configuration
150
166
                the.config = Config()
151
167
 
152
 
                # the first argument should be the command
153
 
                the.command = sys.argv[ 1 ] if len( sys.argv ) > 1 else None
 
168
                # find the command by grabbing the first program argument that doesn't
 
169
                # look like an option (note: the first argument that doesn't look like
 
170
                # an option may actually be an argument to an option, so this is far
 
171
                # from perfect, but, provided the user is mindful, this is preferable to
 
172
                # forcing the user to always specify options after the command)
 
173
                the.command = self.get_command_argument( sys.argv[ 1: ] )
154
174
                if the.command == None:
155
175
                        self.print_usage( "missing command" )
156
176
 
188
208
                try:
189
209
                        instance.run()
190
210
                except Vcs.VcsError as e:
191
 
                        message = e.msg.rstrip()
192
 
                        if the.verbose >= 1:
193
 
                                message += '\n\nOUTPUT:\n' + e.output.rstrip()
 
211
                        message = e.msg.rstrip() + '\n\nVCS OUTPUT:\n' + e.output.rstrip()
194
212
                        self.die( message )
195
213
                except self.FatalError as e:
196
214
                        self.die( e.msg )