shellopts 2.0.0.pre.1 → 2.0.0.pre.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/TODO +3 -0
- data/lib/shellopts.rb +3 -0
- data/lib/shellopts/args.rb +36 -0
- data/lib/shellopts/shellopts.rb +4 -2
- data/lib/shellopts/version.rb +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 79a36712cf9c41a500726cd042d9932f1c6ed7f7e7a334d5d245e0ad31185c75
|
4
|
+
data.tar.gz: ddeec0f65a4d8e4250cbc9d1332626395c135d0c4e34d879fafcfb89b492699a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2890ba5f277385eb8cc30a9e168d618f3633278cc41066c302ed82d7be46eeefb5a30f41a2471947bc78a0e55e8219cc472887a91b9d753a6687dfda605231e6
|
7
|
+
data.tar.gz: a02ecb6e6613163f2915125ea0cd71cab30c7fd3c11f840a99bad0cb27b6a14dad0b3c806d55f8ab752e4f7921731cab0753c562499b7c88eeb8e5e8400efaab
|
data/TODO
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
|
2
2
|
TODO
|
3
|
+
o Remove ! from OptionStruct#subcommand return value. We know we're
|
4
|
+
processing commands so there is no need to have a distinct name and it
|
5
|
+
feels a lot more intuitive without it
|
3
6
|
o Add validation block to ShellOpts class methods
|
4
7
|
o Get rid of key_name. Define #name on Grammar::Node instead
|
5
8
|
o Define #name to the string name of the option/command without prefixed '--'
|
data/lib/shellopts.rb
CHANGED
@@ -40,6 +40,9 @@ PROGRAM = File.basename($PROGRAM_NAME)
|
|
40
40
|
# hash, args = ShellOpts.as_hash(USAGE, ARGV)
|
41
41
|
# struct, args = ShellOpts.as_struct(USAGE, ARGV)
|
42
42
|
#
|
43
|
+
# +args+ is a ShellOpts::Argv object containing the the remaning command line
|
44
|
+
# arguments. Argv is derived from Array
|
45
|
+
#
|
43
46
|
# ShellOpts can raise the exception CompilerError is there is an error in the
|
44
47
|
# USAGE string. If there is an error in the user supplied command line, #error
|
45
48
|
# is called instead and the program terminates with exit code 1. ShellOpts
|
@@ -0,0 +1,36 @@
|
|
1
|
+
|
2
|
+
module ShellOpts
|
3
|
+
class Args < Array
|
4
|
+
def initialize(shellopts, *args)
|
5
|
+
@shellopts = shellopts
|
6
|
+
super(*args)
|
7
|
+
end
|
8
|
+
|
9
|
+
# Remove and return +count+ elements from the beginning of the array.
|
10
|
+
# Elements are removed from the end of the array if +count+ is less than 0.
|
11
|
+
# Expects at least +count.abs+ elements in the array
|
12
|
+
def extract(count, message = nil)
|
13
|
+
self.size >= count.abs or inoa(message)
|
14
|
+
start = count >= 0 ? 0 : size + count
|
15
|
+
slice!(start, count.abs)
|
16
|
+
end
|
17
|
+
|
18
|
+
# Shifts +count+ elements from the array. Expects exactly +count+ elements
|
19
|
+
# in the array
|
20
|
+
def expect(count, message = nil)
|
21
|
+
self.size == count or inoa(message)
|
22
|
+
self
|
23
|
+
end
|
24
|
+
|
25
|
+
# Eats rest of the elements. Expects at least +min+ elements
|
26
|
+
def consume(count, message = nil)
|
27
|
+
self.size >= count or inoa(message)
|
28
|
+
self
|
29
|
+
end
|
30
|
+
|
31
|
+
private
|
32
|
+
def inoa(message = nil)
|
33
|
+
@shellopts.messenger.error(message || "Illegal number of arguments")
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
data/lib/shellopts/shellopts.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
|
2
2
|
require "shellopts"
|
3
3
|
|
4
|
+
require "shellopts/args.rb"
|
5
|
+
|
4
6
|
# TODO
|
5
7
|
#
|
6
8
|
# PROCESSING
|
@@ -78,8 +80,8 @@ module ShellOpts
|
|
78
80
|
# Return a struct representation of the options. See {ShellOpts::OptionStruct}
|
79
81
|
def to_struct(use: :key, aliases: {}) @idr.to_struct(use: use, aliases: aliases) end
|
80
82
|
|
81
|
-
# List of remaining non-option command line arguments.
|
82
|
-
def args()
|
83
|
+
# List of remaining non-option command line arguments. Returns a Argv object
|
84
|
+
def args() Args.new(self, ast&.arguments) end
|
83
85
|
|
84
86
|
# Iterate options and commands as name/value pairs. Same as +to_a.each+
|
85
87
|
def each(&block) to_a.each(&block) end
|
data/lib/shellopts/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: shellopts
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.0.pre.
|
4
|
+
version: 2.0.0.pre.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Claus Rasmussen
|
@@ -106,6 +106,7 @@ files:
|
|
106
106
|
- doc/stylesheet.css
|
107
107
|
- lib/ext/array.rb
|
108
108
|
- lib/shellopts.rb
|
109
|
+
- lib/shellopts/args.rb
|
109
110
|
- lib/shellopts/ast/command.rb
|
110
111
|
- lib/shellopts/ast/node.rb
|
111
112
|
- lib/shellopts/ast/option.rb
|