CmdLineParser.st
author Claus Gittinger <cg@exept.de>
Tue, 02 Apr 2019 10:50:28 +0200
branchjv
changeset 24091 691c182c3105
parent 23107 40173e082cbc
permissions -rw-r--r--
#BUGFIX by cg class: CharacterArray changed: #, #asDenseUnicodeString (grafted from ba4c42171801ea3a46aea31504a621256655feae)
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
13402
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
     1
"
13937
7eda055b6a4e Updated from SVN
vrany
parents: 13483
diff changeset
     2
 COPYRIGHT (c) 2006 by eXept Software AG
23107
40173e082cbc Copyright updates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20396
diff changeset
     3
 COPYRIGHT (c) 2009 Jan Vrany
40173e082cbc Copyright updates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20396
diff changeset
     4
 COPYRIGHT (c) 2016 Jan Vrany
13402
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
     5
              All Rights Reserved
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
     6
13937
7eda055b6a4e Updated from SVN
vrany
parents: 13483
diff changeset
     7
 This software is furnished under a license and may be used
7eda055b6a4e Updated from SVN
vrany
parents: 13483
diff changeset
     8
 only in accordance with the terms of that license and with the
7eda055b6a4e Updated from SVN
vrany
parents: 13483
diff changeset
     9
 inclusion of the above copyright notice.   This software may not
7eda055b6a4e Updated from SVN
vrany
parents: 13483
diff changeset
    10
 be provided or otherwise made available to, or used by, any
7eda055b6a4e Updated from SVN
vrany
parents: 13483
diff changeset
    11
 other person.  No title to or ownership of the software is
7eda055b6a4e Updated from SVN
vrany
parents: 13483
diff changeset
    12
 hereby transferred.
13402
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
    13
"
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
    14
"{ Package: 'stx:libbasic' }"
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
    15
17467
d708d65cdca7 class: CmdLineParser
Claus Gittinger <cg@exept.de>
parents: 16455
diff changeset
    16
"{ NameSpace: Smalltalk }"
d708d65cdca7 class: CmdLineParser
Claus Gittinger <cg@exept.de>
parents: 16455
diff changeset
    17
13402
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
    18
Object subclass:#CmdLineParser
20076
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
    19
	instanceVariableNames:'options ignoreUnknownOptions'
13402
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
    20
	classVariableNames:''
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
    21
	poolDictionaries:''
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
    22
	category:'System-Support-Command line'
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
    23
!
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
    24
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
    25
!CmdLineParser class methodsFor:'documentation'!
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
    26
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
    27
copyright
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
    28
"
13937
7eda055b6a4e Updated from SVN
vrany
parents: 13483
diff changeset
    29
 COPYRIGHT (c) 2006 by eXept Software AG
23107
40173e082cbc Copyright updates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20396
diff changeset
    30
 COPYRIGHT (c) 2009 Jan Vrany
40173e082cbc Copyright updates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20396
diff changeset
    31
 COPYRIGHT (c) 2016 Jan Vrany
13402
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
    32
              All Rights Reserved
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
    33
13937
7eda055b6a4e Updated from SVN
vrany
parents: 13483
diff changeset
    34
 This software is furnished under a license and may be used
7eda055b6a4e Updated from SVN
vrany
parents: 13483
diff changeset
    35
 only in accordance with the terms of that license and with the
7eda055b6a4e Updated from SVN
vrany
parents: 13483
diff changeset
    36
 inclusion of the above copyright notice.   This software may not
7eda055b6a4e Updated from SVN
vrany
parents: 13483
diff changeset
    37
 be provided or otherwise made available to, or used by, any
7eda055b6a4e Updated from SVN
vrany
parents: 13483
diff changeset
    38
 other person.  No title to or ownership of the software is
7eda055b6a4e Updated from SVN
vrany
parents: 13483
diff changeset
    39
 hereby transferred.
13402
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
    40
"
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
    41
