mister_bin 0.2.2 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7d02c3dbeffc01ef74b5352108585791cfc5abcece9071c1b28fe1ea621809f5
4
- data.tar.gz: 207c687438a4c780a28b71bae3e6669db003239ed5d1eb565258f03a260638c0
3
+ metadata.gz: 992b34023bc6042c8e5cada1a4d33674df2fda7856e3d67ec07e3e4607253ad5
4
+ data.tar.gz: 1943a0338104dcbc63c14a62526d113ad2124443f694536aeec38a650dc49375
5
5
  SHA512:
6
- metadata.gz: 8684082e9172f1f80e03992637f3b2248e802e7ba4f52309a615f95b3d4eca9a82005f54a91b8b073256a15358be563c4947dd4329919450591421b33eb79d2b
7
- data.tar.gz: 7a28ea5141dd993b8ca3ab4b4d903f3922d555ca264c0fa24a9cbea42f4a9b84a8759c8470fe47d8ffcdd1fa4edd1275599026eedb38483ab3023539c96fd270
6
+ metadata.gz: 5d9454d65eef5a5f1f53ce6198011331ef772fece59fe831f1abb33d616f3e4847f2d6ff40281bb8aa6d50f40ede1616b5f012109df942460c61efb0fa7ea7e8
7
+ data.tar.gz: 03dfe016fe75b4baa7da4fef059396f3534168ba284033b5037afd715b4e86efbf0461d0972e498828764df9f0b44034d647a570bd01fdd21ba3feede5c86798
data/README.md CHANGED
@@ -152,6 +152,7 @@ In addition, you can provide an options hash:
152
152
  ```ruby
153
153
  options = {
154
154
  header: 'My command line app'
155
+ version: '1.2.3',
155
156
  footer: 'Use --help for additional info',
156
157
  basedir: __dir__,
157
158
  isolate: true
@@ -160,6 +161,10 @@ options = {
160
161
  runner = MisterBin::Runner.new 'appname', options
161
162
  ```
162
163
 
164
+ #### `version`
165
+
166
+ Version number to display when running the main executable with `--version`.
167
+
163
168
  #### `header`
164
169
 
165
170
  Text to display before the list of commands.
@@ -211,7 +216,7 @@ summary "A short sentence or paragraph describing the command"
211
216
  # Optional help string
212
217
  help "A longer explanation can go here"
213
218
 
214
- # Version string for the command
219
+ # Optional version string for the command
215
220
  version "0.1.1"
216
221
 
217
222
  # Usage patterns. You can use either a compact docopt notation, or provide
@@ -229,6 +234,9 @@ option "-f --force", "Force delete"
229
234
  # Describe any parameters
230
235
  param "NAME", "The name of the repository"
231
236
 
237
+ # Describe any environment variables that your app cares about
238
+ environment "SECRET", "There is no spoon"
239
+
232
240
  # Provide examples
233
241
  example "app ls"
234
242
  example "app ls --all"
@@ -7,22 +7,23 @@ module MisterBin
7
7
  class DocoptMaker
8
8
  include Colsole
9
9
 
10
- attr_reader :usages, :options, :examples, :params
10
+ attr_reader :usages, :options, :examples, :params, :env_vars
11
11
  attr_accessor :summary, :help, :version
12
12
 
13
13
  def initialize
14
- @version = '0.0.0'
14
+ @version = nil
15
15
  @help = nil
16
16
  @summary = nil
17
17
  @usages = []
18
18
  @options = []
19
19
  @params = []
20
20
  @examples = []
21
+ @env_vars = []
21
22
  end
22
23
 
23
24
  def docopt
24
25
  [summary_string, help_string, usage_string, options_string,
25
- params_string, examples_string].compact.join "\n"
26
+ params_string, env_string, examples_string].compact.join "\n"
26
27
  end
27
28
 
28
29
  private
@@ -52,22 +53,23 @@ module MisterBin
52
53
 
53
54
  result << " -h --help"
54
55
  result << " Show this help\n"
55
- result << " --version"
56
- result << " Show version number\n"
56
+
57
+ if version
58
+ result << " --version"
59
+ result << " Show version number\n"
60
+ end
61
+
57
62
  result.join "\n"
58
63
  end
59
64
 
60
65
  def params_string
61
66
  return nil if params.empty?
67
+ key_value_block 'Parameters:', params
68
+ end
62
69
 
63
- result = ["Parameters:"]
64
- params.each do |param|
65
- result << " #{param[0]}"
66
- result << word_wrap(" #{param[1]}")
67
- result << ""
68
- end
69
-
70
- result.join "\n"
70
+ def env_string
71
+ return nil if env_vars.empty?
72
+ key_value_block 'Environment Variables:', env_vars
71
73
  end
72
74
 
73
75
  def examples_string
@@ -78,5 +80,16 @@ module MisterBin
78
80
  result << ""
79
81
  result.join "\n"
80
82
  end
83
+
84
+ def key_value_block(caption, pairs)
85
+ result = [caption]
86
+ pairs.each do |key, value|
87
+ result << " #{key}"
88
+ result << word_wrap(" #{value}")
89
+ result << ""
90
+ end
91
+
92
+ result.join "\n"
93
+ end
81
94
  end
82
95
  end
@@ -4,7 +4,7 @@ module MisterBin
4
4
  class Runner
5
5
  include Colsole
6
6
 
7
- attr_reader :name, :basedir, :header, :footer, :isolate
7
+ attr_reader :name, :basedir, :header, :footer, :isolate, :version
8
8
 
9
9
  def initialize(name, opts={})
10
10
  @name = name
@@ -12,11 +12,15 @@ module MisterBin
12
12
  @footer = opts[:footer]
13
13
  @isolate = opts[:isolate]
14
14
  @basedir = opts[:basedir]
15
+ @version = opts[:version]
15
16
  end
16
17
 
17
18
  def run(argv=[])
18
19
  if argv.empty?
19
20
  show_subs
21
+ elsif argv == ['--version'] and version
22
+ puts version
23
+ return 1
20
24
  else
21
25
  execute argv
22
26
  end
@@ -59,6 +59,10 @@ module MisterBin
59
59
  maker.examples << text
60
60
  end
61
61
 
62
+ def environment(name, value)
63
+ maker.env_vars << [name, value]
64
+ end
65
+
62
66
  def action(&block)
63
67
  @action_block = block
64
68
  end
@@ -1,3 +1,3 @@
1
1
  module MisterBin
2
- VERSION = "0.2.2"
2
+ VERSION = "0.2.3"
3
3
  end
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.2.2
4
+ version: 0.2.3
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-05-05 00:00:00.000000000 Z
11
+ date: 2018-05-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: colsole
@@ -44,28 +44,28 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '9.0'
47
+ version: '10.0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '9.0'
54
+ version: '10.0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rdoc
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '5.1'
61
+ version: '6.0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '5.1'
68
+ version: '6.0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rspec
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -128,14 +128,14 @@ dependencies:
128
128
  requirements:
129
129
  - - "~>"
130
130
  - !ruby/object:Gem::Version
131
- version: '0.15'
131
+ version: '0.16'
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
- version: '0.15'
138
+ version: '0.16'
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: yard
141
141
  requirement: !ruby/object:Gem::Requirement