parse-argv 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.yardopts +5 -0
- data/LICENSE +28 -0
- data/ReadMe.md +101 -0
- data/examples/ReadMe.md +29 -0
- data/examples/check.rb +109 -0
- data/examples/conversion.rb +47 -0
- data/examples/multi.rb +79 -0
- data/examples/simple.rb +37 -0
- data/lib/parse-argv/conversion.rb +398 -0
- data/lib/parse-argv/version.rb +8 -0
- data/lib/parse-argv.rb +900 -0
- data/lib/parse_argv.rb +3 -0
- data/syntax.md +158 -0
- metadata +70 -0
data/lib/parse_argv.rb
ADDED
data/syntax.md
ADDED
@@ -0,0 +1,158 @@
|
|
1
|
+
# ParseArgv Syntax
|
2
|
+
|
3
|
+
- [Help Text Syntax](#help-text-syntax)
|
4
|
+
- [Command Line Syntax](#command-line-syntax)
|
5
|
+
|
6
|
+
## Help Text Syntax
|
7
|
+
|
8
|
+
A help text must follow these simple rules:
|
9
|
+
|
10
|
+
• All help text should be designed to be presented to the user as command line help.
|
11
|
+
|
12
|
+
• A command is recognized by a line with the following pattern:
|
13
|
+
```
|
14
|
+
usage: command
|
15
|
+
```
|
16
|
+
|
17
|
+
• A subcommand is recognized by a line with the following pattern:
|
18
|
+
```
|
19
|
+
usage: command subcommand
|
20
|
+
```
|
21
|
+
|
22
|
+
• Command line arguments must be enclosed with less-than/greater-than characters (`<` and `>`).
|
23
|
+
```
|
24
|
+
usage: command <argument>
|
25
|
+
```
|
26
|
+
|
27
|
+
• Optional arguments are enclosed in square brackets (`[` and `]`).
|
28
|
+
```
|
29
|
+
usage: command [<argument>]
|
30
|
+
```
|
31
|
+
|
32
|
+
• Arguments to be collected in arrays are marked with three dots at the end.
|
33
|
+
```
|
34
|
+
usage: command <argument>...
|
35
|
+
```
|
36
|
+
```
|
37
|
+
usage: command [<argument>...]
|
38
|
+
```
|
39
|
+
|
40
|
+
• Options start after any number of spaces with a stroke (`-`) and a single letter, or two strokes (`--`)and a word, which must be followed by a descriptive text.
|
41
|
+
```
|
42
|
+
-s this is a boolean option (switch)
|
43
|
+
```
|
44
|
+
```
|
45
|
+
--switch this is a boolean option (switch)
|
46
|
+
```
|
47
|
+
|
48
|
+
• Options that are to be specified both as a word and its abbreviation can be combined with a comma (`,`).
|
49
|
+
```
|
50
|
+
-s, --switch this is a boolean option (switch)
|
51
|
+
```
|
52
|
+
|
53
|
+
• Options that require an argument additionally define the name of the argument after the declaration, enclosed with less-than/greater-than characters (`<` and `>`).
|
54
|
+
```
|
55
|
+
-o <option> this is an option with the argument named "option"
|
56
|
+
```
|
57
|
+
```
|
58
|
+
--opt <option> this is an option with the argument named "option"
|
59
|
+
```
|
60
|
+
```
|
61
|
+
-o, --opt <option> this is an option with the argument named "option"
|
62
|
+
```
|
63
|
+
|
64
|
+
• If multiple subcommands are to be defined (git-like commands), the individual commands can be separated with a line beginning with a `#` character.
|
65
|
+
```
|
66
|
+
usage: command
|
67
|
+
Options and helptext for "command" here...
|
68
|
+
|
69
|
+
#
|
70
|
+
|
71
|
+
This is the help text header for the subcommand
|
72
|
+
|
73
|
+
usage: command subcommand
|
74
|
+
Options and helptext for the subcommand here...
|
75
|
+
```
|
76
|
+
|
77
|
+
## Command Line Syntax
|
78
|
+
|
79
|
+
### Simple Arguments
|
80
|
+
|
81
|
+
A command line program using ParseArgv accepts all required and optional parameters as expected. The user will be notified of missing or excess parameters, if any.
|
82
|
+
|
83
|
+
Definition example:
|
84
|
+
|
85
|
+
```
|
86
|
+
usage: sample <infile> [<template>] <outfile>
|
87
|
+
```
|
88
|
+
|
89
|
+
The `<infile>` and `<outfile>` parameters are required. If they are not specified, the user will be notified.
|
90
|
+
|
91
|
+
```shell
|
92
|
+
sample ./source.md ./out.html
|
93
|
+
# ok, infile: "./source.md", outfile: "./out.html"
|
94
|
+
|
95
|
+
sample ./source.md
|
96
|
+
# error: "sample: argument missing - <outfile>"
|
97
|
+
```
|
98
|
+
|
99
|
+
If three parameters are specified in this example, the optional third parameter is also accepted.
|
100
|
+
|
101
|
+
```shell
|
102
|
+
sample ./source.md ./template.yaml ./out.html
|
103
|
+
# ok, infile: "./source.md", template: "./template.yaml", outfile: "./out.html"
|
104
|
+
```
|
105
|
+
|
106
|
+
If too many parameters are specified, the user will be notified.
|
107
|
+
|
108
|
+
```shell
|
109
|
+
sample ./source.md ./template.yaml ./out.html ./some.txt
|
110
|
+
# error: "sample: too many arguments"
|
111
|
+
```
|
112
|
+
|
113
|
+
### Options
|
114
|
+
|
115
|
+
Consider the following definition example:
|
116
|
+
|
117
|
+
```
|
118
|
+
usage: sample <infile>
|
119
|
+
|
120
|
+
options:
|
121
|
+
-o, --out <outfile> specify output file name
|
122
|
+
-t, --template <template> use given template
|
123
|
+
-c. --colors enable color mode
|
124
|
+
-v, --verbose enable verbose mode
|
125
|
+
```
|
126
|
+
|
127
|
+
Here the user must specify a `<infile>` parameter, can add optional (named) arguments (`<outfile>` and `<template>`) and select parameterless options (`<colors>` and `verbose`).
|
128
|
+
|
129
|
+
Since `<infile>`is a required argument, it must always be specified, all other specifications are optional.
|
130
|
+
|
131
|
+
```shell
|
132
|
+
sample ./source.md
|
133
|
+
# ok, infile: "./source.md"
|
134
|
+
|
135
|
+
sample ./source.md --out ./result.html -c
|
136
|
+
# ok, infile: "./source.md", outfile: "./result.html", colors: true
|
137
|
+
```
|
138
|
+
|
139
|
+
The short forms of the options can also be combined.
|
140
|
+
|
141
|
+
```shell
|
142
|
+
sample ./source.md -voc ./result.html
|
143
|
+
# ok, infile: "./source.md", outfile: "./result.html", colors: true, verbose: true
|
144
|
+
```
|
145
|
+
|
146
|
+
To write down the affiliation of named parameters more clearly, the following notation is allowed.
|
147
|
+
|
148
|
+
```shell
|
149
|
+
sample ./source.md --out:./result.html -t=nice.yaml
|
150
|
+
# ok, infile: "./source.md", outfile: "./result.html", template: "nice.yaml"
|
151
|
+
```
|
152
|
+
|
153
|
+
Parameterless options can be understood as switches. Therefore it is possible to write them down like this:
|
154
|
+
|
155
|
+
```shell
|
156
|
+
sample ./source.md --colors:on -v:off
|
157
|
+
# ok, infile: "./source.md", colors: true, verbose: false
|
158
|
+
```
|
metadata
ADDED
@@ -0,0 +1,70 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: parse-argv
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Mike Blumtritt
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2022-11-26 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: |
|
14
|
+
Just write the help text for your application and ParseArgv will take care
|
15
|
+
of your command line. It works sort of the other way around than OptParse,
|
16
|
+
where you write a lot of code to get a command line parser and generated
|
17
|
+
help text. ParseArgv simply takes your help text and parses the command
|
18
|
+
line and presents you the results.
|
19
|
+
|
20
|
+
You can use ParseArgv for simpler programs just as well as for CLI with
|
21
|
+
multi-level sub-commands (git-like commands). ParseArgv is easy to use,
|
22
|
+
fast and also helps you convert the data types of command line arguments.
|
23
|
+
email:
|
24
|
+
executables: []
|
25
|
+
extensions: []
|
26
|
+
extra_rdoc_files:
|
27
|
+
- ReadMe.md
|
28
|
+
- syntax.md
|
29
|
+
- LICENSE
|
30
|
+
files:
|
31
|
+
- ".yardopts"
|
32
|
+
- LICENSE
|
33
|
+
- ReadMe.md
|
34
|
+
- examples/ReadMe.md
|
35
|
+
- examples/check.rb
|
36
|
+
- examples/conversion.rb
|
37
|
+
- examples/multi.rb
|
38
|
+
- examples/simple.rb
|
39
|
+
- lib/parse-argv.rb
|
40
|
+
- lib/parse-argv/conversion.rb
|
41
|
+
- lib/parse-argv/version.rb
|
42
|
+
- lib/parse_argv.rb
|
43
|
+
- syntax.md
|
44
|
+
homepage: https://github.com/mblumtritt/parse-argv
|
45
|
+
licenses:
|
46
|
+
- BSD-3-Clause
|
47
|
+
metadata:
|
48
|
+
source_code_uri: https://github.com/mblumtritt/parse-argv
|
49
|
+
bug_tracker_uri: https://github.com/mblumtritt/parse-argv/issues
|
50
|
+
documentation_uri: https://rubydoc.info/gems/parse-argv
|
51
|
+
post_install_message:
|
52
|
+
rdoc_options: []
|
53
|
+
require_paths:
|
54
|
+
- lib
|
55
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
56
|
+
requirements:
|
57
|
+
- - ">="
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: 2.7.0
|
60
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
61
|
+
requirements:
|
62
|
+
- - ">="
|
63
|
+
- !ruby/object:Gem::Version
|
64
|
+
version: '0'
|
65
|
+
requirements: []
|
66
|
+
rubygems_version: 3.3.26
|
67
|
+
signing_key:
|
68
|
+
specification_version: 4
|
69
|
+
summary: A command line parser that only needs your help text.
|
70
|
+
test_files: []
|