! !
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
    42
20076
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
    43
!CmdLineParser class methodsFor:'instance creation'!
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
    44
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
    45
new
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
    46
    "return an initialized instance"
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
    47
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
    48
    ^ self basicNew initialize.
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
    49
! !
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
    50
13402
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
    51
!CmdLineParser class methodsFor:'parsing'!
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
    52
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
    53
parse: argv for: object
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
    54
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
    55
    ^self new parse: argv for: object
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
    56
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
    57
    "Created: / 28-01-2009 / 12:06:04 / Jan Vrany <vranyj1@fel.cvut.cz>"
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
    58
! !
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
    59
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
    60
!CmdLineParser methodsFor:'accessing'!
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
    61
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
    62
cmdlineOptionHelp
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
    63
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
    64
    ^CmdLineOption new
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
    65
        short: $a;
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
    66
        long: 'help';
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
    67
        description: 'Prints short summary of available options';
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
    68
        action:[self printHelp]
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
    69
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
    70
    "Created: / 08-06-2009 / 14:54:11 / Jan Vrany <vranyj1@fel.cvut.cz>"
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
    71
!
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
    72
20076
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
    73
ignoreUnknownOptions
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
    74
    ^ ignoreUnknownOptions
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
    75
!
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
    76
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
    77
ignoreUnknownOptions:aBoolean
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
    78
    "When set to true, unknown options are silently ignored and added to
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
    79
     a list of positional arguments returned by #parse:.
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
    80
     When set to false, an error is triggered when an unknown option is 
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
    81
     encountered (this is the default behaviour)"
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
    82
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
    83
    ignoreUnknownOptions := aBoolean.
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
    84
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
    85
    "Modified (comment): / 29-06-2016 / 00:03:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
    86
!
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
    87
13402
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
    88
options
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
    89
    ^ options
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
    90
!
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
    91
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
    92
options:something
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
    93
    options := something.
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
    94
! !
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
    95
19988
148721e96482 Added convenience methods to build CmdLineOptions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 18120
diff changeset
    96
!CmdLineParser methodsFor:'building'!
148721e96482 Added convenience methods to build CmdLineOptions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 18120
diff changeset
    97
148721e96482 Added convenience methods to build CmdLineOptions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 18120
diff changeset
    98
on: spec description: description do: action
148721e96482 Added convenience methods to build CmdLineOptions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 18120
diff changeset
    99
    | option |
148721e96482 Added convenience methods to build CmdLineOptions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 18120
diff changeset
   100
148721e96482 Added convenience methods to build CmdLineOptions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 18120
diff changeset
   101
    option := CmdLineOption new.
148721e96482 Added convenience methods to build CmdLineOptions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 18120
diff changeset
   102
    option spec: spec.
148721e96482 Added convenience methods to build CmdLineOptions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 18120
diff changeset
   103
    option description: description.
148721e96482 Added convenience methods to build CmdLineOptions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 18120
diff changeset
   104
    option action: action.
19989
cac9cb31ce9e Fixed bug introduced in 148721e96482 in CmdLineParser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19988
diff changeset
   105
    options isNil ifTrue:[options := OrderedCollection new].
19988
148721e96482 Added convenience methods to build CmdLineOptions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 18120
diff changeset
   106
    options add: option.
148721e96482 Added convenience methods to build CmdLineOptions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 18120
diff changeset
   107
148721e96482 Added convenience methods to build CmdLineOptions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 18120
diff changeset
   108
    "Created: / 14-06-2016 / 06:43:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
148721e96482 Added convenience methods to build CmdLineOptions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 18120
diff changeset
   109
!
148721e96482 Added convenience methods to build CmdLineOptions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 18120
diff changeset
   110
148721e96482 Added convenience methods to build CmdLineOptions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 18120
diff changeset
   111
on: spec do: action
148721e96482 Added convenience methods to build CmdLineOptions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 18120
diff changeset
   112
    ^ self on: spec description: nil do: action
