shellopts 2.6.0 → 2.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/shellopts/formatter.rb +8 -3
- data/lib/shellopts/program.rb +1 -1
- data/lib/shellopts/renderer.rb +0 -2
- data/lib/shellopts/version.rb +1 -1
- data/lib/shellopts.rb +16 -22
- data/main +4 -5
- data/shellopts.gemspec +1 -1
- metadata +5 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 748ee614d04e02eba7403bac64442003fb13e4aff85ffc58ea73341085f3e46f
|
4
|
+
data.tar.gz: 69397e8840bf8b0358df8bd08d67abb2f526d12a9154721f5077802cbd0a6be1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c5b95a7f18af672410263bf5a2d2ebbb8664bc26b087da915d120319f26c20fe14547540ce7e582998881940fded76a2f85a8bd5df4cbc2f235d8cda88c4ec6c
|
7
|
+
data.tar.gz: e149c65a40dc75c8f1f17d3248e2e29e8686973d07dae4ddb4326d5d767c8101ed37b8d589807a9409b69e1c98931887cb085a8edbbdd79d5273f60b5903b929
|
data/lib/shellopts/formatter.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require 'tty-screen'
|
2
2
|
|
3
3
|
module ShellOpts
|
4
4
|
module Grammar
|
@@ -296,8 +296,13 @@ module ShellOpts
|
|
296
296
|
end
|
297
297
|
|
298
298
|
def self.width()
|
299
|
-
|
300
|
-
|
299
|
+
begin
|
300
|
+
_stdout = $stdout # TTY::Screen use $stdout but that can be a StringIO object without ioctl
|
301
|
+
$stdout = STDOUT if !$stdout.respond_to? :ioctl
|
302
|
+
@width ||= TTY::Screen.width - MARGIN_RIGHT
|
303
|
+
ensure
|
304
|
+
$stdout = _stdout
|
305
|
+
end
|
301
306
|
end
|
302
307
|
|
303
308
|
# Used in rspec
|
data/lib/shellopts/program.rb
CHANGED
@@ -6,7 +6,7 @@ module ShellOpts
|
|
6
6
|
# BasicObject to have only a minimum of inherited member methods.
|
7
7
|
#
|
8
8
|
# The names of the inherited methods can't be used as options or
|
9
|
-
# command
|
9
|
+
# command names. They are: instance_eval, instance_exec method_missing,
|
10
10
|
# singleton_method_added, singleton_method_removed, and
|
11
11
|
# singleton_method_undefined.
|
12
12
|
#
|
data/lib/shellopts/renderer.rb
CHANGED
data/lib/shellopts/version.rb
CHANGED
data/lib/shellopts.rb
CHANGED
@@ -89,6 +89,9 @@ module ShellOpts
|
|
89
89
|
# Name of program. Defaults to the name of the executable
|
90
90
|
attr_reader :name
|
91
91
|
|
92
|
+
# Executable. Default $PROGRAM_NAME
|
93
|
+
attr_reader :file
|
94
|
+
|
92
95
|
# Specification (String). Initialized by #compile
|
93
96
|
attr_reader :spec
|
94
97
|
|
@@ -133,14 +136,11 @@ module ShellOpts
|
|
133
136
|
# message and exit
|
134
137
|
attr_accessor :exception
|
135
138
|
|
136
|
-
# File of source
|
137
|
-
attr_reader :file
|
138
|
-
|
139
139
|
# Debug: Internal variables made public
|
140
140
|
attr_reader :tokens
|
141
141
|
alias_method :ast, :grammar
|
142
142
|
|
143
|
-
def initialize(name: nil,
|
143
|
+
def initialize(name: nil, file: $PROGRAM_NAME,
|
144
144
|
# Options
|
145
145
|
help: true,
|
146
146
|
version: true,
|
@@ -149,7 +149,7 @@ module ShellOpts
|
|
149
149
|
verbose: nil,
|
150
150
|
debug: nil,
|
151
151
|
|
152
|
-
# Version number (
|
152
|
+
# Version number (auto-detected for gem packages)
|
153
153
|
version_number: nil,
|
154
154
|
|
155
155
|
# Floating options
|
@@ -159,14 +159,15 @@ module ShellOpts
|
|
159
159
|
exception: false
|
160
160
|
)
|
161
161
|
|
162
|
-
@name = name || File.basename(
|
162
|
+
@name = name || File.basename(file)
|
163
|
+
@file = file
|
163
164
|
@help = help
|
164
|
-
@
|
165
|
+
@version_number = version_number || (version && find_version_number)
|
166
|
+
@version = !@version_number.nil? && version
|
165
167
|
@silent = silent
|
166
168
|
@quiet = quiet
|
167
169
|
@verbose = verbose
|
168
170
|
@debug = debug
|
169
|
-
@version_number = version_number || find_version_number
|
170
171
|
@float = float
|
171
172
|
@exception = exception
|
172
173
|
end
|
@@ -177,19 +178,18 @@ module ShellOpts
|
|
177
178
|
handle_exceptions {
|
178
179
|
@oneline = spec.index("\n").nil?
|
179
180
|
@spec = spec.sub(/^\s*\n/, "")
|
180
|
-
@file = find_caller_file
|
181
181
|
@tokens = Lexer.lex(name, @spec, @oneline)
|
182
182
|
ast = Parser.parse(tokens)
|
183
183
|
|
184
184
|
help_spec = (@help == true ? "-h,help" : @help)
|
185
185
|
version_spec = (@version == true ? "--version" : @version)
|
186
|
-
silent_spec = (@silent == true ? "
|
186
|
+
silent_spec = (@silent == true ? "--silent" : @silent)
|
187
187
|
quiet_spec = (@quiet == true ? "-q,quiet" : @quiet)
|
188
188
|
verbose_spec = (@verbose == true ? "+v,verbose" : @verbose)
|
189
189
|
debug_spec = (@debug == true ? "--debug" : @debug)
|
190
190
|
|
191
191
|
@silent_option =
|
192
|
-
ast.inject_option(silent_spec, "
|
192
|
+
ast.inject_option(silent_spec, "Silent", "Do not write anything to standard output/error") if @silent
|
193
193
|
@quiet_option =
|
194
194
|
ast.inject_option(quiet_spec, "Quiet", "Do not write anything to standard output") if @quiet
|
195
195
|
@verbose_option =
|
@@ -311,10 +311,8 @@ module ShellOpts
|
|
311
311
|
|
312
312
|
private
|
313
313
|
def find_version_number
|
314
|
-
|
315
|
-
|
316
|
-
IO.read(file).sub(/^.*VERSION\s*=\s*"(.*?)".*$/m, '\1') or
|
317
|
-
raise ArgumentError, "ShellOpts needs an explicit version"
|
314
|
+
version_rb = Dir.glob(File.dirname(file) + "/../lib/*/version.rb").first or return nil
|
315
|
+
IO.readlines(version_rb).grep(/^.*VERSfION\s*=\s*"(.*?)".*$/) { $1 }.first
|
318
316
|
end
|
319
317
|
|
320
318
|
def handle_exceptions(&block)
|
@@ -334,10 +332,6 @@ module ShellOpts
|
|
334
332
|
end
|
335
333
|
end
|
336
334
|
|
337
|
-
def find_caller_file
|
338
|
-
caller.reverse.select { |line| line !~ /^\s*#{__FILE__}:/ }.last.sub(/:.*/, "").sub(/^\.\//, "")
|
339
|
-
end
|
340
|
-
|
341
335
|
def self.compare_lines(text, spec)
|
342
336
|
return true if text == spec
|
343
337
|
return true if text =~ /[#\$\\]/
|
@@ -495,9 +489,9 @@ module ShellOpts
|
|
495
489
|
def self.is_included?() @is_included end
|
496
490
|
def self.included(...) @is_included = true; super end
|
497
491
|
|
498
|
-
def notice(message) ::ShellOpts.notice(message) end
|
499
|
-
def mesg(message) ::ShellOpts.mesg(message) end
|
500
|
-
def verb(level = 1, message) ::ShellOpts.verb(level, message) end
|
492
|
+
def notice(message, **opts) ::ShellOpts.notice(message, **opts) end
|
493
|
+
def mesg(message, **opts) ::ShellOpts.mesg(message, **opts) end
|
494
|
+
def verb(level = 1, message, **opts) ::ShellOpts.verb(level, message, **opts) end
|
501
495
|
end
|
502
496
|
|
503
497
|
module Debug
|
data/main
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
|
3
|
+
#$LOAD_PATH.unshift "#{Dir.getwd}/lib"
|
4
4
|
|
5
|
-
|
5
|
+
require_relative 'lib/shellopts.rb'
|
6
6
|
|
7
7
|
#include ShellOpts::Message
|
8
8
|
include ShellOpts::Verbose
|
@@ -10,7 +10,6 @@ include ShellOpts::Verbose
|
|
10
10
|
|
11
11
|
#include ShellOpts::Messages
|
12
12
|
#p ShellOpts::Messages.is_included?
|
13
|
-
|
14
13
|
SPEC = %(
|
15
14
|
Test
|
16
15
|
|
@@ -18,12 +17,12 @@ SPEC = %(
|
|
18
17
|
An option
|
19
18
|
)
|
20
19
|
|
21
|
-
opts, args = ShellOpts.process(SPEC, ARGV, version: "--ver", version_number: "1.2.3"
|
20
|
+
opts, args = ShellOpts.process(SPEC, ARGV, version: "--ver", version_number: "1.2.3")
|
22
21
|
|
23
22
|
verb "Verbose default"
|
24
23
|
(0..3).each { |i| verb i, "Verbose #{i}" }
|
25
24
|
mesg "Message"
|
26
25
|
notice "Notice"
|
27
26
|
#debug "Debug"
|
28
|
-
|
27
|
+
puts ShellOpts.instance.version_number
|
29
28
|
|
data/shellopts.gemspec
CHANGED
@@ -25,8 +25,8 @@ Gem::Specification.new do |spec|
|
|
25
25
|
|
26
26
|
spec.add_dependency "forward_to"
|
27
27
|
spec.add_dependency "constrain"
|
28
|
-
spec.add_dependency "ruby-terminfo-r3"
|
29
28
|
spec.add_dependency "indented_io"
|
29
|
+
spec.add_dependency "tty-screen"
|
30
30
|
|
31
31
|
spec.add_development_dependency "rake"
|
32
32
|
spec.add_development_dependency "rspec"
|
metadata
CHANGED
@@ -1,14 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: shellopts
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.6.
|
4
|
+
version: 2.6.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Claus Rasmussen
|
8
|
-
autorequire:
|
9
8
|
bindir: exe
|
10
9
|
cert_chain: []
|
11
|
-
date:
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
12
11
|
dependencies:
|
13
12
|
- !ruby/object:Gem::Dependency
|
14
13
|
name: forward_to
|
@@ -39,7 +38,7 @@ dependencies:
|
|
39
38
|
- !ruby/object:Gem::Version
|
40
39
|
version: '0'
|
41
40
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
41
|
+
name: indented_io
|
43
42
|
requirement: !ruby/object:Gem::Requirement
|
44
43
|
requirements:
|
45
44
|
- - ">="
|
@@ -53,7 +52,7 @@ dependencies:
|
|
53
52
|
- !ruby/object:Gem::Version
|
54
53
|
version: '0'
|
55
54
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
55
|
+
name: tty-screen
|
57
56
|
requirement: !ruby/object:Gem::Requirement
|
58
57
|
requirements:
|
59
58
|
- - ">="
|
@@ -159,7 +158,6 @@ files:
|
|
159
158
|
homepage: http://github.com/clrgit/shellopts
|
160
159
|
licenses: []
|
161
160
|
metadata: {}
|
162
|
-
post_install_message:
|
163
161
|
rdoc_options: []
|
164
162
|
require_paths:
|
165
163
|
- lib
|
@@ -174,8 +172,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
174
172
|
- !ruby/object:Gem::Version
|
175
173
|
version: '0'
|
176
174
|
requirements: []
|
177
|
-
rubygems_version: 3.
|
178
|
-
signing_key:
|
175
|
+
rubygems_version: 3.6.9
|
179
176
|
specification_version: 4
|
180
177
|
summary: Parse command line options and arguments
|
181
178
|
test_files: []
|