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