148721e96482 Added convenience methods to build CmdLineOptions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 18120
diff changeset
   113
148721e96482 Added convenience methods to build CmdLineOptions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 18120
diff changeset
   114
    "Created: / 14-06-2016 / 07:02:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
148721e96482 Added convenience methods to build CmdLineOptions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 18120
diff changeset
   115
! !
148721e96482 Added convenience methods to build CmdLineOptions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 18120
diff changeset
   116
13402
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   117
!CmdLineParser methodsFor:'error reporting'!
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   118
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   119
error: message option: option
20396
dd4549cee94c Command line parser refactored to be "more portable" to other dialects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20077
diff changeset
   120
    ^CmdLineOptionError signal: message
13402
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   121
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   122
    "Created: / 08-06-2009 / 14:22:19 / Jan Vrany <vranyj1@fel.cvut.cz>"
20396
dd4549cee94c Command line parser refactored to be "more portable" to other dialects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20077
diff changeset
   123
    "Modified (format): / 07-09-2016 / 16:54:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
13402
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   124
!
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   125
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   126
errorOptionHasNoArgument:option 
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   127
    self error:'option has no argument' option:option
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   128
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   129
    "Created: / 08-06-2009 / 14:27:49 / Jan Vrany <vranyj1@fel.cvut.cz>"
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   130
!
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   131
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   132
errorOptionRequiresArgument:option 
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   133
    self error:'option requires an argument' option:option
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   134
! !
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   135
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   136
!CmdLineParser methodsFor:'initialization'!
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   137
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   138
collectOptionsFrom: anObject
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   139
13937
7eda055b6a4e Updated from SVN
vrany
parents: 13483
diff changeset
   140
    options := CmdLineOption optionsFor: anObject
13402
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   141
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   142
    "Created: / 08-06-2009 / 13:06:23 / Jan Vrany <vranyj1@fel.cvut.cz>"
13937
7eda055b6a4e Updated from SVN
vrany
parents: 13483
diff changeset
   143
    "Modified: / 06-11-2011 / 21:40:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
20076
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
   144
!
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
   145
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
   146
initialize
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
   147
    "Invoked when a new instance is created."
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
   148
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
   149
    ignoreUnknownOptions := false.
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
   150
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
   151
    "Modified: / 29-06-2016 / 00:04:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
20396
dd4549cee94c Command line parser refactored to be "more portable" to other dialects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20077
diff changeset
   152
    "Modified (comment): / 07-09-2016 / 16:23:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
13402
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   153
! !
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   154
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   155
!CmdLineParser methodsFor:'parsing'!
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   156
20076
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
   157
parse: argv 
13402
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   158
    "
20076
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
   159
     Parses argv array. Returns array of unparsed (i.e. non-options / unknown options) arguments
13402
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   160
    "
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   161
20076
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
   162
    | unparsed current |
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
   163
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
   164
    unparsed := OrderedCollection new.
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
   165
    current := 1.
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
   166
    [current <= argv size] whileTrue: [ 
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
   167
        | arg next |
13402
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   168
20076
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
   169
        arg := argv at:current.
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
   170
        arg first == $- ifTrue:[
20396
dd4549cee94c Command line parser refactored to be "more portable" to other dialects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20077
diff changeset
   171
            " Maybe an option... "
20077
e0e720fce465 CmdLineParser refactored to allow both `--long-option=value` and `--long-option value` forms
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20076
diff changeset
   172
            next := self parse:argv startingAt:current.
20076
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
   173
            next == 0 ifTrue:[
20396
dd4549cee94c Command line parser refactored to be "more portable" to other dialects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20077
diff changeset
   174
                " Option has not been recognized "
20076
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
   175
                unparsed add: arg.
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
   176
                next := current + 1.
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
   177
            ]
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
   178
        ] ifFalse:[ 
20396
dd4549cee94c Command line parser refactored to be "more portable" to other dialects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20077
diff changeset
   179
            " Not an option... "
20076
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
   180
            unparsed addAll: (argv copyFrom: current).
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
   181
            next := argv size + 1.
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
   182
        ].
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
   183
        current := next.
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
   184
    ].
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
   185
    ^ unparsed
