qb 0.1.38 → 0.1.39
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/dev/scratch/stream/defaults/main.yml +2 -0
- data/dev/scratch/stream/meta/main.yml +7 -0
- data/dev/scratch/stream/meta/qb.yml +44 -0
- data/dev/scratch/stream/tasks/main.yml +4 -0
- data/dev/setup.yml +4 -0
- data/exe/qb +72 -43
- data/lib/qb.rb +1 -1
- data/lib/qb/options.rb +32 -4
- data/lib/qb/role.rb +2 -2
- data/lib/qb/version.rb +1 -1
- data/library/stream +27 -0
- data/plugins/filter_plugins/string.py +84 -0
- data/roles/qb.qb_role/.qb-options.yml +1 -0
- data/roles/qb.qb_role/defaults/main.yml +4 -0
- data/roles/qb.qb_role/meta/qb.yml +7 -0
- data/roles/qb.qb_role/tasks/main.yml +7 -1
- data/roles/qb.qb_role/tasks/module.yml +15 -0
- data/roles/qb.qb_role/templates/module.rb.j2 +22 -0
- data/roles/qb.role/defaults/main.yml +3 -1
- data/roles/qb.role/meta/qb.yml +5 -0
- data/roles/qb.role/tasks/main.yml +31 -15
- metadata +11 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6207437cc02ce11da7b368a69409b8c8e6db027f
|
4
|
+
data.tar.gz: 7883329101be0289c09981a39bec698ff8fbf89a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9407784735ecbc1fc00c6b205710981b3b8aceb36bb7dd0fef9a0545ed138bd1d5cc9e6f2e1f598a57aecbca39151e8cd44b67a9a9cb0c2017c5a3ea9251874d
|
7
|
+
data.tar.gz: a361762772045fe1ea6e39430adb5bee64ef7717243655e0539b5a5a690e982db27e3487cd5dbb0af2bb31a16c81e1524f5b395ecc7e73927c055220ef8442fe
|
@@ -0,0 +1,44 @@
|
|
1
|
+
---
|
2
|
+
# meta/qb.yml file for stream
|
3
|
+
#
|
4
|
+
# qb settings for this role. see README.md for more info.
|
5
|
+
#
|
6
|
+
|
7
|
+
# description of the role to show in it's help output.
|
8
|
+
description: null
|
9
|
+
|
10
|
+
# prefix for role variables
|
11
|
+
var_prefix: null
|
12
|
+
|
13
|
+
# how to get a default for `dir` if it's not provided as the only
|
14
|
+
# positional argument. if a positional argument is provided it will
|
15
|
+
# override the method defined here.
|
16
|
+
#
|
17
|
+
# options:
|
18
|
+
#
|
19
|
+
# - null
|
20
|
+
# - require the value on the command line.
|
21
|
+
# - git_root
|
22
|
+
# - use the git root fof the directory that the `qb` command is invoked
|
23
|
+
# from. useful for 'project-centric' commands so they can be invoked
|
24
|
+
# from anywhere in the repo.
|
25
|
+
# - cwd
|
26
|
+
# - use the directory the `qb` command is invoked form.
|
27
|
+
# - {exe: PATH}
|
28
|
+
# - invoke an execuable, passing a JSON serialization of the options
|
29
|
+
# mapping their CLI names to values. path can be relative to role
|
30
|
+
# directory.
|
31
|
+
default_dir: cwd
|
32
|
+
|
33
|
+
# default user to become for play
|
34
|
+
default_user: null
|
35
|
+
|
36
|
+
# set to false to not save options in .qb-options.yml files
|
37
|
+
save_options: true
|
38
|
+
|
39
|
+
options: []
|
40
|
+
# - name: example
|
41
|
+
# description: an example of a variable.
|
42
|
+
# required: false
|
43
|
+
# type: boolean # boolean (default) | string
|
44
|
+
# short: e
|
data/dev/setup.yml
CHANGED
data/exe/qb
CHANGED
@@ -286,6 +286,77 @@ def main args
|
|
286
286
|
playbook_path = Pathname.new(Dir.getwd) + '.qb-playbook.yml'
|
287
287
|
debug playbook_path: playbook_path.to_s
|
288
288
|
|
289
|
+
tmp_roles_path = QB::ROOT + 'tmp' + 'roles'
|
290
|
+
|
291
|
+
ansible_roles_path = (
|
292
|
+
[
|
293
|
+
role.path.expand_path.dirname,
|
294
|
+
tmp_roles_path
|
295
|
+
] + QB::Role.search_path
|
296
|
+
).join(':')
|
297
|
+
|
298
|
+
ansible_library_path = [
|
299
|
+
ROOT + 'library',
|
300
|
+
].join(':')
|
301
|
+
|
302
|
+
ansible_filter_plugins_path = ROOT.join 'plugins', 'filter_plugins'
|
303
|
+
|
304
|
+
template = []
|
305
|
+
template << "ANSIBLE_ROLES_PATH=<%= roles_path %>"
|
306
|
+
template << "ANSIBLE_LIBRARY=<%= library_path %>"
|
307
|
+
template << "ANSIBLE_FILTER_PLUGINS=<%= filter_plugins_path %>"
|
308
|
+
template << "ansible-playbook"
|
309
|
+
|
310
|
+
if play['hosts'] != ['localhost']
|
311
|
+
template << "-i <%= hosts %>"
|
312
|
+
end
|
313
|
+
|
314
|
+
if qb_options['tags']
|
315
|
+
template << "--tags=<%= tags %>"
|
316
|
+
end
|
317
|
+
|
318
|
+
if qb_options['verbose']
|
319
|
+
template << "-#{ 'v' * qb_options['verbose'] }"
|
320
|
+
end
|
321
|
+
|
322
|
+
template << "<%= playbook_path %>"
|
323
|
+
|
324
|
+
cmd = Cmds.sub template.join(" "), [], {
|
325
|
+
roles_path: ansible_roles_path,
|
326
|
+
library_path: ansible_library_path,
|
327
|
+
playbook_path: playbook_path.to_s,
|
328
|
+
hosts: "#{ play['hosts'].join(',') },",
|
329
|
+
tags: (qb_options['tags'] ? qb_options['tags'].join(',') : nil),
|
330
|
+
filter_plugins_path: ansible_filter_plugins_path.to_s,
|
331
|
+
}
|
332
|
+
|
333
|
+
# print
|
334
|
+
# =====
|
335
|
+
#
|
336
|
+
# print useful stuff for debugging / running outside of qb
|
337
|
+
#
|
338
|
+
|
339
|
+
if qb_options['print'].include? 'options'
|
340
|
+
puts "SET OPTIONS:\n\n#{ YAML.dump set_options }\n\n"
|
341
|
+
end
|
342
|
+
|
343
|
+
if qb_options['print'].include? 'cmd'
|
344
|
+
puts "COMMAND:\n\n#{ cmd }\n\n"
|
345
|
+
end
|
346
|
+
|
347
|
+
if qb_options['print'].include? 'playbook'
|
348
|
+
puts "PLAYBOOK:\n\n#{ YAML.dump playbook }\n\n"
|
349
|
+
end
|
350
|
+
|
351
|
+
# stop here if we're not supposed to run
|
352
|
+
exit 0 if !qb_options['run']
|
353
|
+
|
354
|
+
# run
|
355
|
+
# ===
|
356
|
+
#
|
357
|
+
# stuff below here does stuff
|
358
|
+
#
|
359
|
+
|
289
360
|
playbook_path.open('w') do |f|
|
290
361
|
f.write YAML.dump(playbook)
|
291
362
|
end
|
@@ -312,50 +383,8 @@ def main args
|
|
312
383
|
end
|
313
384
|
end
|
314
385
|
|
315
|
-
tmp_roles_path = QB::ROOT + 'tmp' + 'roles'
|
316
|
-
|
317
|
-
ansible_roles_path = (
|
318
|
-
[
|
319
|
-
role.path.expand_path.dirname,
|
320
|
-
tmp_roles_path
|
321
|
-
] + QB::Role.search_path
|
322
|
-
).join(':')
|
323
|
-
|
324
|
-
ansible_library_path = [
|
325
|
-
ROOT + 'library',
|
326
|
-
].join(':')
|
327
|
-
|
328
386
|
Dir.chdir QB::ROOT do
|
329
|
-
with_clean_env do
|
330
|
-
template = []
|
331
|
-
template << "ANSIBLE_ROLES_PATH=<%= roles_path %>"
|
332
|
-
template << "ANSIBLE_LIBRARY=<%= library_path %>"
|
333
|
-
template << "ansible-playbook"
|
334
|
-
|
335
|
-
if play['hosts'] != ['localhost']
|
336
|
-
template << "-i <%= hosts %>"
|
337
|
-
end
|
338
|
-
|
339
|
-
if qb_options['tags']
|
340
|
-
template << "--tags=<%= tags %>"
|
341
|
-
end
|
342
|
-
|
343
|
-
if qb_options['verbose']
|
344
|
-
template << "-#{ 'v' * qb_options['verbose'] }"
|
345
|
-
end
|
346
|
-
|
347
|
-
template << "<%= playbook_path %>"
|
348
|
-
|
349
|
-
cmd = Cmds.sub template.join(" "), [], {
|
350
|
-
roles_path: ansible_roles_path,
|
351
|
-
library_path: ansible_library_path,
|
352
|
-
playbook_path: playbook_path.to_s,
|
353
|
-
hosts: "#{ play['hosts'].join(',') },",
|
354
|
-
tags: (qb_options['tags'] ? qb_options['tags'].join(',') : nil),
|
355
|
-
}
|
356
|
-
|
357
|
-
puts "COMMAND: #{ cmd }"
|
358
|
-
|
387
|
+
with_clean_env do
|
359
388
|
# boot up stdio services so that ansible modules can stream to our
|
360
389
|
# stdout and stderr to print stuff (including debug lines) in real-time
|
361
390
|
stdio_services = {'out' => $stdout, 'err' => $stderr}.map do |name, dest|
|
data/lib/qb.rb
CHANGED
data/lib/qb/options.rb
CHANGED
@@ -162,6 +162,9 @@ module QB
|
|
162
162
|
qb_options = {
|
163
163
|
'hosts' => ['localhost'],
|
164
164
|
'facts' => true,
|
165
|
+
'print' => ['cmd'],
|
166
|
+
'verbose' => false,
|
167
|
+
'run' => true,
|
165
168
|
}
|
166
169
|
|
167
170
|
if role.meta['default_user']
|
@@ -200,14 +203,24 @@ module QB
|
|
200
203
|
end
|
201
204
|
|
202
205
|
opts.on(
|
203
|
-
'-V',
|
204
|
-
|
205
|
-
"run playbook in verbose mode"
|
206
|
+
'-V[LEVEL]',
|
207
|
+
"run playbook in verbose mode. use like -VVV or -V3."
|
206
208
|
) do |value|
|
209
|
+
# QB.debug "verbose", value: value
|
210
|
+
|
207
211
|
qb_options['verbose'] = if value.nil?
|
208
212
|
1
|
209
213
|
else
|
210
|
-
value
|
214
|
+
case value
|
215
|
+
when '0'
|
216
|
+
false
|
217
|
+
when /^[1-4]$/
|
218
|
+
value.to_i
|
219
|
+
when /^[V]{1,3}$/i
|
220
|
+
value.length + 1
|
221
|
+
else
|
222
|
+
raise "bad verbose value: #{ value.inspect }"
|
223
|
+
end
|
211
224
|
end
|
212
225
|
end
|
213
226
|
|
@@ -218,6 +231,21 @@ module QB
|
|
218
231
|
qb_options['facts'] = false
|
219
232
|
end
|
220
233
|
|
234
|
+
opts.on(
|
235
|
+
'--PRINT=FLAGS',
|
236
|
+
Array,
|
237
|
+
"set what to print before running."
|
238
|
+
) do |value|
|
239
|
+
qb_options['print'] = value
|
240
|
+
end
|
241
|
+
|
242
|
+
opts.on(
|
243
|
+
'--NO-RUN',
|
244
|
+
"don't run the playbook (useful to just print stuff)",
|
245
|
+
) do |value|
|
246
|
+
qb_options['run'] = false
|
247
|
+
end
|
248
|
+
|
221
249
|
add opts, role_options, role
|
222
250
|
|
223
251
|
opts.on_tail("-h", "--help", "Show this message") do
|
data/lib/qb/role.rb
CHANGED
@@ -136,9 +136,9 @@ module QB
|
|
136
136
|
return namespaceless_prefix_matches
|
137
137
|
end
|
138
138
|
|
139
|
-
# see if we word match any
|
139
|
+
# see if we word match any relative paths
|
140
140
|
name_word_matches = available.select {|role|
|
141
|
-
QB::Util.words_start_with? role.
|
141
|
+
QB::Util.words_start_with? role.rel_path.to_s, input
|
142
142
|
}
|
143
143
|
return name_word_matches unless name_word_matches.empty?
|
144
144
|
|
data/lib/qb/version.rb
CHANGED
data/library/stream
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# WANT_JSON
|
3
|
+
|
4
|
+
# init bundler in dev env
|
5
|
+
if ENV['QB_DEV_ENV']
|
6
|
+
ENV.each {|k, v|
|
7
|
+
if k.start_with? 'QB_DEV_ENV_'
|
8
|
+
ENV[k.sub('QB_DEV_ENV_', '')] = v
|
9
|
+
end
|
10
|
+
}
|
11
|
+
require 'bundler/setup'
|
12
|
+
end
|
13
|
+
|
14
|
+
require 'qb'
|
15
|
+
require 'cmds'
|
16
|
+
|
17
|
+
class Stream < QB::AnsibleModule
|
18
|
+
def main
|
19
|
+
Dir.chdir @args['chdir'] if @args['chdir']
|
20
|
+
|
21
|
+
status = Cmds.stream @args['cmd']
|
22
|
+
|
23
|
+
changed!
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
Stream.new.run
|
@@ -0,0 +1,84 @@
|
|
1
|
+
from __future__ import (absolute_import, division, print_function)
|
2
|
+
__metaclass__ = type
|
3
|
+
|
4
|
+
import sys
|
5
|
+
import re
|
6
|
+
|
7
|
+
from ansible.errors import AnsibleError
|
8
|
+
|
9
|
+
def cap(string):
|
10
|
+
'''just upper-case the first damn letter.
|
11
|
+
|
12
|
+
>>> cap("DoSomething")
|
13
|
+
'DoSomething'
|
14
|
+
|
15
|
+
>>> cap('doSomething')
|
16
|
+
'DoSomething'
|
17
|
+
'''
|
18
|
+
return string[0].upper() + string[1:]
|
19
|
+
|
20
|
+
|
21
|
+
def words(string):
|
22
|
+
'''break a string into words
|
23
|
+
|
24
|
+
>>> words('git_submodule_update')
|
25
|
+
['git', 'submodule', 'update']
|
26
|
+
|
27
|
+
>>> words("qb.DoSomething")
|
28
|
+
['qb', 'DoSomething']
|
29
|
+
'''
|
30
|
+
return re.split('[\W\_]+', string)
|
31
|
+
|
32
|
+
|
33
|
+
def camel_case(string):
|
34
|
+
'''convert a name to camel case.
|
35
|
+
|
36
|
+
>>> camel_case("git_submodule_update")
|
37
|
+
'gitSubmoduleUpdate'
|
38
|
+
|
39
|
+
>>> camel_case("git-submodule-update")
|
40
|
+
'gitSubmoduleUpdate'
|
41
|
+
|
42
|
+
>>> camel_case("qb.do_something")
|
43
|
+
'qbDoSomething'
|
44
|
+
|
45
|
+
>>> camel_case("qb.DoSomething")
|
46
|
+
'qbDoSomething'
|
47
|
+
'''
|
48
|
+
w = words(string)
|
49
|
+
return w[0] + "".join(cap(s) for s in w[1:])
|
50
|
+
|
51
|
+
|
52
|
+
def cap_camel_case(string):
|
53
|
+
'''convert a string to camel case with a leading capital.
|
54
|
+
|
55
|
+
>>> upper_camel_case("git_submodule_update")
|
56
|
+
'GitSubmoduleUpdate'
|
57
|
+
|
58
|
+
>>> upper_camel_case("git-submodule-update")
|
59
|
+
'GitSubmoduleUpdate'
|
60
|
+
|
61
|
+
>>> upper_camel_case("qb.do_something")
|
62
|
+
'QbDoSomething'
|
63
|
+
'''
|
64
|
+
return cap(camel_case(string))
|
65
|
+
|
66
|
+
|
67
|
+
class FilterModule(object):
|
68
|
+
''' some string filters '''
|
69
|
+
|
70
|
+
def filters(self):
|
71
|
+
return {
|
72
|
+
'cap': cap,
|
73
|
+
'words': words,
|
74
|
+
'camel_case': camel_case,
|
75
|
+
'cap_camel_case': cap_camel_case,
|
76
|
+
'class_case': cap_camel_case,
|
77
|
+
}
|
78
|
+
|
79
|
+
|
80
|
+
# testing - call camel_case on first cli arg and print result
|
81
|
+
if __name__ == '__main__':
|
82
|
+
import doctest
|
83
|
+
doctest.testmod()
|
84
|
+
|
@@ -11,5 +11,12 @@ var_prefix: null
|
|
11
11
|
default_dir: null
|
12
12
|
|
13
13
|
options:
|
14
|
+
- name: modules
|
15
|
+
description: >-
|
16
|
+
create ruby module boilerplate(s) in library using QB::AnsibleModule.
|
17
|
+
type: array
|
18
|
+
required: false
|
19
|
+
implies: library
|
20
|
+
|
14
21
|
- include: qb.role
|
15
22
|
as: false
|
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
- set_fact:
|
3
|
+
qb_role_module_class: "{{ qb_role_module | class_case }}"
|
4
|
+
qb_role_module_path: "{{ qb_role_dest }}/library/{{ qb_role_module }}"
|
5
|
+
|
6
|
+
- name: "create {{ qb_role_module }} module"
|
7
|
+
template:
|
8
|
+
src: module.rb.j2
|
9
|
+
dest: "{{ qb_role_module_path }}"
|
10
|
+
force: "{{ role_force }}"
|
11
|
+
|
12
|
+
- name: "make library/{{ qb_role_module }} executable"
|
13
|
+
file:
|
14
|
+
path: "{{ qb_role_module_path }}"
|
15
|
+
mode: a+x
|
@@ -0,0 +1,22 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# WANT_JSON
|
3
|
+
|
4
|
+
# init bundler in dev env
|
5
|
+
if ENV['QB_DEV_ENV']
|
6
|
+
ENV.each {|k, v|
|
7
|
+
if k.start_with? 'QB_DEV_ENV_'
|
8
|
+
ENV[k.sub('QB_DEV_ENV_', '')] = v
|
9
|
+
end
|
10
|
+
}
|
11
|
+
require 'bundler/setup'
|
12
|
+
end
|
13
|
+
|
14
|
+
require 'qb'
|
15
|
+
|
16
|
+
class {{ qb_role_module_class }} < QB::AnsibleModule
|
17
|
+
def main
|
18
|
+
nil
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
{{ qb_role_module_class }}.new.run
|
@@ -1,7 +1,8 @@
|
|
1
1
|
---
|
2
|
+
role_dest: "{{ qb_dir }}"
|
2
3
|
role_force: false
|
3
4
|
# can't be named `role_name` 'cause ansible sets that?
|
4
|
-
role_role_name: "{{
|
5
|
+
role_role_name: "{{ role_dest | basename }}"
|
5
6
|
role_defaults: true
|
6
7
|
role_files: false
|
7
8
|
role_handlers: false
|
@@ -10,6 +11,7 @@ role_tasks: true
|
|
10
11
|
role_templates: false
|
11
12
|
role_vars: false
|
12
13
|
role_readme: false
|
14
|
+
role_library: false
|
13
15
|
|
14
16
|
# galaxy
|
15
17
|
role_galaxy: false
|
data/roles/qb.role/meta/qb.yml
CHANGED
@@ -5,14 +5,14 @@
|
|
5
5
|
|
6
6
|
- name: create defaults directory
|
7
7
|
file:
|
8
|
-
path: "{{
|
8
|
+
path: "{{ role_dest }}/defaults"
|
9
9
|
state: directory
|
10
10
|
when: role_defaults
|
11
11
|
|
12
12
|
- name: create defaults/main.yml
|
13
13
|
template:
|
14
14
|
src: defaults/main.yml.j2
|
15
|
-
dest: "{{
|
15
|
+
dest: "{{ role_dest }}/defaults/main.yml"
|
16
16
|
force: "{{ role_force }}"
|
17
17
|
when: role_defaults
|
18
18
|
|
@@ -21,7 +21,7 @@
|
|
21
21
|
|
22
22
|
- name: create files directory
|
23
23
|
file:
|
24
|
-
path: "{{
|
24
|
+
path: "{{ role_dest }}/files"
|
25
25
|
state: directory
|
26
26
|
when: role_files
|
27
27
|
|
@@ -30,7 +30,7 @@
|
|
30
30
|
- name: create a .gitkeep in the files directory
|
31
31
|
copy:
|
32
32
|
content: ""
|
33
|
-
dest: "{{
|
33
|
+
dest: "{{ role_dest }}/files/.gitkeep"
|
34
34
|
force: "{{ role_force }}"
|
35
35
|
when: role_files
|
36
36
|
|
@@ -39,14 +39,14 @@
|
|
39
39
|
|
40
40
|
- name: create handlers directory
|
41
41
|
file:
|
42
|
-
path: "{{
|
42
|
+
path: "{{ role_dest }}/handlers"
|
43
43
|
state: directory
|
44
44
|
when: role_handlers
|
45
45
|
|
46
46
|
- name: create handlers/main.yml
|
47
47
|
template:
|
48
48
|
src: handlers/main.yml.j2
|
49
|
-
dest: "{{
|
49
|
+
dest: "{{ role_dest }}/handlers/main.yml"
|
50
50
|
force: "{{ role_force }}"
|
51
51
|
when: role_handlers
|
52
52
|
|
@@ -55,14 +55,14 @@
|
|
55
55
|
|
56
56
|
- name: create meta directory
|
57
57
|
file:
|
58
|
-
path: "{{
|
58
|
+
path: "{{ role_dest }}/meta"
|
59
59
|
state: directory
|
60
60
|
when: role_meta
|
61
61
|
|
62
62
|
- name: create meta/main.yml
|
63
63
|
template:
|
64
64
|
src: meta/main.yml.j2
|
65
|
-
dest: "{{
|
65
|
+
dest: "{{ role_dest }}/meta/main.yml"
|
66
66
|
force: "{{ role_force }}"
|
67
67
|
when: role_meta
|
68
68
|
|
@@ -71,14 +71,14 @@
|
|
71
71
|
|
72
72
|
- name: create tasks directory
|
73
73
|
file:
|
74
|
-
path: "{{
|
74
|
+
path: "{{ role_dest }}/tasks"
|
75
75
|
state: directory
|
76
76
|
when: role_tasks
|
77
77
|
|
78
78
|
- name: create tasks/main.yml
|
79
79
|
template:
|
80
80
|
src: tasks/main.yml.j2
|
81
|
-
dest: "{{
|
81
|
+
dest: "{{ role_dest }}/tasks/main.yml"
|
82
82
|
force: "{{ role_force }}"
|
83
83
|
when: role_tasks
|
84
84
|
|
@@ -87,7 +87,7 @@
|
|
87
87
|
|
88
88
|
- name: create templates directory
|
89
89
|
file:
|
90
|
-
path: "{{
|
90
|
+
path: "{{ role_dest }}/templates"
|
91
91
|
state: directory
|
92
92
|
when: role_templates
|
93
93
|
|
@@ -96,7 +96,7 @@
|
|
96
96
|
- name: create a .gitkeep in the templates directory
|
97
97
|
copy:
|
98
98
|
content: ""
|
99
|
-
dest: "{{
|
99
|
+
dest: "{{ role_dest }}/templates/.gitkeep"
|
100
100
|
force: "{{ role_force }}"
|
101
101
|
when: role_templates
|
102
102
|
|
@@ -105,14 +105,14 @@
|
|
105
105
|
|
106
106
|
- name: create vars directory
|
107
107
|
file:
|
108
|
-
path: "{{
|
108
|
+
path: "{{ role_dest }}/vars"
|
109
109
|
state: directory
|
110
110
|
when: role_vars
|
111
111
|
|
112
112
|
- name: create vars/main.yml
|
113
113
|
template:
|
114
114
|
src: vars/main.yml.j2
|
115
|
-
dest: "{{
|
115
|
+
dest: "{{ role_dest }}/vars/main.yml"
|
116
116
|
force: "{{ role_force }}"
|
117
117
|
when: role_vars
|
118
118
|
|
@@ -122,7 +122,23 @@
|
|
122
122
|
- name: create README.md
|
123
123
|
template:
|
124
124
|
src: README.md.j2
|
125
|
-
dest: "{{
|
125
|
+
dest: "{{ role_dest }}/README.md"
|
126
126
|
force: "{{ role_force }}"
|
127
127
|
when: role_readme
|
128
|
+
|
129
|
+
# library
|
130
|
+
# =======
|
131
|
+
|
132
|
+
- name: create library directory
|
133
|
+
file:
|
134
|
+
path: "{{ role_dest }}/library"
|
135
|
+
state: directory
|
136
|
+
when: role_library
|
137
|
+
|
138
|
+
- name: create a .gitkeep in the library directory
|
139
|
+
copy:
|
140
|
+
content: ""
|
141
|
+
dest: "{{ role_dest }}/library/.gitkeep"
|
142
|
+
force: "{{ role_force }}"
|
143
|
+
when: role_library
|
128
144
|
|
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.39
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- nrser
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-12-
|
11
|
+
date: 2016-12-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -175,6 +175,10 @@ files:
|
|
175
175
|
- dev/scratch/stdio/meta/main.yml
|
176
176
|
- dev/scratch/stdio/meta/qb.yml
|
177
177
|
- dev/scratch/stdio/tasks/main.yml
|
178
|
+
- dev/scratch/stream/defaults/main.yml
|
179
|
+
- dev/scratch/stream/meta/main.yml
|
180
|
+
- dev/scratch/stream/meta/qb.yml
|
181
|
+
- dev/scratch/stream/tasks/main.yml
|
178
182
|
- dev/setup.yml
|
179
183
|
- exe/qb
|
180
184
|
- lib/qb.rb
|
@@ -187,6 +191,8 @@ files:
|
|
187
191
|
- lib/qb/version.rb
|
188
192
|
- library/git_mkdir.py
|
189
193
|
- library/qb_facts.py
|
194
|
+
- library/stream
|
195
|
+
- plugins/filter_plugins/string.py
|
190
196
|
- qb.gemspec
|
191
197
|
- roles/nrser.blockinfile/CONTRIBUTING.md
|
192
198
|
- roles/nrser.blockinfile/README.md
|
@@ -549,10 +555,13 @@ files:
|
|
549
555
|
- roles/qb.project/templates/bootstrap.yml.j2
|
550
556
|
- roles/qb.project/templates/setup.yml.j2
|
551
557
|
- roles/qb.qb_role/.qb-options.yml
|
558
|
+
- roles/qb.qb_role/defaults/main.yml
|
552
559
|
- roles/qb.qb_role/meta/main.yml
|
553
560
|
- roles/qb.qb_role/meta/qb.yml
|
554
561
|
- roles/qb.qb_role/tasks/main.yml
|
562
|
+
- roles/qb.qb_role/tasks/module.yml
|
555
563
|
- roles/qb.qb_role/templates/.gitkeep
|
564
|
+
- roles/qb.qb_role/templates/module.rb.j2
|
556
565
|
- roles/qb.qb_role/templates/qb.yml.j2
|
557
566
|
- roles/qb.release_gem/defaults/main.yml
|
558
567
|
- roles/qb.release_gem/meta/main.yml
|