qb 0.1.38 → 0.1.39

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b3db6c782539a18c0595a06811de825a145c6554
4
- data.tar.gz: 9b0f932cbf62a32649e8742fd7e1d273fbda591e
3
+ metadata.gz: 6207437cc02ce11da7b368a69409b8c8e6db027f
4
+ data.tar.gz: 7883329101be0289c09981a39bec698ff8fbf89a
5
5
  SHA512:
6
- metadata.gz: 005c10da52d51cf20e1624d59622471944f3358b5f3f747e2e471ce4f598c90ee3aba9f2039e0997aca4857b3273c311759f9676f71493127ea3e2754562cde4
7
- data.tar.gz: e4c764c6a9cbed12327362e497c608174f2e6c28e88b5ccb52054214c7b18813564b4fb6a1800e709c9205ea5cb976312ca49ecf7fc5e5152c01e7c1f13842e1
6
+ metadata.gz: 9407784735ecbc1fc00c6b205710981b3b8aceb36bb7dd0fef9a0545ed138bd1d5cc9e6f2e1f598a57aecbca39151e8cd44b67a9a9cb0c2017c5a3ea9251874d
7
+ data.tar.gz: a361762772045fe1ea6e39430adb5bee64ef7717243655e0539b5a5a690e982db27e3487cd5dbb0af2bb31a16c81e1524f5b395ecc7e73927c055220ef8442fe
@@ -0,0 +1,2 @@
1
+ ---
2
+ # defaults file for stream
@@ -0,0 +1,7 @@
1
+ ---
2
+ # meta file for stream
3
+
4
+ allow_duplicates: yes
5
+
6
+ dependencies: []
7
+ # - role: qb.stream
@@ -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
@@ -0,0 +1,4 @@
1
+ ---
2
+ # tasks file for stream
3
+ - stream:
4
+ cmd: ping nrser.com
@@ -6,10 +6,14 @@
6
6
 
7
7
  pre_tasks:
8
8
  - name: load dev_setup facts
9
+ tags:
10
+ - always
9
11
  dev_setup_facts:
10
12
 
11
13
  roles:
12
14
  - role: nrser.dev_setup
15
+ tags:
16
+ - dev-setup
13
17
  # repos that are co-developed
14
18
  dev_setup_repos:
15
19
  - owner: nrser
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
@@ -32,7 +32,7 @@ module QB
32
32
  end
33
33
 
34
34
  # $stderr.puts("DEBUG " + format(msg, values))
35
- $stderr.puts YAML.dump(dumpObj)
35
+ $stderr.puts dumpObj.pretty_inspect
36
36
  end
37
37
 
38
38
  def self.get_default_dir role, cwd, options
@@ -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
- '--VERBOSE[=LEVEL]',
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.to_i
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
@@ -136,9 +136,9 @@ module QB
136
136
  return namespaceless_prefix_matches
137
137
  end
138
138
 
139
- # see if we word match any names
139
+ # see if we word match any relative paths
140
140
  name_word_matches = available.select {|role|
141
- QB::Util.words_start_with? role.name, input
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
 
@@ -1,7 +1,7 @@
1
1
  module QB
2
2
  GEM_NAME = 'qb'
3
3
 
4
- VERSION = "0.1.38"
4
+ VERSION = "0.1.39"
5
5
 
6
6
  def self.gemspec
7
7
  Gem.loaded_specs[GEM_NAME]
@@ -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
+
@@ -1,3 +1,4 @@
1
1
  ---
2
2
  qb.qb_role:
3
+ defaults: true
3
4
  templates: true
@@ -0,0 +1,4 @@
1
+ ---
2
+ # defaults file for qb.qb_role
3
+ qb_role_dest: "{{ qb_dir }}"
4
+ qb_role_modules: []
@@ -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
@@ -10,4 +10,10 @@
10
10
  template:
11
11
  src: qb.yml.j2
12
12
  dest: "{{ dir }}/meta/qb.yml"
13
- force: false
13
+ force: false
14
+
15
+ - include: module.yml
16
+ with_items: "{{ qb_role_modules }}"
17
+ loop_control:
18
+ loop_var: qb_role_module
19
+
@@ -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: "{{ dir | basename }}"
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
@@ -67,6 +67,11 @@ vars:
67
67
  description: include README.md
68
68
  short: r
69
69
 
70
+ - name: library
71
+ type: boolean
72
+ description: create library directory.
73
+ short: l
74
+
70
75
  - name: project
71
76
  type: boolean
72
77
  description: create a project repo for this role
@@ -5,14 +5,14 @@
5
5
 
6
6
  - name: create defaults directory
7
7
  file:
8
- path: "{{ dir }}/defaults"
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: "{{ dir }}/defaults/main.yml"
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: "{{ dir }}/files"
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: "{{ dir }}/files/.gitkeep"
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: "{{ dir }}/handlers"
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: "{{ dir }}/handlers/main.yml"
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: "{{ dir }}/meta"
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: "{{ dir }}/meta/main.yml"
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: "{{ dir }}/tasks"
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: "{{ dir }}/tasks/main.yml"
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: "{{ dir }}/templates"
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: "{{ dir }}/templates/.gitkeep"
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: "{{ dir }}/vars"
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: "{{ dir }}/vars/main.yml"
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: "{{ dir }}/README.md"
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.38
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-06 00:00:00.000000000 Z
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