13402
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   186
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   187
    "Created: / 28-01-2009 / 12:08:29 / Jan Vrany <vranyj1@fel.cvut.cz>"
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   188
    "Modified: / 08-06-2009 / 13:26:26 / Jan Vrany <vranyj1@fel.cvut.cz>"
20076
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
   189
    "Modified: / 29-06-2016 / 00:15:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
20396
dd4549cee94c Command line parser refactored to be "more portable" to other dialects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20077
diff changeset
   190
    "Modified (format): / 07-09-2016 / 16:23:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
13402
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   191
!
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   192
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   193
parse: argv for: object
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   194
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   195
     "
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   196
      Parses argv array. Returns array of unparsed (i.e. non-option)
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   197
      arguments. Options are obtained from given object
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   198
     "
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   199
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   200
    ^self 
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   201
        collectOptionsFrom: object;
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   202
        parse: argv
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   203
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   204
    "Created: / 28-01-2009 / 11:50:27 / Jan Vrany <vranyj1@fel.cvut.cz>"
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   205
    "Modified: / 08-06-2009 / 13:07:59 / Jan Vrany <vranyj1@fel.cvut.cz>"
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   206
!
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   207
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   208
parse:argv options: opts
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   209
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   210
    "
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   211
      Parses argv array. Returns array of unparsed (i.e. non-option)
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   212
      arguments. Options are obtained from given object
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   213
    "
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   214
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   215
    options := opts.
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   216
    ^self parse: argv
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   217
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   218
    "Created: / 29-05-2009 / 15:51:41 / Jan Vrany <vranyj1@fel.cvut.cz>"
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   219
    "Modified: / 08-06-2009 / 13:08:12 / Jan Vrany <vranyj1@fel.cvut.cz>"
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   220
! !
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   221
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   222
!CmdLineParser methodsFor:'printing & storing'!
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   223
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   224
printHelp
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   225
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   226
    ^self printHelpOn: Stdout
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   227
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   228
    "Created: / 08-06-2009 / 14:55:52 / Jan Vrany <vranyj1@fel.cvut.cz>"
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   229
!
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   230
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   231
printHelpOn: stream
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   232
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   233
    stream nextPutAll:'help...'; cr.
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   234
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   235
    "Created: / 08-06-2009 / 14:56:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   236
! !
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   237
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   238
!CmdLineParser methodsFor:'private'!
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   239
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   240
optionByLong:longName 
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   241
    ^ options 
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   242
        detect:[:option | option long = longName ]
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   243
        ifNone:[ 
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   244
            longName = 'help' 
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   245
                ifTrue:[self cmdlineOptionHelp]
20396
dd4549cee94c Command line parser refactored to be "more portable" to other dialects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20077
diff changeset
   246
                ifFalse:[ignoreUnknownOptions ifTrue:[nil] ifFalse:[CmdLineOptionError signal:'Unknown option: ' , longName ]]]
13402
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   247
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   248
    "Created: / 30-01-2009 / 09:15:24 / Jan Vrany <vranyj1@fel.cvut.cz>"
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   249
    "Modified: / 08-06-2009 / 14:57:42 / Jan Vrany <vranyj1@fel.cvut.cz>"
20396
dd4549cee94c Command line parser refactored to be "more portable" to other dialects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20077
diff changeset
   250
    "Modified: / 07-09-2016 / 16:53:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
13402
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   251
!
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   252
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   253
optionByShort:shortName 
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   254
    ^ options 
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   255
        detect:[:option | option short = shortName ]
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   256
        ifNone:
