rfix 1.0.15 → 1.1.0.pre.147
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/.gitignore +5 -0
- data/.rspec +0 -1
- data/.rubocop.yml +46 -31
- data/.travis.yml +5 -12
- data/Gemfile.base +10 -3
- data/Gemfile.base.lock +172 -0
- data/Gemfile.lock +28 -7
- data/Guardfile +1 -1
- data/Makefile +4 -13
- data/Rakefile +16 -95
- data/ci/Gemfile.rubocop-0.80.lock +16 -1
- data/ci/Gemfile.rubocop-0.81.lock +16 -1
- data/ci/Gemfile.rubocop-0.82.lock +16 -1
- data/ci/Gemfile.rubocop-0.83.lock +19 -4
- data/ci/Gemfile.rubocop-0.84.lock +19 -4
- data/ci/Gemfile.rubocop-0.85.1.lock +19 -4
- data/ci/Gemfile.rubocop-0.85.lock +16 -1
- data/exe/rfix +18 -144
- data/lib/rfix.rb +10 -3
- data/lib/rfix/box.rb +112 -0
- data/lib/rfix/branch.rb +30 -0
- data/lib/rfix/branches/base.rb +29 -0
- data/lib/rfix/branches/head.rb +11 -0
- data/lib/rfix/branches/main.rb +33 -0
- data/lib/rfix/branches/name.rb +21 -0
- data/lib/rfix/branches/reference.rb +19 -0
- data/lib/rfix/branches/upstream.rb +11 -0
- data/lib/rfix/cmd.rb +9 -14
- data/lib/rfix/commands/all.rb +26 -0
- data/lib/rfix/commands/branch.rb +15 -0
- data/lib/rfix/commands/extensions/options.rb +8 -0
- data/lib/rfix/commands/help.rb +7 -0
- data/lib/rfix/commands/helper/args.rb +137 -0
- data/lib/rfix/commands/helper/help.rb +6 -0
- data/lib/rfix/commands/helper/loader.rb +6 -0
- data/lib/rfix/commands/helper/option.rb +0 -0
- data/lib/rfix/commands/helper/params.rb +0 -0
- data/lib/rfix/commands/helper/rubocop.rb +17 -0
- data/lib/rfix/commands/info.rb +30 -0
- data/lib/rfix/commands/lint.rb +23 -0
- data/lib/rfix/commands/local.rb +12 -0
- data/lib/rfix/commands/origin.rb +19 -0
- data/lib/rfix/commands/setup.rb +29 -0
- data/lib/rfix/commands/welcome.rb +24 -0
- data/lib/rfix/deleted.rb +13 -0
- data/lib/rfix/error.rb +2 -0
- data/lib/rfix/extensions/extensions.rb +4 -26
- data/lib/rfix/extensions/offense.rb +2 -1
- data/lib/rfix/extensions/string.rb +8 -0
- data/lib/rfix/file.rb +46 -0
- data/lib/rfix/file_cache.rb +59 -0
- data/lib/rfix/formatter.rb +37 -10
- data/lib/rfix/git_helper.rb +13 -1
- data/lib/rfix/log.rb +104 -7
- data/lib/rfix/no_file.rb +13 -0
- data/lib/rfix/rake/paths.rb +50 -0
- data/lib/rfix/rake/support.rb +75 -0
- data/lib/rfix/repository.rb +201 -0
- data/lib/rfix/rfix.rb +7 -198
- data/lib/rfix/tracked.rb +76 -0
- data/lib/rfix/tracked_file.rb +1 -1
- data/lib/rfix/untracked.rb +13 -0
- data/lib/rfix/version.rb +1 -1
- data/path.rb +7 -0
- data/rfix.gemspec +6 -2
- data/rugged.rb +206 -0
- data/tasks/bump.rake +11 -0
- data/tasks/bundle.rake +17 -0
- data/tasks/complex.rake +54 -0
- data/tasks/simple.rake +58 -0
- data/tasks/travis.rake +74 -0
- data/tasks/vendor.rake +34 -0
- metadata +136 -13
- data/file.rb +0 -1
- data/lib/rfix/gem_helper.rb +0 -12
- data/lib/rfix/git_file.rb +0 -36
- data/lib/rfix/rake_helper.rb +0 -56
- data/lib/rfix/untracked_file.rb +0 -13
@@ -1,10 +1,13 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
rfix (1.0.
|
4
|
+
rfix (1.0.20)
|
5
|
+
cri (~> 2.15.10)
|
6
|
+
listen (~> 3.0)
|
5
7
|
rainbow (~> 3.0)
|
6
8
|
rouge (~> 3.20)
|
7
9
|
rubocop (>= 0.80)
|
10
|
+
rugged (~> 1.0.0)
|
8
11
|
|
9
12
|
GEM
|
10
13
|
remote: https://rubygems.org/
|
@@ -26,9 +29,11 @@ GEM
|
|
26
29
|
builder (3.2.4)
|
27
30
|
childprocess (4.0.0)
|
28
31
|
coderay (1.1.3)
|
32
|
+
colorize (0.8.1)
|
29
33
|
concurrent-ruby (1.1.6)
|
30
34
|
contracts (0.16.0)
|
31
|
-
|
35
|
+
cri (2.15.10)
|
36
|
+
cucumber (4.0.1)
|
32
37
|
builder (~> 3.2, >= 3.2.3)
|
33
38
|
cucumber-core (~> 7.0, >= 7.0.0)
|
34
39
|
cucumber-cucumber-expressions (~> 10.1, >= 10.1.0)
|
@@ -36,14 +41,14 @@ GEM
|
|
36
41
|
cucumber-html-formatter (~> 6.0, >= 6.0.1)
|
37
42
|
cucumber-messages (~> 12.1, >= 12.1.1)
|
38
43
|
cucumber-wire (~> 3.0, >= 3.0.0)
|
39
|
-
diff-lcs (~> 1.3, >= 1.3)
|
44
|
+
diff-lcs (~> 1.3, >= 1.3, < 1.4)
|
40
45
|
multi_test (~> 0.1, >= 0.1.2)
|
41
46
|
sys-uname (~> 1.0, >= 1.0.2)
|
42
47
|
cucumber-core (7.0.0)
|
43
48
|
cucumber-gherkin (~> 13.0, >= 13.0.0)
|
44
49
|
cucumber-messages (~> 12.1, >= 12.1.1)
|
45
50
|
cucumber-tag-expressions (~> 2.0, >= 2.0.4)
|
46
|
-
cucumber-cucumber-expressions (10.2.
|
51
|
+
cucumber-cucumber-expressions (10.2.1)
|
47
52
|
cucumber-gherkin (13.0.0)
|
48
53
|
cucumber-messages (~> 12.0, >= 12.0.0)
|
49
54
|
cucumber-html-formatter (6.0.3)
|
@@ -56,9 +61,13 @@ GEM
|
|
56
61
|
cucumber-cucumber-expressions (~> 10.1, >= 10.1.0)
|
57
62
|
cucumber-messages (~> 12.1, >= 12.1.1)
|
58
63
|
diff-lcs (1.3)
|
64
|
+
faker (2.13.0)
|
65
|
+
i18n (>= 1.6, < 2)
|
59
66
|
ffi (1.13.1)
|
60
67
|
formatador (0.2.5)
|
61
68
|
gem-release (2.1.1)
|
69
|
+
git (1.7.0)
|
70
|
+
rchardet (~> 1.8)
|
62
71
|
guard (2.16.2)
|
63
72
|
formatador (>= 0.2.4)
|
64
73
|
listen (>= 2.7, < 4.0)
|
@@ -103,6 +112,7 @@ GEM
|
|
103
112
|
rb-fsevent (0.10.4)
|
104
113
|
rb-inotify (0.10.1)
|
105
114
|
ffi (~> 1.0)
|
115
|
+
rchardet (1.8.0)
|
106
116
|
regexp_parser (1.7.1)
|
107
117
|
rexml (3.2.4)
|
108
118
|
rouge (3.20.0)
|
@@ -131,6 +141,7 @@ GEM
|
|
131
141
|
rubocop-ast (0.0.3)
|
132
142
|
parser (>= 2.7.0.1)
|
133
143
|
ruby-progressbar (1.10.1)
|
144
|
+
rugged (1.0.1)
|
134
145
|
shellany (0.0.1)
|
135
146
|
sys-uname (1.2.1)
|
136
147
|
ffi (>= 1.0.0)
|
@@ -146,9 +157,13 @@ PLATFORMS
|
|
146
157
|
|
147
158
|
DEPENDENCIES
|
148
159
|
aruba (~> 1.0)
|
160
|
+
colorize
|
161
|
+
faker
|
149
162
|
gem-release
|
163
|
+
git (~> 1.7.0)
|
150
164
|
guard
|
151
165
|
guard-rspec
|
166
|
+
pry
|
152
167
|
rake (~> 12.3)
|
153
168
|
rfix!
|
154
169
|
rspec (~> 3.0)
|
@@ -1,10 +1,13 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
rfix (1.0.
|
4
|
+
rfix (1.0.20)
|
5
|
+
cri (~> 2.15.10)
|
6
|
+
listen (~> 3.0)
|
5
7
|
rainbow (~> 3.0)
|
6
8
|
rouge (~> 3.20)
|
7
9
|
rubocop (>= 0.80)
|
10
|
+
rugged (~> 1.0.0)
|
8
11
|
|
9
12
|
GEM
|
10
13
|
remote: https://rubygems.org/
|
@@ -26,8 +29,10 @@ GEM
|
|
26
29
|
builder (3.2.4)
|
27
30
|
childprocess (4.0.0)
|
28
31
|
coderay (1.1.3)
|
32
|
+
colorize (0.8.1)
|
29
33
|
concurrent-ruby (1.1.6)
|
30
34
|
contracts (0.16.0)
|
35
|
+
cri (2.15.10)
|
31
36
|
cucumber (4.0.0)
|
32
37
|
builder (~> 3.2, >= 3.2.3)
|
33
38
|
cucumber-core (~> 7.0, >= 7.0.0)
|
@@ -56,9 +61,13 @@ GEM
|
|
56
61
|
cucumber-cucumber-expressions (~> 10.1, >= 10.1.0)
|
57
62
|
cucumber-messages (~> 12.1, >= 12.1.1)
|
58
63
|
diff-lcs (1.3)
|
64
|
+
faker (2.13.0)
|
65
|
+
i18n (>= 1.6, < 2)
|
59
66
|
ffi (1.13.1)
|
60
67
|
formatador (0.2.5)
|
61
68
|
gem-release (2.1.1)
|
69
|
+
git (1.7.0)
|
70
|
+
rchardet (~> 1.8)
|
62
71
|
guard (2.16.2)
|
63
72
|
formatador (>= 0.2.4)
|
64
73
|
listen (>= 2.7, < 4.0)
|
@@ -103,6 +112,7 @@ GEM
|
|
103
112
|
rb-fsevent (0.10.4)
|
104
113
|
rb-inotify (0.10.1)
|
105
114
|
ffi (~> 1.0)
|
115
|
+
rchardet (1.8.0)
|
106
116
|
regexp_parser (1.7.1)
|
107
117
|
rexml (3.2.4)
|
108
118
|
rouge (3.20.0)
|
@@ -131,6 +141,7 @@ GEM
|
|
131
141
|
rubocop-ast (0.0.3)
|
132
142
|
parser (>= 2.7.0.1)
|
133
143
|
ruby-progressbar (1.10.1)
|
144
|
+
rugged (1.0.1)
|
134
145
|
shellany (0.0.1)
|
135
146
|
sys-uname (1.2.1)
|
136
147
|
ffi (>= 1.0.0)
|
@@ -146,9 +157,13 @@ PLATFORMS
|
|
146
157
|
|
147
158
|
DEPENDENCIES
|
148
159
|
aruba (~> 1.0)
|
160
|
+
colorize
|
161
|
+
faker
|
149
162
|
gem-release
|
163
|
+
git (~> 1.7.0)
|
150
164
|
guard
|
151
165
|
guard-rspec
|
166
|
+
pry
|
152
167
|
rake (~> 12.3)
|
153
168
|
rfix!
|
154
169
|
rspec (~> 3.0)
|
data/exe/rfix
CHANGED
@@ -1,156 +1,30 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
|
4
|
-
|
3
|
+
require "cri"
|
5
4
|
require "rfix"
|
5
|
+
require "rfix/log"
|
6
6
|
require "rubocop"
|
7
|
-
require "rfix/
|
8
|
-
require "
|
9
|
-
|
10
|
-
|
11
|
-
limit_files = false
|
12
|
-
options = RuboCop::Options.new
|
13
|
-
|
14
|
-
display_help = ARGV.include?("--help")
|
15
|
-
is_dry = ARGV.include?("--dry")
|
16
|
-
config_path = false
|
17
|
-
clear_cache = false
|
18
|
-
|
19
|
-
extend Rfix::Log
|
20
|
-
Rfix.init!
|
21
|
-
CLI::UI::StdoutRouter.enable
|
22
|
-
|
23
|
-
if ARGV.include?("--debug")
|
24
|
-
Rfix.debug!
|
25
|
-
end
|
26
|
-
|
27
|
-
options.on("--untracked", "Include untracked files") do
|
28
|
-
Rfix.load_untracked!
|
29
|
-
end
|
30
|
-
|
31
|
-
options.on("--dry", "No auto correct") do
|
32
|
-
say "Will run rfix in {{red:read-only}} mode"
|
33
|
-
Rfix.no_auto_correct!
|
34
|
-
end
|
35
|
-
|
36
|
-
options.on("--list-files", "List files found by git") do
|
37
|
-
should_list_files = true
|
38
|
-
end
|
39
|
-
|
40
|
-
options.on("--clear-cache", "Clear RuboCop cache") do
|
41
|
-
clear_cache = true
|
42
|
-
end
|
7
|
+
require "rfix/extensions/string"
|
8
|
+
require "rfix/commands/extensions/options"
|
9
|
+
require "rfix/commands/helper/loader"
|
10
|
+
require "rfix/branch"
|
43
11
|
|
44
|
-
|
45
|
-
|
46
|
-
end
|
47
|
-
|
48
|
-
options.on("--config PATH", "A configuration file") do |path|
|
49
|
-
config_path = path
|
50
|
-
end
|
12
|
+
include Rfix::Loader
|
13
|
+
include Rfix::Log
|
51
14
|
|
52
|
-
|
53
|
-
when "info"
|
54
|
-
say "Using RuboCop {{yellow:#{RuboCop::Version.version}}}"
|
55
|
-
say_debug "Current directory {{italic:#{Dir.pwd}}}"
|
56
|
-
say_debug "[Ruby] {{italic:#{RbConfig.ruby}}}"
|
57
|
-
say "Using Rfix {{yellow:#{Rfix::VERSION}}}"
|
58
|
-
say "Using OS {{yellow:#{Rfix.current_os}}}"
|
59
|
-
say "Using Git {{yellow:#{Rfix.git_version}}}"
|
60
|
-
say "Using Ruby {{yellow:#{Rfix.ruby_version}}}"
|
61
|
-
say_debug "Current Git branch {{yellow:#{Rfix.current_branch}}}"
|
62
|
-
say_debug "Number of commits {{yellow:#{Rfix.number_of_commits_since}}}"
|
63
|
-
exit 0
|
64
|
-
when "lint"
|
65
|
-
Rfix.lint_mode!
|
66
|
-
reference = Rfix.ref_since_push
|
67
|
-
when "local"
|
68
|
-
reference = Rfix.ref_since_push
|
69
|
-
when "origin"
|
70
|
-
reference = Rfix.ref_since_origin
|
71
|
-
when "welcome"
|
72
|
-
abort Rfix.thanks
|
73
|
-
when "all"
|
74
|
-
reference = false
|
75
|
-
Rfix.global_enable!
|
76
|
-
when "branch"
|
77
|
-
abort_message = "No branch passed as second argument"
|
78
|
-
unless reference = ARGV.shift
|
79
|
-
say_abort abort_message
|
80
|
-
end
|
81
|
-
|
82
|
-
# Catches:
|
83
|
-
# NOT OK: branch --help
|
84
|
-
# OK branch master --help
|
85
|
-
say_abort abort_message if reference.start_with?("--")
|
86
|
-
|
87
|
-
# Check if branch exists
|
88
|
-
say_abort "Branch {{yellow:#{reference}}} does not exist" unless Rfix.has_branch?(reference)
|
89
|
-
else
|
90
|
-
unless display_help
|
91
|
-
say_error "Valid rfix commands are:"
|
92
|
-
say_error_sub Rfix.help
|
93
|
-
exit 1
|
94
|
-
end
|
15
|
+
root = Cri::Command.new
|
95
16
|
|
96
|
-
|
17
|
+
Dir.glob(File.join(__dir__, "../lib/rfix/commands/*.rb")).each do |command|
|
18
|
+
root.add_command(Cri::Command.load_file(command, infer_name: true))
|
97
19
|
end
|
98
20
|
|
99
21
|
begin
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
if path = config_path
|
106
|
-
Rfix.load_config do |config|
|
107
|
-
say_debug "[Config:Option] Load from #{path}"
|
108
|
-
config.options_config = path
|
109
|
-
end
|
110
|
-
else
|
111
|
-
Rfix.load_config do |config|
|
112
|
-
say_debug "[Config:PWD] Load from #{Dir.pwd}"
|
113
|
-
config.for(Dir.pwd)
|
114
|
-
end
|
115
|
-
end
|
116
|
-
|
117
|
-
if clear_cache
|
118
|
-
say "Clearing cache"
|
119
|
-
Rfix.clear_cache!
|
120
|
-
end
|
121
|
-
|
122
|
-
if ref = reference
|
123
|
-
say "Compare against {{yellow:#{ref}}}"
|
124
|
-
|
125
|
-
Rfix.load_tracked!(ref)
|
126
|
-
|
127
|
-
paths = Rfix.paths if paths.empty?
|
128
|
-
|
129
|
-
say_exit "No files to run against" if paths.empty?
|
130
|
-
end
|
131
|
-
|
132
|
-
if limit = limit_files
|
133
|
-
say "Limit number of files to {{yellow:#{limit}}}"
|
134
|
-
paths = paths.take(limit)
|
135
|
-
end
|
136
|
-
|
137
|
-
if should_list_files
|
138
|
-
say "Loaded {{yellow:#{paths.count}}} paths"
|
139
|
-
paths.each do |path|
|
140
|
-
say "\t" + Rfix.to_relative(path: path)
|
22
|
+
if root.run(ARGV, {}, hard_exit: false)
|
23
|
+
exit 0
|
24
|
+
else
|
25
|
+
prt root.help
|
26
|
+
exit 1
|
141
27
|
end
|
142
|
-
|
143
|
-
|
144
|
-
say_debug "[Config:Dump] #{Rfix.store}"
|
145
|
-
|
146
|
-
env = RuboCop::CLI::Environment.new(
|
147
|
-
Rfix.config.merge(options),
|
148
|
-
Rfix.store,
|
149
|
-
paths
|
150
|
-
)
|
151
|
-
|
152
|
-
begin
|
153
|
-
exit RuboCop::CLI::Command::ExecuteRunner.new(env).run
|
154
|
-
rescue RuboCop::Error => e
|
155
|
-
say_abort e.message
|
28
|
+
rescue RuntimeError => e
|
29
|
+
say_abort e.to_s
|
156
30
|
end
|
data/lib/rfix.rb
CHANGED
@@ -3,22 +3,29 @@
|
|
3
3
|
|
4
4
|
# https://gist.github.com/skanev/9d4bec97d5a6825eaaf6
|
5
5
|
|
6
|
-
require "rfix/version"
|
7
6
|
require "cli/ui"
|
7
|
+
require "rfix/version"
|
8
|
+
require "rfix/log"
|
9
|
+
require "rfix/cmd"
|
10
|
+
require "rfix/repository"
|
11
|
+
require "rfix/formatter"
|
8
12
|
require "rfix/extensions/extensions"
|
9
13
|
require "rfix/extensions/offense"
|
14
|
+
require "rfix/branch"
|
10
15
|
require "rfix/rfix"
|
16
|
+
require "rfix/box"
|
17
|
+
require "rfix/error"
|
11
18
|
|
12
19
|
module Rfix
|
13
20
|
module Ext; end
|
14
21
|
extend self
|
15
22
|
end
|
16
23
|
|
17
|
-
RuboCop::Options.prepend(Rfix::Ext::Options)
|
18
|
-
RuboCop::Runner.prepend(Rfix::Ext::Runner)
|
19
24
|
RuboCop::CommentConfig.prepend(Rfix::Ext::CommentConfig)
|
20
25
|
RuboCop::Cop::Offense.prepend(Rfix::Ext::Offense)
|
21
26
|
|
27
|
+
CLI::UI::StdoutRouter.enable
|
28
|
+
|
22
29
|
# TODO: Handle cases where color can't be resolved by CLI::UI
|
23
30
|
RuboCop::Formatter::SimpleTextFormatter::COLOR_FOR_SEVERITY.each do |severity, color|
|
24
31
|
id = RuboCop::Cop::Severity::CODE_TABLE.invert.fetch(severity)
|
data/lib/rfix/box.rb
ADDED
@@ -0,0 +1,112 @@
|
|
1
|
+
class Rfix::Box < Struct.new(:out, :err, :status, :args, :quiet)
|
2
|
+
include Rfix::Log
|
3
|
+
|
4
|
+
def render(color: :reset, debug: false)
|
5
|
+
return if Rfix.debug? && !debug
|
6
|
+
|
7
|
+
@render ||= box(title, color: color) do
|
8
|
+
margin do
|
9
|
+
prt cmd_lines
|
10
|
+
end
|
11
|
+
|
12
|
+
div("{{info:STDOUT}}") do
|
13
|
+
prt lines_or_none(stdout)
|
14
|
+
end
|
15
|
+
|
16
|
+
div("{{error:STDERR}}") do
|
17
|
+
prt lines_or_none(stderr)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def lines_or_none(lines)
|
23
|
+
if lines.join.chomp.empty?
|
24
|
+
return "{{italic:<none>}}"
|
25
|
+
end
|
26
|
+
|
27
|
+
lines.map(&method(:strip)).join("\n")
|
28
|
+
end
|
29
|
+
|
30
|
+
def title
|
31
|
+
"#{quiet_icon}#{icon} #{bin} (#{exit_status}) @ {{italic:#{pwd}}}"
|
32
|
+
end
|
33
|
+
|
34
|
+
def quiet_icon
|
35
|
+
return "" unless quiet
|
36
|
+
|
37
|
+
"{{warning:[silent]}} "
|
38
|
+
end
|
39
|
+
|
40
|
+
def stdout
|
41
|
+
@stdout ||= dumpable(out.lines.map(&:chomp))
|
42
|
+
end
|
43
|
+
|
44
|
+
def stderr
|
45
|
+
@stderr ||= dumpable(err.lines.map(&:chomp))
|
46
|
+
end
|
47
|
+
|
48
|
+
def dumpable(lines)
|
49
|
+
box = self
|
50
|
+
lines.tap do
|
51
|
+
lines.define_singleton_method(:dump!) do
|
52
|
+
tap do
|
53
|
+
box.render
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
def icon
|
60
|
+
success? ? "{{v}}" : "{{x}}"
|
61
|
+
end
|
62
|
+
|
63
|
+
def success?
|
64
|
+
status.success?
|
65
|
+
end
|
66
|
+
|
67
|
+
def bin
|
68
|
+
clean_args.first
|
69
|
+
end
|
70
|
+
|
71
|
+
def tail
|
72
|
+
clean_args[1..-1]
|
73
|
+
end
|
74
|
+
|
75
|
+
def exit_status
|
76
|
+
status.exitstatus
|
77
|
+
end
|
78
|
+
|
79
|
+
def pwd
|
80
|
+
if Dir.getwd == Dir.pwd
|
81
|
+
return "{{italic:#{Dir.getwd}}}"
|
82
|
+
end
|
83
|
+
|
84
|
+
Dir.getwd.sub(Dir.pwd, "")
|
85
|
+
end
|
86
|
+
|
87
|
+
private
|
88
|
+
|
89
|
+
def longest_arg
|
90
|
+
@longest_arg ||= clean_args.reduce(0) do |acc, arg|
|
91
|
+
acc < arg.length ? arg.length : acc
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
def clean_args
|
96
|
+
@clean_args ||= args.map(&method(:strip))
|
97
|
+
end
|
98
|
+
|
99
|
+
def rest
|
100
|
+
tail.each_slice(2).map do |args|
|
101
|
+
args.map do |arg|
|
102
|
+
arg.ljust(longest_arg + 5)
|
103
|
+
end.join(" ")
|
104
|
+
end.map do |tail|
|
105
|
+
" {{italic:#{tail}}}"
|
106
|
+
end.join("\n")
|
107
|
+
end
|
108
|
+
|
109
|
+
def cmd_lines
|
110
|
+
"{{command:$ #{bin} \n#{rest}}}"
|
111
|
+
end
|
112
|
+
end
|