nub 0.0.39 → 0.0.40

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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/nub/commander.rb +12 -10
  3. data/lib/nub/sys.rb +19 -11
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c01dca76a70152cc7b62f7290b476a4b62de8e935a56f1a4660480da24826e40
4
- data.tar.gz: 0a650b87471c8d3fda5b1130ab4559d8bc76eb6651aa5d92b3611aad6ca0f43e
3
+ metadata.gz: 15cb45b36e04783ecc0f79034f6e724fc453931766812ad33c620c7dc3710bfc
4
+ data.tar.gz: 00207fa6c60fa53c84cbc26604875be289217c0c1cc09ec73dc7fcbad9cd3519
5
5
  SHA512:
6
- metadata.gz: 4b25eedaed638b9bbd0868b5b870b3acbfe14a70cd409dbc40930916d5c787f121907a7faf987a5baa0e10a3014c1a3a69b173fc5fd09da6f045e1373d7c812f
7
- data.tar.gz: ef78cc621a5d3a4a2ebebdc57bbb1bb9ad0802e5977f1359b3223a84f48af07d19396c36b08635fdfcd46a75af24ab1d46b2800e38b06bcbaeeb4c8f678cc744
6
+ metadata.gz: f4fceb5e69d5574bb681d83a98bcae3cc298e1f4bdbe96fa7d2db966b5ac600285c083dae8d1c807cad1b6a5a711bf7fba5f18aa0a1edbc6a62b6256edbabde0
7
+ data.tar.gz: f4842193383f214356e52528adfcfa6b4605a2086d1b31ea728ad068cdc4914170757caf10d463b4e0688a35cadc1b68f00e4fc25546cc8f5c071466d559fbde
data/lib/nub/commander.rb CHANGED
@@ -95,13 +95,11 @@ class Commander
95
95
  # @param app [String] application name e.g. reduce
96
96
  # @param version [String] version of the application e.g. 1.0.0
97
97
  # @param examples [String] optional examples to list after the title before usage
98
- def initialize(app, version, examples:nil)
98
+ def initialize(app:nil, version:nil, examples:nil)
99
99
  @app = app
100
+ @app_default = Sys.caller_filename
100
101
  @version = version
101
102
  @examples = examples
102
- !puts("Error: app name and version are required".colorize(:red)) and
103
- exit if @app.nil? or @app.empty? or @version.nil? or @version.empty?
104
-
105
103
  @help_opt = Option.new('-h|--help', 'Print command/options help')
106
104
  @just = 40
107
105
 
@@ -127,7 +125,9 @@ class Commander
127
125
  exit if cmd =~ /[^a-z]/
128
126
 
129
127
  # Build help for command
130
- help = "#{banner}\n#{desc}\n\nUsage: ./#{@app} #{cmd} [options]\n"
128
+ app = @app || @app_default
129
+ help = "#{desc}\n\nUsage: ./#{app} #{cmd} [options]\n"
130
+ help = "#{banner}\n#{help}" if @app
131
131
  options << @help_opt
132
132
 
133
133
  # Add positional options first
@@ -150,23 +150,25 @@ class Commander
150
150
  # Returns banner string
151
151
  # @returns [String] the app's banner
152
152
  def banner
153
- banner = "#{@app}_v#{@version}\n#{'-' * 80}".colorize(:light_yellow)
153
+ version = @version.nil? ? "" : "_v#{@version}"
154
+ banner = "#{@app}#{version}\n#{'-' * 80}".colorize(:light_yellow)
154
155
  return banner
155
156
  end
156
157
 
157
158
  # Return the app's help string
158
159
  # @returns [String] the app's help string
159
160
  def help
160
- help = "#{banner}\n"
161
+ help = @app.nil? ? "" : "#{banner}\n"
161
162
  if !@examples.nil? && !@examples.empty?
162
163
  newline = Sys.strip_colorize(@examples)[-1] != "\n" ? "\n" : ""
163
164
  help += "Examples:\n#{@examples}\n#{newline}"
164
165
  end
165
- help += "Usage: ./#{@app} [commands] [options]\n"
166
+ app = @app || @app_default
167
+ help += "Usage: ./#{app} [commands] [options]\n"
166
168
  help += " #{'-h|--help'.ljust(@just)}Print command/options help: Flag\n"
167
169
  help += "COMMANDS:\n"
168
170
  @config.each{|x| help += " #{x.name.ljust(@just)}#{x.desc}\n" }
169
- help += "\nsee './#{@app} COMMAND --help' for specific command help\n"
171
+ help += "\nsee './#{app} COMMAND --help' for specific command help\n"
170
172
 
171
173
  return help
172
174
  end
@@ -277,7 +279,7 @@ class Commander
277
279
  !puts("Error: invalid options #{ARGV}".colorize(:red)) and exit if ARGV.any?
278
280
 
279
281
  # Print banner on success
280
- puts(banner)
282
+ puts(banner) if @app
281
283
  end
282
284
  end
283
285
 
data/lib/nub/sys.rb CHANGED
@@ -38,6 +38,25 @@ ColorMap = {
38
38
 
39
39
  module Sys
40
40
 
41
+ # Wait for any key to be pressed
42
+ def self.any_key?
43
+ begin
44
+ state = `stty -g`
45
+ `stty raw -echo -icanon isig`
46
+ STDIN.getc.chr
47
+ ensure
48
+ `stty #{state}`
49
+ end
50
+ end
51
+
52
+ # Get the caller's filename for the caller of the function this call is nested in
53
+ # not the function this call is called in
54
+ # @returns [String] the caller's filename
55
+ def self.caller_filename
56
+ path = caller_locations(2, 1).first.path
57
+ return File.basename(path)
58
+ end
59
+
41
60
  # Capture STDOUT to a string
42
61
  # @returns [String] the redirected output
43
62
  def self.capture(&block)
@@ -51,17 +70,6 @@ module Sys
51
70
  return OpenStruct.new(result: result, stdout: stdout.string, stderr: stderr.string)
52
71
  end
53
72
 
54
- # Wait for any key to be pressed
55
- def self.any_key?
56
- begin
57
- state = `stty -g`
58
- `stty raw -echo -icanon isig`
59
- STDIN.getc.chr
60
- ensure
61
- `stty #{state}`
62
- end
63
- end
64
-
65
73
  # Strip the ansi color codes from the given string
66
74
  # @param str [String] string with ansi color codes
67
75
  # @returns [String] string without any ansi codes
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nub
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.39
4
+ version: 0.0.40
5
5
  platform: ruby
6
6
  authors:
7
7
  - Patrick Crummett
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-03-31 00:00:00.000000000 Z
11
+ date: 2018-04-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: colorize