17467
d708d65cdca7 class: CmdLineParser
Claus Gittinger <cg@exept.de>
parents: 16455
diff changeset
   257
            [ shortName == $h 
13402
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   258
                ifTrue:[self cmdlineOptionHelp]
20396
dd4549cee94c Command line parser refactored to be "more portable" to other dialects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20077
diff changeset
   259
                ifFalse:[ignoreUnknownOptions ifTrue:[nil] ifFalse:[CmdLineOptionError signal:'Unknown option: ' , shortName ]]]
13402
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   260
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   261
    "Created: / 30-01-2009 / 09:16:51 / Jan Vrany <vranyj1@fel.cvut.cz>"
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   262
    "Modified: / 08-06-2009 / 14:58:14 / Jan Vrany <vranyj1@fel.cvut.cz>"
20396
dd4549cee94c Command line parser refactored to be "more portable" to other dialects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20077
diff changeset
   263
    "Modified: / 07-09-2016 / 16:53:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
13402
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   264
!
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   265
20077
e0e720fce465 CmdLineParser refactored to allow both `--long-option=value` and `--long-option value` forms
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20076
diff changeset
   266
parse:argv startingAt:index 
20076
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
   267
    "Parses arg at index. Returns an index of next arg to be parsed. If the options
20077
e0e720fce465 CmdLineParser refactored to allow both `--long-option=value` and `--long-option value` forms
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20076
diff changeset
   268
     is not recognized (i.e., is unknown), then either an error is triggered
20076
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
   269
     (when ignoreInknownOptions is false) or 0 is returned (when ignoreInknownOptions
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
   270
     is true)"
13402
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   271
    
20077
e0e720fce465 CmdLineParser refactored to allow both `--long-option=value` and `--long-option value` forms
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20076
diff changeset
   272
    | arg  option  param |
13402
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   273
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   274
    arg := argv at:index.
20076
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
   275
    arg second ~= $- ifTrue:[
20396
dd4549cee94c Command line parser refactored to be "more portable" to other dialects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20077
diff changeset
   276
        " Short option or bunch of those "
13402
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   277
        2 to:arg size do:[:subIndex | 
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   278
            option := self optionByShort:(arg at:subIndex).
20077
e0e720fce465 CmdLineParser refactored to allow both `--long-option=value` and `--long-option value` forms
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20076
diff changeset
   279
            option notNil ifTrue:[
20076
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
   280
                option hasParam ifFalse:[
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
   281
                    option process
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
   282
                ] ifTrue:[
20396
dd4549cee94c Command line parser refactored to be "more portable" to other dialects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20077
diff changeset
   283
                    " Do additional check, if this short option is last."
20076
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
   284
                    ((subIndex ~= arg size) or:[ (argv size) < (index + 1) ]) ifTrue:[
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
   285
                        self errorOptionRequiresArgument:option
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
   286
                    ].
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
   287
                    param := (argv at:index + 1).
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
   288
                    option process:param.
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
   289
                    ^ index + 2
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
   290
                ]
20077
e0e720fce465 CmdLineParser refactored to allow both `--long-option=value` and `--long-option value` forms
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20076
diff changeset
   291
            ] ifFalse:[ ^ 0 ].
20076
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
   292
        ].
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
   293
        ^ index + 1
20077
e0e720fce465 CmdLineParser refactored to allow both `--long-option=value` and `--long-option value` forms
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20076
diff changeset
   294
    ] ifFalse:[
20396
dd4549cee94c Command line parser refactored to be "more portable" to other dialects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20077
diff changeset
   295
        " Long option starting with -- "
13402
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   296
        | equalPos |
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   297
20077
e0e720fce465 CmdLineParser refactored to allow both `--long-option=value` and `--long-option value` forms
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20076
diff changeset
   298
        equalPos := arg indexOf:$=.
e0e720fce465 CmdLineParser refactored to allow both `--long-option=value` and `--long-option value` forms
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20076
diff changeset
   299
        equalPos ~~ 0 ifTrue:[ 
e0e720fce465 CmdLineParser refactored to allow both `--long-option=value` and `--long-option value` forms
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20076
diff changeset
   300
            option := self optionByLong:(arg copyFrom:3 to: equalPos - 1)
e0e720fce465 CmdLineParser refactored to allow both `--long-option=value` and `--long-option value` forms
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20076
diff changeset
   301
        ] ifFalse:[ 
e0e720fce465 CmdLineParser refactored to allow both `--long-option=value` and `--long-option value` forms
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20076
diff changeset
   302
            option := self optionByLong:(arg copyFrom:3).
e0e720fce465 CmdLineParser refactored to allow both `--long-option=value` and `--long-option value` forms
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20076
diff changeset
   303
        ].
e0e720fce465 CmdLineParser refactored to allow both `--long-option=value` and `--long-option value` forms
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20076
diff changeset
   304
        option notNil ifTrue:[
e0e720fce465 CmdLineParser refactored to allow both `--long-option=value` and `--long-option value` forms
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20076
diff changeset
   305
            ^ option parseL: argv startingAt: index equalCharPosition: equalPos
e0e720fce465 CmdLineParser refactored to allow both `--long-option=value` and `--long-option value` forms
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20076
diff changeset
   306
        ] ifFalse:[ 
e0e720fce465 CmdLineParser refactored to allow both `--long-option=value` and `--long-option value` forms
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20076
diff changeset
   307
            ^ 0
e0e720fce465 CmdLineParser refactored to allow both `--long-option=value` and `--long-option value` forms
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20076
diff changeset
   308
        ].
e0e720fce465 CmdLineParser refactored to allow both `--long-option=value` and `--long-option value` forms
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20076
diff changeset
   309
    ].
