vv 0.0.9 → 0.0.10

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: 052ef19db592bebd51a14310cc4eea838dbd10645f43c05f15cb774292222990
4
- data.tar.gz: 2e23028b168d6cb104a0b631c9b80bcb11696120854fbd603126bc962aa380f9
3
+ metadata.gz: 51e268d782cc4e4615a19f9bef609d810465b50bf74fa7161d9cb1ed02fa3caf
4
+ data.tar.gz: 3f2ce5fac2641daf1b82d38df2b0e682aec543bf14a8f485c1976acb5bc9a0ca
5
5
  SHA512:
6
- metadata.gz: a62626e31c21dbe0c5fd426681c2b0007cb4f0a0e844e77a0f1bf5faa9c49edcc7b2da9a4d2e6650220982f95708d3563ffa68090e2371233f6b66f4db780aa9
7
- data.tar.gz: 998917dbf37b9900ef500517674d42fad1c64cacbd4aab294a13c29c5c795cbda0926cd0efd0106969287a58fa3fe0f5398e2980e83e39e7786120d54e871f9d
6
+ metadata.gz: 85bab86083aa0ff67da2ba25e85fab3a8fb2edc7f430e477bdf2bacee7f95f4aa959eabb0cae117d8af0073e507fa446f8da4b121f3d27170c8fe0fb390c9cc7
7
+ data.tar.gz: 923ae7cbe0ff1166a5653597e58b18ec38bf42cd2ce0f6644553c1f27598d13670c7fce0b5a5008cf7053590756a5d39900e4fcef5ed2525e18d2719dc9008ae
@@ -3,6 +3,7 @@ module VV
3
3
 
4
4
  def self.included(base)
5
5
  base.extend(ClassMethods)
6
+ base.include(VV::SetMethods::SetAndArrayMethods)
6
7
  base.attr_accessor :cli_print_separator
7
8
  end
8
9
 
@@ -14,42 +15,6 @@ module VV
14
15
 
15
16
  end
16
17
 
17
- def gravify
18
- self.collect do |elem|
19
- "`#{elem}`"
20
- end
21
- end
22
-
23
- def gravify!
24
- self.collect! do |elem|
25
- "`#{elem}`"
26
- end
27
- end
28
-
29
- def includes_any?(other)
30
- raise TypeError, "Expecting array" unless other.is_a? Array
31
- uother = other.uniq
32
- uself = self.uniq
33
- (uself + uother).uniq.size < (uself.size + uother.size)
34
- end
35
-
36
- def include_any?(other)
37
- self.includes_any?(other)
38
- end
39
-
40
- def stringify_collection grave: false
41
- return self.gravify.stringify_collection if grave
42
-
43
- return String.empty_string if self.blank?
44
- return self.first if self.size == 1
45
- return self.join " and " if self.size == 2
46
-
47
- new_collection = self[0..-3]
48
- back_fragment = self[-2..-1].join ", and "
49
- new_collection << back_fragment
50
- new_collection.join ", "
51
- end
52
-
53
18
  def spaced
54
19
  self.join(" ")
55
20
  end
data/lib/vv/cli.rb CHANGED
@@ -6,10 +6,12 @@ module VV
6
6
  :settings,
7
7
  :cache_path,
8
8
  :config_path,
9
- :data_path
9
+ :data_path,
10
+ :verbosity
10
11
 
11
12
  def initialize version: nil,
12
13
  name: nil,
14
+ argv: nil,
13
15
  config_path: nil,
14
16
  cache_path: nil,
15
17
  data_path: nil
@@ -28,6 +30,11 @@ module VV
28
30
  @settings = nil
29
31
 
30
32
  self.set_default_paths
33
+
34
+ # Most of the time we want to just initialize the
35
+ # thing fully, but it's helpful to test and debug if
36
+ # we're not forced to.
37
+ self.parse_flags argv unless argv.nil?
31
38
  end
32
39
 
33
40
  def set_default_paths
@@ -47,6 +54,38 @@ module VV
47
54
  def parse_flags argv
48
55
  argv = argv.split " " if argv.is_a? String
49
56
  @settings = @option_router.parse argv
57
+ set_verbosity
58
+ end
59
+
60
+ def set_normal_verbosity
61
+ @verbosity = :normal
62
+ end
63
+
64
+ def set_verbosity
65
+ verbosity_flags = %w[ -v -vv -vvv -q -s ]
66
+ flag_set = @settings.keys.includes_any? verbosity_flags
67
+ return self.set_normal_verbosity unless flag_set
68
+
69
+ @settings.keys.includes_one! verbosity_flags
70
+
71
+ flag = (@settings.keys & verbosity_flags).first
72
+
73
+
74
+ index = verbosity_flags.index(flag)
75
+ @verbosity = %i[ verbose
76
+ very_verbose
77
+ very_very_verbose
78
+ quiet
79
+ absolute_silence ][index]
80
+ end
81
+
82
+ def help?
83
+ return false if @settings.nil?
84
+ @settings["-h"]
85
+ end
86
+
87
+ def print_help width: 80
88
+ option_router.help_doc.cli_print width: width
50
89
  end
51
90
 
52
91
  end
@@ -112,7 +151,7 @@ module VV
112
151
  "Duplicate command line flag #{@flag} encountered."
113
152
 
114
153
  @flag = lookup_canonical_flag @flag
115
- fail message if @response.include? @flag
154
+ fail message if @parsed_arguments.include? @flag
116
155
 
117
156
  self.set_flag
118
157
  end
@@ -129,13 +168,13 @@ module VV
129
168
  value = @value
130
169
  value &&= @value.to_d if decimal?
131
170
  value ||= true
132
- @response[@flag] = value
171
+ @parsed_arguments[@flag] = value
133
172
  end
134
173
 
