optix 1.0.3 → 1.1.0
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.
- data/README.md +3 -1
- data/Rakefile +1 -1
- data/lib/optix.rb +5 -8
- data/lib/optix/trollop.rb +8 -0
- data/lib/optix/version.rb +2 -2
- data/optix.gemspec +3 -0
- data/spec/spec_helper.rb +0 -16
- metadata +34 -7
data/README.md
CHANGED
@@ -8,7 +8,7 @@ Optix is an unobtrusive, composable command line parser based on Trollop.
|
|
8
8
|
* Lightweight, unobtrusive syntax.
|
9
9
|
No subclassing or introduction of dependencies.
|
10
10
|
|
11
|
-
*
|
11
|
+
* Nested subcommands such as `git remote show origin` may be composed at runtime in arbitrary order.
|
12
12
|
|
13
13
|
* Subcommands inherit from their parent. Common options (such as '--debug' or '--loglevel')
|
14
14
|
need to be declared only once to make them available to an entire branch.
|
@@ -18,6 +18,8 @@ Optix is an unobtrusive, composable command line parser based on Trollop.
|
|
18
18
|
|
19
19
|
* Automatic validation and help-screens.
|
20
20
|
|
21
|
+
* Should work on all major Ruby versions (tested on 1.9.3, 1.9.2 and 1.8.7).
|
22
|
+
|
21
23
|
* Strong test-suite.
|
22
24
|
|
23
25
|
## Installation
|
data/Rakefile
CHANGED
@@ -9,7 +9,7 @@ RSpec::Core::RakeTask.new("test:spec") do |t|
|
|
9
9
|
t.pattern = 'spec/*_spec.rb'
|
10
10
|
t.rcov = false
|
11
11
|
#t.rspec_opts = '-b -c -f progress --tag ~benchmark'
|
12
|
-
t.rspec_opts = '-b -c -f documentation --tag ~benchmark'
|
12
|
+
t.rspec_opts = '--fail-fast -b -c -f documentation --tag ~benchmark'
|
13
13
|
end
|
14
14
|
|
15
15
|
RSpec::Core::RakeTask.new("test:benchmark") do |t|
|
data/lib/optix.rb
CHANGED
@@ -59,24 +59,21 @@ class Optix
|
|
59
59
|
o[:params] = @@config[:text_param_subcommand]
|
60
60
|
end
|
61
61
|
|
62
|
-
text = o[:header].gsub('%0', $0)
|
63
|
-
.gsub('%command', cmdpath.join(' '))
|
64
|
-
.gsub('%params', o[:params])
|
65
|
-
.gsub(/ +/, ' ')
|
62
|
+
text = o[:header].gsub('%0', $0).gsub('%command', cmdpath.join(' ')).gsub('%params', o[:params]).gsub(/ +/, ' ')
|
66
63
|
|
67
64
|
calls = []
|
68
|
-
calls << [:
|
65
|
+
calls << [:nowrap, [text], nil]
|
69
66
|
|
70
67
|
calls << [:banner, [' '], nil]
|
71
68
|
unless o[:text].nil?
|
72
|
-
calls << [:banner, o[:text], nil]
|
69
|
+
calls << [:banner, [o[:text]], nil]
|
73
70
|
calls << [:banner, [' '], nil]
|
74
71
|
end
|
75
72
|
|
76
73
|
# sort opts and move non-opt calls to the end
|
77
74
|
non_opt = parent_calls.select {|x| x[0] != :opt }
|
78
|
-
parent_calls.select
|
79
|
-
parent_calls.sort! {|a,b| ; a[1][0] <=> b[1][0] }
|
75
|
+
parent_calls = parent_calls.select {|x| x[0] == :opt }
|
76
|
+
parent_calls.sort! {|a,b| ; a[1][0].to_s <=> b[1][0].to_s }
|
80
77
|
parent_calls += non_opt
|
81
78
|
parent_calls.unshift([:banner, [@@config[:text_header_options]], nil])
|
82
79
|
calls += parent_calls
|
data/lib/optix/trollop.rb
CHANGED
@@ -246,6 +246,9 @@ class Parser
|
|
246
246
|
def banner s; @order << [:text, s] end
|
247
247
|
alias :text :banner
|
248
248
|
|
249
|
+
## Adds text to the help display without wrapping.
|
250
|
+
def nowrap s; @order << [:nowrap, s] end
|
251
|
+
|
249
252
|
## Marks two (or more!) options as requiring each other. Only handles
|
250
253
|
## undirected (i.e., mutual) dependencies. Directed dependencies are
|
251
254
|
## better modeled with Trollop::die.
|
@@ -480,6 +483,11 @@ class Parser
|
|
480
483
|
next
|
481
484
|
end
|
482
485
|
|
486
|
+
if what == :nowrap
|
487
|
+
stream.puts opt
|
488
|
+
next
|
489
|
+
end
|
490
|
+
|
483
491
|
spec = @specs[opt]
|
484
492
|
#next if @no_help_help and opt == :help
|
485
493
|
stream.printf " %#{leftcol_width}s: ", left[opt]
|
data/lib/optix/version.rb
CHANGED
@@ -1,3 +1,3 @@
|
|
1
|
-
|
2
|
-
VERSION = "1.0
|
1
|
+
class Optix
|
2
|
+
VERSION = "1.1.0"
|
3
3
|
end
|
data/optix.gemspec
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -1,22 +1,6 @@
|
|
1
1
|
require 'simplecov'
|
2
2
|
SimpleCov.start
|
3
3
|
|
4
|
-
RSpec::Matchers.define :have_stdout do |regex|
|
5
|
-
define_method :has_stdout? do |actual|
|
6
|
-
regex = /^#{Regexp.escape(regex)}$/ if regex.is_a?(String)
|
7
|
-
|
8
|
-
$stdout = StringIO.new
|
9
|
-
actual.call
|
10
|
-
$stdout.rewind
|
11
|
-
captured = $stdout.read
|
12
|
-
|
13
|
-
$stdout = STDOUT
|
14
|
-
captured =~ regex
|
15
|
-
end
|
16
|
-
match { |actual| has_stdout?(actual) }
|
17
|
-
end
|
18
|
-
|
19
|
-
|
20
4
|
def capture_streams(stdin_str = '')
|
21
5
|
begin
|
22
6
|
require 'stringio'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: optix
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-07-
|
12
|
+
date: 2012-07-13 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: chronic
|
16
|
-
requirement: &
|
16
|
+
requirement: &4581720 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,32 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *4581720
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: rake
|
27
|
+
requirement: &4580900 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
type: :development
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *4580900
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: rspec
|
38
|
+
requirement: &4579220 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
44
|
+
type: :development
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *4579220
|
25
47
|
- !ruby/object:Gem::Dependency
|
26
48
|
name: simplecov
|
27
|
-
requirement: &
|
49
|
+
requirement: &4594820 !ruby/object:Gem::Requirement
|
28
50
|
none: false
|
29
51
|
requirements:
|
30
52
|
- - ! '>='
|
@@ -32,7 +54,7 @@ dependencies:
|
|
32
54
|
version: '0'
|
33
55
|
type: :development
|
34
56
|
prerelease: false
|
35
|
-
version_requirements: *
|
57
|
+
version_requirements: *4594820
|
36
58
|
description: Optix is an unobtrusive, composable command line parser.
|
37
59
|
email:
|
38
60
|
- moe@busyloop.net
|
@@ -65,12 +87,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
65
87
|
- - ! '>='
|
66
88
|
- !ruby/object:Gem::Version
|
67
89
|
version: '0'
|
90
|
+
segments:
|
91
|
+
- 0
|
92
|
+
hash: 1556456279788703897
|
68
93
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
69
94
|
none: false
|
70
95
|
requirements:
|
71
96
|
- - ! '>='
|
72
97
|
- !ruby/object:Gem::Version
|
73
98
|
version: '0'
|
99
|
+
segments:
|
100
|
+
- 0
|
101
|
+
hash: 1556456279788703897
|
74
102
|
requirements: []
|
75
103
|
rubyforge_project:
|
76
104
|
rubygems_version: 1.8.10
|
@@ -80,4 +108,3 @@ summary: Optix is an unobtrusive, composable command line parser.
|
|
80
108
|
test_files:
|
81
109
|
- spec/optix_spec.rb
|
82
110
|
- spec/spec_helper.rb
|
83
|
-
has_rdoc: false
|