13402
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   310
20076
ff2f4d06a2fa CmdLineParser refactored and added an option to ignore unknown options
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19989
diff changeset
   311
    "Created: / 28-06-2016 / 23:55:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
20077
e0e720fce465 CmdLineParser refactored to allow both `--long-option=value` and `--long-option value` forms
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20076
diff changeset
   312
    "Modified: / 29-06-2016 / 17:01:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
20396
dd4549cee94c Command line parser refactored to be "more portable" to other dialects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20077
diff changeset
   313
    "Modified (comment): / 07-09-2016 / 16:24:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
13402
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   314
! !
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   315
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   316
!CmdLineParser class methodsFor:'documentation'!
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   317
13937
7eda055b6a4e Updated from SVN
vrany
parents: 13483
diff changeset
   318
version
17467
d708d65cdca7 class: CmdLineParser
Claus Gittinger <cg@exept.de>
parents: 16455
diff changeset
   319
    ^'$Header: /cvs/stx/stx/libbasic/CmdLineParser.st,v 1.5 2015-02-13 22:48:41 cg Exp $'
13402
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   320
!
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   321
19988
148721e96482 Added convenience methods to build CmdLineOptions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 18120
diff changeset
   322
version_HG
148721e96482 Added convenience methods to build CmdLineOptions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 18120
diff changeset
   323
148721e96482 Added convenience methods to build CmdLineOptions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 18120
diff changeset
   324
    ^ '$Changeset: <not expanded> $'
148721e96482 Added convenience methods to build CmdLineOptions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 18120
diff changeset
   325
!
148721e96482 Added convenience methods to build CmdLineOptions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 18120
diff changeset
   326
13402
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   327
version_SVN
17467
d708d65cdca7 class: CmdLineParser
Claus Gittinger <cg@exept.de>
parents: 16455
diff changeset
   328
    ^ '$Id: CmdLineParser.st,v 1.5 2015-02-13 22:48:41 cg Exp $'
13402
2d18a79f3fcc Added command line parsing stuff
vrany
parents:
diff changeset
   329
! !
16455
cfac905b4275 class: CmdLineParser
Claus Gittinger <cg@exept.de>
parents: 13937
diff changeset
   330