135
174
  # This needs a refactor.
136
175
  def parse argv
137
176
  @flags_cease = false
138
- @response = {}
177
+ @parsed_arguments = {}
139
178
 
140
179
  argv.each do |arg|
141
180
  next add_input_arg arg if @flags_cease
@@ -155,7 +194,9 @@ module VV
155
194
  self.cease_flag_consideration
156
195
  end
157
196
 
158
- @response
197
+ @flag = @value = @current_flag = nil
198
+
199
+ @parsed_arguments
159
200
  end
160
201
 
161
202
  def end_of_commands
@@ -250,8 +291,8 @@ module VV
250
291
  collection = \
251
292
  @flag_settings[@flag][:type] == :collection
252
293
  if collection
253
- @response[@flag] ||= []
254
- @response[@flag] << @value
294
+ @parsed_arguments[@flag] ||= []
295
+ @parsed_arguments[@flag] << @value
255
296
  else
256
297
  @current_flag = nil
257
298
  self.set_flag
@@ -260,8 +301,8 @@ module VV
260
301
  end
261
302
 
262
303
  def add_input_arg arg
263
- @response[:input_arguments] ||= []
264
- @response[:input_arguments] << arg
304
+ @parsed_arguments[:input_arguments] ||= []
305
+ @parsed_arguments[:input_arguments] << arg
265
306
  end
266
307
 
267
308
  def standardize_value
@@ -160,6 +160,7 @@ module VV
160
160
  end
161
161
  alias_method :xdg_config_home, :config_home
162
162
 
163
+ # Where application specific files should be stored
163
164
  def data_home
164
165
  path = ENV['XDG_DATA_HOME']
165
166
  return path unless path.blank?
@@ -9,6 +9,7 @@ module Gem
9
9
  Gem.find_files(glob).each do |filepath|
10
10
  start = dirname.size + 1
11
11
  ruby_require_path = filepath[start..-1]
12
+
12
13
  if block_given?
13
14
  yield ruby_require_path
14
15
  else
@@ -0,0 +1,88 @@
1
+ module VV
2
+
3
+ module SetMethods
4
+
5
+ def self.included(base)
6
+ base.extend(ClassMethods)
7
+ base.include(SetAndArrayMethods)
8
+ end
9
+
10
+ module ClassMethods
11
+
12
+ def vv_included?
13
+ true
14
+ end
15
+
16
+ end
17
+
18
+ module SetAndArrayMethods
19
+
20
+ def gravify
21
+ self.collect do |elem|
22
+ "`#{elem}`"
23
+ end
24
+ end
25
+
26
+ def gravify!
27
+ self.collect! do |elem|
28
+ "`#{elem}`"
29
+ end
30
+ end
31
+
32
+ def includes! other
33
+ return if self.include? other
34
+ fail "Collection does not include `#{other}`."
35
+ end
36
+ alias_method :include!, :includes!
37
+
38
+ def includes_one?(other)
39
+ ok_type = other.is_a? Array
40
+ ok_type ||= other.is_a? Set
41
+
42
+ fail TypeError, "Expecting array" unless ok_type
43
+
44
+ ( self & other ).one?
45
+ end
46
+ alias_method :include_one?, :includes_one?
47
+
48
+ def includes_one!(other)
49
+ return true if includes_one? other
50
+ message = "Collections did not share exactly one element."
51
+ fail message
52
+ end
53
+ alias_method :include_one!, :includes_one!
54
+
55
+ def includes_any?(other)
56
+ ok_type = other.is_a? Array
57
+ ok_type ||= other.is_a? Set
58
+
59
+ fail TypeError, "Expecting array" unless ok_type
60
+ ( self & other ).any?
61
+ end
62
+ alias_method :include_any?, :includes_any?
63
+
64
+ def includes_any! other
65
+ return true if includes_any? other
66
+ message = "Collections did not share exactly any elements."
67
+ fail message
68
+ end
69
+ alias_method :include_any!, :includes_any!
70
+
71
+ def stringify_collection grave: false
72
+ return self.gravify.stringify_collection if grave
73
+
74
+ return String.empty_string if self.blank?
75
+ return self.first if self.size == 1
76
+ return self.join " and " if self.size == 2
77
+
78
+ new_collection = self[0..-3]
79
+ back_fragment = self[-2..-1].join ", and "
80
+ new_collection << back_fragment
81
+ new_collection.join ", "
82
+ end
83
+
84
+ end
85
+
86
+ end
87
+
88
+ end
data/lib/vv/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module VV
2
- VERSION = '0.0.9'
2
+ VERSION = '0.0.10'
3
3
  end
data/lib/vv.rb CHANGED
@@ -5,6 +5,7 @@ require 'bigdecimal/util'
5
5
  require 'fileutils'
6
6
 
7
7
  require_relative "vv/gem_methods"
8
+ require_relative "vv/set_methods"
8
9
 
9
10
  Gem.require_files "vv/*.rb"
10
11
  Gem.require_files "vv/style/*.rb"
@@ -26,6 +27,10 @@ class Hash
26
27
  include VV::HashMethods
27
28
  end
28
29
 
30
+ class Set
31
+ include VV::SetMethods
32
+ end
33
+
29
34
  class Array
30
35
  include VV::ArrayMethods
31
36
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vv
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.0.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Zach Aysan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-02-18 00:00:00.000000000 Z
11
+ date: 2019-02-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -73,6 +73,7 @@ files:
73
73
  - lib/vv/object_methods.rb
74
74
  - lib/vv/random_methods.rb
75
75
  - lib/vv/readline_methods.rb
76
+ - lib/vv/set_methods.rb
76
77
  - lib/vv/string_methods.rb
77
78
  - lib/vv/style/bold.rb
78
79
  - lib/vv/style/color.rb