mister_bin 0.6.0 → 0.6.1
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/mister_bin/command.rb +16 -21
- data/lib/mister_bin/{docopt_maker.rb → command_meta.rb} +14 -5
- data/lib/mister_bin/runner.rb +27 -2
- data/lib/mister_bin/version.rb +1 -1
- data/lib/mister_bin.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dda05692e69025b3954d900c2a4165182edfdbce33d57966c69ad5ad41a207b7
|
4
|
+
data.tar.gz: 75b901c5d0d99755caf324270e77a5dee2b20aa1e0dc6740434622ad514c9d52
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1ae92daf8a5617295a8a68f423e7f2c4b84aa1a6014e524b6a9b0fc922a7f13621d6f42e408e0dc5e34871690a51a80514b2ff400efa2517aebda748d6ee402a
|
7
|
+
data.tar.gz: feb0cd9a946998acd8bc5255330e037712a1c58ca500648127860a28bff6a0682d3326fa3bf9f603b03b9d541c0fa76434c5284c5b14fad82502752bc59a8af9
|
data/lib/mister_bin/command.rb
CHANGED
@@ -7,17 +7,13 @@ module MisterBin
|
|
7
7
|
|
8
8
|
attr_reader :args
|
9
9
|
|
10
|
-
def initialize(args)
|
10
|
+
def initialize(args = nil)
|
11
11
|
@args = args
|
12
12
|
end
|
13
13
|
|
14
14
|
class << self
|
15
|
-
def description
|
16
|
-
maker.summary || maker.help || ''
|
17
|
-
end
|
18
|
-
|
19
15
|
def execute(argv=[])
|
20
|
-
args = Docopt.docopt docopt, version:
|
16
|
+
args = Docopt.docopt docopt, version: meta.version, argv: argv
|
21
17
|
instance = new args
|
22
18
|
target = find_target_command instance, args
|
23
19
|
exitcode = instance.send target
|
@@ -31,50 +27,50 @@ module MisterBin
|
|
31
27
|
# DSL
|
32
28
|
|
33
29
|
def summary(text)
|
34
|
-
|
30
|
+
meta.summary = text
|
35
31
|
end
|
36
32
|
|
37
33
|
def help(text)
|
38
|
-
|
34
|
+
meta.help = text
|
39
35
|
end
|
40
36
|
|
41
37
|
def version(text)
|
42
|
-
|
38
|
+
meta.version = text
|
43
39
|
end
|
44
40
|
|
45
41
|
def usage(text)
|
46
|
-
|
42
|
+
meta.usages << text
|
47
43
|
end
|
48
44
|
|
49
45
|
def option(flags, text)
|
50
|
-
|
46
|
+
meta.options << [flags, text]
|
51
47
|
end
|
52
48
|
|
53
49
|
def command(name, text)
|
54
50
|
target_commands << name.to_sym
|
55
|
-
|
51
|
+
meta.commands << [name, text]
|
56
52
|
end
|
57
53
|
|
58
54
|
def param(param, text)
|
59
|
-
|
55
|
+
meta.params << [param, text]
|
60
56
|
end
|
61
57
|
|
62
58
|
def example(text)
|
63
|
-
|
59
|
+
meta.examples << text
|
64
60
|
end
|
65
61
|
|
66
62
|
def environment(name, value)
|
67
|
-
|
63
|
+
meta.env_vars << [name, value]
|
68
64
|
end
|
69
65
|
|
70
|
-
|
71
|
-
|
72
|
-
def maker
|
73
|
-
@maker ||= DocoptMaker.new
|
66
|
+
def meta
|
67
|
+
@meta ||= CommandMeta.new
|
74
68
|
end
|
75
69
|
|
70
|
+
protected
|
71
|
+
|
76
72
|
def docopt
|
77
|
-
|
73
|
+
meta.docopt
|
78
74
|
end
|
79
75
|
|
80
76
|
private
|
@@ -92,6 +88,5 @@ module MisterBin
|
|
92
88
|
end
|
93
89
|
|
94
90
|
end
|
95
|
-
|
96
91
|
end
|
97
92
|
end
|
@@ -2,9 +2,9 @@ require 'colsole'
|
|
2
2
|
|
3
3
|
module MisterBin
|
4
4
|
|
5
|
-
# This
|
6
|
-
# by Docopt.
|
7
|
-
class
|
5
|
+
# This class is responsible for holding all the meta data for a command and
|
6
|
+
# for generating a text string ready to be used by Docopt.
|
7
|
+
class CommandMeta
|
8
8
|
include Colsole
|
9
9
|
|
10
10
|
attr_reader :usages, :options, :examples, :params, :commands, :env_vars
|
@@ -27,7 +27,15 @@ module MisterBin
|
|
27
27
|
options_string, params_string, env_string, examples_string].compact.join "\n"
|
28
28
|
end
|
29
29
|
|
30
|
-
|
30
|
+
def description
|
31
|
+
summary || help || ''
|
32
|
+
end
|
33
|
+
|
34
|
+
def long_description
|
35
|
+
summary && help ? "#{summary}\n\n#{help}" : description
|
36
|
+
end
|
37
|
+
|
38
|
+
private
|
31
39
|
|
32
40
|
def summary_string
|
33
41
|
summary ? word_wrap(summary) + "\n" : nil
|
@@ -97,5 +105,6 @@ module MisterBin
|
|
97
105
|
|
98
106
|
result.join "\n"
|
99
107
|
end
|
108
|
+
|
100
109
|
end
|
101
|
-
end
|
110
|
+
end
|
data/lib/mister_bin/runner.rb
CHANGED
@@ -27,7 +27,9 @@ module MisterBin
|
|
27
27
|
handler.execute argv
|
28
28
|
elsif argv.empty?
|
29
29
|
show_subs
|
30
|
-
elsif argv == ['--
|
30
|
+
elsif argv == ['--help'] or argv == ['-h']
|
31
|
+
show_help
|
32
|
+
elsif version and (argv == ['--version'] or argv == ['-v'])
|
31
33
|
puts version
|
32
34
|
return 1
|
33
35
|
else
|
@@ -75,7 +77,7 @@ module MisterBin
|
|
75
77
|
|
76
78
|
say "Commands:"
|
77
79
|
commands.each do |key, command|
|
78
|
-
summary = command.description
|
80
|
+
summary = command.meta.description
|
79
81
|
summary = summary[0..max_summary_size].strip
|
80
82
|
say " !bldgrn!#{key.ljust longest_key} !txtrst!#{summary}"
|
81
83
|
end
|
@@ -83,5 +85,28 @@ module MisterBin
|
|
83
85
|
say "\n#{footer}" if footer
|
84
86
|
end
|
85
87
|
|
88
|
+
def show_help
|
89
|
+
if commands.empty?
|
90
|
+
say "No subcommands found"
|
91
|
+
else
|
92
|
+
show_help!
|
93
|
+
end
|
94
|
+
|
95
|
+
return 1
|
96
|
+
end
|
97
|
+
|
98
|
+
def show_help!
|
99
|
+
say "#{header}\n" if header
|
100
|
+
|
101
|
+
commands.each do |key, command|
|
102
|
+
say "!bldgrn!#{key}"
|
103
|
+
say word_wrap " #{command.meta.long_description}"
|
104
|
+
say ""
|
105
|
+
end
|
106
|
+
|
107
|
+
say "#{footer}" if footer
|
108
|
+
end
|
109
|
+
|
110
|
+
|
86
111
|
end
|
87
112
|
end
|
data/lib/mister_bin/version.rb
CHANGED
data/lib/mister_bin.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mister_bin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Danny Ben Shitrit
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-12-
|
11
|
+
date: 2018-12-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: colsole
|
@@ -47,7 +47,7 @@ files:
|
|
47
47
|
- README.md
|
48
48
|
- lib/mister_bin.rb
|
49
49
|
- lib/mister_bin/command.rb
|
50
|
-
- lib/mister_bin/
|
50
|
+
- lib/mister_bin/command_meta.rb
|
51
51
|
- lib/mister_bin/runner.rb
|
52
52
|
- lib/mister_bin/version.rb
|
53
53
|
homepage: https://github.com/dannyben/mister_bin
|