qb 0.1.50 → 0.1.51
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/exe/qb +5 -1
- data/lib/qb.rb +0 -77
- data/lib/qb/options.rb +50 -0
- data/lib/qb/role.rb +92 -0
- data/lib/qb/version.rb +1 -1
- data/roles/qb.qb_role/templates/qb.yml.j2 +3 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8354a2e7a722ed65253867f9ba61d18f32548c7e
|
4
|
+
data.tar.gz: c3b3a05ac92ff16657beb5e53c01e5d29ad3a43d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7f22505b21269bc2b63b14cbb9c9dfddf16d9fd4a046dc797d1609adda79598d9ff6778eb7486bfccbd44e8e80dce046aaf91fdbdaa56b9092663c3c6e4fd1e4
|
7
|
+
data.tar.gz: '048192659773f4e26e6de355ffa1b32c9f5af7507bf4245adcfa3a6566ab7f80fbb70c4b965759997966c0a12ae923e541f9ad349f4f7c2a6e7ecf8f709d5c1b'
|
data/exe/qb
CHANGED
@@ -160,7 +160,7 @@ def main args
|
|
160
160
|
#
|
161
161
|
# in some cases (like projects) the dir can be figured out in other ways:
|
162
162
|
#
|
163
|
-
|
163
|
+
role.default_dir cwd, options
|
164
164
|
|
165
165
|
when 1
|
166
166
|
# there is a single positional arg, which is used as dir
|
@@ -320,6 +320,10 @@ def main args
|
|
320
320
|
template << "-#{ 'v' * qb_options['verbose'] }"
|
321
321
|
end
|
322
322
|
|
323
|
+
if qb_options['ask_vault_pass'] || role.ask_vault_pass?
|
324
|
+
template << "--ask-vault-pass"
|
325
|
+
end
|
326
|
+
|
323
327
|
template << "<%= playbook_path %>"
|
324
328
|
|
325
329
|
cmd = Cmds.sub template.join(" "), [], {
|
data/lib/qb.rb
CHANGED
@@ -36,83 +36,6 @@ module QB
|
|
36
36
|
$stderr.puts dumpObj.pretty_inspect
|
37
37
|
end
|
38
38
|
|
39
|
-
def self.get_default_dir role, cwd, options
|
40
|
-
debug "get_default_dir", role: role,
|
41
|
-
meta: role.meta,
|
42
|
-
cwd: cwd,
|
43
|
-
options: options
|
44
|
-
|
45
|
-
key = 'default_dir'
|
46
|
-
value = role.meta[key]
|
47
|
-
case value
|
48
|
-
when nil
|
49
|
-
# there is no get_dir info in meta/qb.yml, can't get the dir
|
50
|
-
raise "unable to infer default directory: no '#{ key }' key in meta/qb.yml"
|
51
|
-
|
52
|
-
when false
|
53
|
-
# this method should not get called when the value is false (an entire
|
54
|
-
# section is skipped in exe/qb when `default_dir = false`)
|
55
|
-
raise "role does not use default directory (meta/qb.yml:default_dir = false)"
|
56
|
-
|
57
|
-
when 'git_root'
|
58
|
-
debug "returning the git root relative to cwd"
|
59
|
-
NRSER.git_root cwd
|
60
|
-
|
61
|
-
when 'cwd'
|
62
|
-
debug "returning current working directory"
|
63
|
-
cwd
|
64
|
-
|
65
|
-
when Hash
|
66
|
-
debug "qb meta option is a Hash"
|
67
|
-
|
68
|
-
unless value.length == 1
|
69
|
-
raise "#{ role.meta_path.to_s }:default_dir invalid: #{ value.inspect }"
|
70
|
-
end
|
71
|
-
|
72
|
-
hash_key, hash_value = value.first
|
73
|
-
|
74
|
-
case hash_key
|
75
|
-
when 'exe'
|
76
|
-
exe_path = hash_value
|
77
|
-
|
78
|
-
# supply the options to the exe so it can make work off those values
|
79
|
-
# if it wants.
|
80
|
-
exe_input_data = Hash[
|
81
|
-
options.map {|option|
|
82
|
-
[option.cli_option_name, option.value]
|
83
|
-
}
|
84
|
-
]
|
85
|
-
|
86
|
-
unless exe_path.start_with?('~') || exe_path.start_with?('/')
|
87
|
-
exe_path = File.join(role.path, exe_path)
|
88
|
-
debug 'exe path is relative, basing off role dir', exe_path: exe_path
|
89
|
-
end
|
90
|
-
|
91
|
-
debug "found 'exe' key, calling", exe_path: exe_path,
|
92
|
-
exe_input_data: exe_input_data
|
93
|
-
|
94
|
-
Cmds.chomp! exe_path do
|
95
|
-
JSON.dump exe_input_data
|
96
|
-
end
|
97
|
-
|
98
|
-
when 'find_up'
|
99
|
-
filename = hash_value
|
100
|
-
|
101
|
-
unless filename.is_a? String
|
102
|
-
raise "find_up filename must be string, found #{ filename.inspect }"
|
103
|
-
end
|
104
|
-
|
105
|
-
debug "found 'find_up', looking for file named #{ filename }"
|
106
|
-
|
107
|
-
Util.find_up filename
|
108
|
-
|
109
|
-
else
|
110
|
-
raise "bad key: #{ hash_key } in #{ role.meta_path.to_s }:default_dir"
|
111
|
-
|
112
|
-
end
|
113
|
-
end
|
114
|
-
end # get_default_dir
|
115
|
-
|
116
39
|
def self.check_ansible_version
|
117
40
|
out = Cmds.out! 'ansible --version'
|
118
41
|
version_str = out[/ansible\ ([\d\.]+)/, 1]
|
data/lib/qb/options.rb
CHANGED
@@ -23,10 +23,34 @@ module QB
|
|
23
23
|
class MetadataError < Error
|
24
24
|
end
|
25
25
|
|
26
|
+
# turn a name into a "command line" version by replacing underscores with
|
27
|
+
# dashes.
|
28
|
+
#
|
29
|
+
# @param [String] option_name
|
30
|
+
# the input option name.
|
31
|
+
#
|
32
|
+
# @return [String]
|
33
|
+
# the CLI-ized name.
|
34
|
+
#
|
35
|
+
# @example
|
36
|
+
# QB::Options.cli_ize_name "my_var" # => "my-var"
|
37
|
+
#
|
26
38
|
def self.cli_ize_name option_name
|
27
39
|
option_name.gsub '_', '-'
|
28
40
|
end
|
29
41
|
|
42
|
+
# turn a name into a "ruby / ansible variable" version by replacing
|
43
|
+
# dashes with underscores.
|
44
|
+
#
|
45
|
+
# @param [String] option_name
|
46
|
+
# the input option name.
|
47
|
+
#
|
48
|
+
# @return [String]
|
49
|
+
# the ruby / ansible var-ized name.
|
50
|
+
#
|
51
|
+
# @example
|
52
|
+
# QB::Options.cli_ize_name "my-var" # => "my_var"
|
53
|
+
#
|
30
54
|
def self.var_ize_name option_name
|
31
55
|
option_name.gsub '-', '_'
|
32
56
|
end
|
@@ -156,6 +180,25 @@ module QB
|
|
156
180
|
end # each var
|
157
181
|
end # add
|
158
182
|
|
183
|
+
# destructively removes options from `args` and populates hashes of
|
184
|
+
# role-specific options and general qb ones.
|
185
|
+
#
|
186
|
+
# @param [QB::Role] role
|
187
|
+
# the role to parse the options for.
|
188
|
+
#
|
189
|
+
# @param [Array<String>] args
|
190
|
+
# CLI args -- `ARGV` with the role arg shifted off.
|
191
|
+
#
|
192
|
+
# @return [Array<Hash<String, Option|Object>>]
|
193
|
+
# a two-element array:
|
194
|
+
#
|
195
|
+
# 1. the options for the role, hash of Option#cli_name to Option
|
196
|
+
# instances.
|
197
|
+
#
|
198
|
+
# 2. the general qb options, hash of String key to option values.
|
199
|
+
#
|
200
|
+
# @raise if bad options are found.
|
201
|
+
#
|
159
202
|
def self.parse! role, args
|
160
203
|
role_options = {}
|
161
204
|
|
@@ -246,6 +289,13 @@ module QB
|
|
246
289
|
qb_options['run'] = false
|
247
290
|
end
|
248
291
|
|
292
|
+
opts.on(
|
293
|
+
'--ASK-VAULT-PASS',
|
294
|
+
"ask for the vault password.",
|
295
|
+
) do |value|
|
296
|
+
qb_options['ask_vault_pass'] = true
|
297
|
+
end
|
298
|
+
|
249
299
|
add opts, role_options, role
|
250
300
|
|
251
301
|
opts.on_tail("-h", "--help", "Show this message") do
|
data/lib/qb/role.rb
CHANGED
@@ -481,6 +481,98 @@ module QB
|
|
481
481
|
puts "\n" + format_examples + "\n"
|
482
482
|
end
|
483
483
|
|
484
|
+
# should qb ask for an ansible vault password?
|
485
|
+
#
|
486
|
+
# @see http://docs.ansible.com/ansible/playbooks_vault.html
|
487
|
+
#
|
488
|
+
# @return [Boolean]
|
489
|
+
# `true` if qb should ask for a vault password.
|
490
|
+
#
|
491
|
+
def ask_vault_pass?
|
492
|
+
!!@meta['ask_vault_pass']
|
493
|
+
end
|
494
|
+
|
495
|
+
# gets the default `qb_dir` value, raising an error if the role doesn't
|
496
|
+
# define how to get one or there is a problem getting it.
|
497
|
+
#
|
498
|
+
#
|
499
|
+
def default_dir cwd, options
|
500
|
+
debug "get_default_dir", role: self,
|
501
|
+
meta: self.meta,
|
502
|
+
cwd: cwd,
|
503
|
+
options: options
|
504
|
+
|
505
|
+
key = 'default_dir'
|
506
|
+
value = self.meta[key]
|
507
|
+
case value
|
508
|
+
when nil
|
509
|
+
# there is no get_dir info in meta/qb.yml, can't get the dir
|
510
|
+
raise "unable to infer default directory: no '#{ key }' key in meta/qb.yml"
|
511
|
+
|
512
|
+
when false
|
513
|
+
# this method should not get called when the value is false (an entire
|
514
|
+
# section is skipped in exe/qb when `default_dir = false`)
|
515
|
+
raise "role does not use default directory (meta/qb.yml:default_dir = false)"
|
516
|
+
|
517
|
+
when 'git_root'
|
518
|
+
debug "returning the git root relative to cwd"
|
519
|
+
NRSER.git_root cwd
|
520
|
+
|
521
|
+
when 'cwd'
|
522
|
+
debug "returning current working directory"
|
523
|
+
cwd
|
524
|
+
|
525
|
+
when Hash
|
526
|
+
debug "qb meta option is a Hash"
|
527
|
+
|
528
|
+
unless value.length == 1
|
529
|
+
raise "#{ meta_path.to_s }:default_dir invalid: #{ value.inspect }"
|
530
|
+
end
|
531
|
+
|
532
|
+
hash_key, hash_value = value.first
|
533
|
+
|
534
|
+
case hash_key
|
535
|
+
when 'exe'
|
536
|
+
exe_path = hash_value
|
537
|
+
|
538
|
+
# supply the options to the exe so it can make work off those values
|
539
|
+
# if it wants.
|
540
|
+
exe_input_data = Hash[
|
541
|
+
options.map {|option|
|
542
|
+
[option.cli_option_name, option.value]
|
543
|
+
}
|
544
|
+
]
|
545
|
+
|
546
|
+
unless exe_path.start_with?('~') || exe_path.start_with?('/')
|
547
|
+
exe_path = File.join(self.path, exe_path)
|
548
|
+
debug 'exe path is relative, basing off role dir', exe_path: exe_path
|
549
|
+
end
|
550
|
+
|
551
|
+
debug "found 'exe' key, calling", exe_path: exe_path,
|
552
|
+
exe_input_data: exe_input_data
|
553
|
+
|
554
|
+
Cmds.chomp! exe_path do
|
555
|
+
JSON.dump exe_input_data
|
556
|
+
end
|
557
|
+
|
558
|
+
when 'find_up'
|
559
|
+
filename = hash_value
|
560
|
+
|
561
|
+
unless filename.is_a? String
|
562
|
+
raise "find_up filename must be string, found #{ filename.inspect }"
|
563
|
+
end
|
564
|
+
|
565
|
+
debug "found 'find_up', looking for file named #{ filename }"
|
566
|
+
|
567
|
+
QB::Util.find_up filename
|
568
|
+
|
569
|
+
else
|
570
|
+
raise "bad key: #{ hash_key } in #{ self.meta_path.to_s }:default_dir"
|
571
|
+
|
572
|
+
end
|
573
|
+
end
|
574
|
+
end # default_dir
|
575
|
+
|
484
576
|
private
|
485
577
|
|
486
578
|
# get the value at the first found of the keys or the default.
|
data/lib/qb/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: qb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.51
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- nrser
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-03-
|
11
|
+
date: 2017-03-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|