qb 0.3.25 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (113) hide show
  1. checksums.yaml +4 -4
  2. data/VERSION +1 -1
  3. data/ansible.cfg +10 -1
  4. data/exe/.qb_interop_receive +3 -10
  5. data/exe/qb +8 -2
  6. data/lib/python/qb/__init__.py +6 -0
  7. data/{roles/qb/ruby/rspec/setup/tasks/persistence.yml → lib/python/qb/ansible/__init__.py} +0 -0
  8. data/lib/python/qb/ansible/modules/__init__.py +0 -0
  9. data/lib/python/qb/ansible/modules/docker/__init__.py +0 -0
  10. data/lib/python/qb/ansible/modules/docker/client.py +177 -0
  11. data/lib/python/qb/ansible/modules/docker/image_manager.py +754 -0
  12. data/lib/python/qb/ipc/__init__.py +0 -0
  13. data/lib/python/qb/ipc/stdio/__init__.py +99 -0
  14. data/lib/python/qb/ipc/stdio/logging.py +151 -0
  15. data/lib/qb.rb +3 -3
  16. data/lib/qb/ansible/cmds/playbook.rb +5 -14
  17. data/lib/qb/ansible/env.rb +36 -6
  18. data/lib/qb/ansible/module.rb +396 -152
  19. data/lib/qb/ansible/module/response.rb +195 -0
  20. data/lib/qb/ansible/modules.rb +42 -0
  21. data/lib/qb/ansible/modules/docker/image.rb +273 -0
  22. data/lib/qb/cli.rb +5 -18
  23. data/lib/qb/cli/run.rb +2 -2
  24. data/lib/qb/data.rb +22 -0
  25. data/lib/qb/data/immutable.rb +39 -0
  26. data/lib/qb/docker.rb +2 -0
  27. data/lib/qb/docker/cli.rb +430 -0
  28. data/lib/qb/docker/image.rb +207 -0
  29. data/lib/qb/docker/image/name.rb +309 -0
  30. data/lib/qb/docker/image/tag.rb +113 -0
  31. data/lib/qb/docker/repo.rb +0 -0
  32. data/lib/qb/errors.rb +17 -3
  33. data/lib/qb/execution.rb +83 -0
  34. data/lib/qb/ipc.rb +48 -0
  35. data/lib/qb/ipc/stdio.rb +32 -0
  36. data/lib/qb/ipc/stdio/client.rb +267 -0
  37. data/lib/qb/ipc/stdio/server.rb +229 -0
  38. data/lib/qb/ipc/stdio/server/in_service.rb +18 -0
  39. data/lib/qb/ipc/stdio/server/log_service.rb +168 -0
  40. data/lib/qb/ipc/stdio/server/out_service.rb +20 -0
  41. data/lib/qb/ipc/stdio/server/service.rb +229 -0
  42. data/lib/qb/options.rb +360 -502
  43. data/lib/qb/options/option.rb +293 -115
  44. data/lib/qb/options/option/option_parser_concern.rb +228 -0
  45. data/lib/qb/options/types.rb +73 -0
  46. data/lib/qb/package.rb +0 -1
  47. data/lib/qb/package/version.rb +179 -58
  48. data/lib/qb/package/version/from.rb +192 -51
  49. data/lib/qb/package/version/leveled.rb +1 -1
  50. data/lib/qb/path.rb +3 -2
  51. data/lib/qb/repo/git.rb +9 -85
  52. data/lib/qb/role/default_dir.rb +2 -2
  53. data/lib/qb/role/errors.rb +2 -8
  54. data/lib/qb/util.rb +1 -2
  55. data/lib/qb/util/bundler.rb +73 -43
  56. data/lib/qb/util/decorators.rb +99 -0
  57. data/lib/qb/util/interop.rb +7 -8
  58. data/lib/qb/util/resource.rb +12 -13
  59. data/lib/qb/version.rb +10 -0
  60. data/library/path_facts +5 -10
  61. data/library/qb.module.rb +105 -0
  62. data/library/stream +6 -26
  63. data/load/ansible/module/autorun.rb +25 -0
  64. data/load/ansible/module/script.rb +123 -0
  65. data/load/rebundle.rb +39 -0
  66. data/plugins/filter/dict_filters.py +56 -0
  67. data/plugins/{filter_plugins/path_plugins.py → filter/path_filters.py} +0 -0
  68. data/plugins/{filter_plugins/ruby_interop_plugins.py → filter/ruby_interop_filters.py} +1 -17
  69. data/plugins/{filter_plugins/string_plugins.py → filter/string_filters.py} +1 -20
  70. data/plugins/{filter_plugins/version_plugins.py → filter/version_filters.py} +3 -18
  71. data/plugins/{lookup_plugins/every.py → lookup/every_lookups.py} +0 -0
  72. data/plugins/{lookup_plugins/resolve.py → lookup/resolve_lookups.py} +0 -0
  73. data/plugins/{lookup_plugins/version.py → lookup/version_lookups.py} +0 -16
  74. data/plugins/test/dict_tests.py +36 -0
  75. data/plugins/test/string_tests.py +36 -0
  76. data/qb.gemspec +7 -3
  77. data/roles/nrser.rb/library/set_fact_with_ruby.rb +3 -9
  78. data/roles/nrser.state_mate/library/state +3 -17
  79. data/roles/qb/call/meta/qb.yml +1 -1
  80. data/roles/qb/dev/ref/repo/git/meta/qb.yml +1 -1
  81. data/roles/qb/{ruby/rspec/setup → docker/mac/kubernetes}/defaults/main.yml +1 -1
  82. data/roles/qb/{ruby/rspec/setup → docker/mac/kubernetes}/meta/main.yml +3 -2
  83. data/roles/qb/{ruby/rspec/setup → docker/mac/kubernetes}/meta/qb.yml +12 -7
  84. data/roles/qb/docker/mac/kubernetes/tasks/main.yml +45 -0
  85. data/roles/qb/git/check/clean/meta/qb.yml +1 -1
  86. data/roles/qb/git/ignore/meta/qb +10 -3
  87. data/roles/qb/git/submodule/update/library/git_submodule_update +17 -27
  88. data/roles/qb/github/pages/setup/meta/qb.yml +1 -1
  89. data/roles/qb/labs/atom/apm/meta/qb.yml +1 -1
  90. data/roles/qb/osx/git/change_case/meta/qb.yml +1 -1
  91. data/roles/qb/osx/notif/meta/qb.yml +1 -1
  92. data/roles/qb/pkg/bump/library/bump +4 -16
  93. data/roles/qb/role/qb/defaults/main.yml +2 -0
  94. data/roles/qb/role/qb/meta/qb.yml +10 -5
  95. data/roles/qb/role/qb/templates/qb.yml.j2 +7 -2
  96. data/roles/qb/role/templates/library/module.rb.j2 +12 -23
  97. data/roles/qb/role/templates/meta/main.yml.j2 +14 -1
  98. data/roles/qb/ruby/bundler/meta/qb.yml +1 -1
  99. data/roles/qb/ruby/dependency/meta/qb.yml +1 -1
  100. data/roles/qb/ruby/gem/bin_stubs/meta/qb.yml +1 -1
  101. data/roles/qb/ruby/gem/bin_stubs/templates/console +8 -2
  102. data/roles/qb/ruby/gem/build/meta/qb.yml +1 -1
  103. data/roles/qb/ruby/gem/new/meta/qb.yml +1 -1
  104. data/roles/qb/ruby/nrser/rspex/generate/meta/qb.yml +5 -5
  105. data/roles/qb/ruby/nrser/rspex/issue/meta/qb.yml +1 -1
  106. data/roles/qb/ruby/yard/clean/meta/qb.yml +1 -1
  107. data/roles/qb/ruby/yard/config/library/yard.get_output_dir +5 -15
  108. data/roles/qb/ruby/yard/config/meta/qb.yml +1 -1
  109. data/roles/qb/ruby/yard/setup/meta/qb.yml +1 -1
  110. metadata +71 -22
  111. data/lib/qb/ansible_module.rb +0 -5
  112. data/lib/qb/util/stdio.rb +0 -187
  113. data/roles/qb/ruby/rspec/setup/tasks/main.yml +0 -4
@@ -1,23 +1,13 @@
1
- #!/usr/bin/env ruby
2
-
3
1
  #!/usr/bin/env ruby
4
2
  # WANT_JSON
5
3
 
6
- # init bundler in dev env
7
- if ENV['QB_DEV_ENV']
8
- ENV.each {|k, v|
9
- if k.start_with? 'QB_DEV_ENV_'
10
- ENV[k.sub('QB_DEV_ENV_', '')] = v
11
- end
12
- }
13
- require 'bundler/setup'
14
- end
4
+ # Load QB's Ansible module autorun harness
5
+ load ENV['QB_AM_AUTORUN_PATH']
15
6
 
16
7
  require 'qb'
17
8
  require 'cmds'
18
9
  require 'nrser'
19
10
 
20
- using NRSER
21
11
 
22
12
  class GitSubmoduleUpdate < QB::Ansible::Module
23
13
  def main_dir
@@ -46,7 +36,7 @@ class GitSubmoduleUpdate < QB::Ansible::Module
46
36
  detached: detached?(dir),
47
37
  dirty: dirty?(dir),
48
38
  }
49
- }.tap {|subs| QB.debug submodules: subs}
39
+ }.tap { |subs| logger.debug payload: { submodules: subs } }
50
40
  end
51
41
 
52
42
  def dirty? repo_dir
@@ -85,7 +75,7 @@ class GitSubmoduleUpdate < QB::Ansible::Module
85
75
  end
86
76
 
87
77
  def attach! submodule
88
- QB.debug "attaching submodule #{ submodule[:rel_dir] }..."
78
+ logger.debug "attaching submodule #{ submodule[:rel_dir] }..."
89
79
 
90
80
  branch_heads = branch_heads_for_commit submodule
91
81
  branch_head = nil
@@ -107,17 +97,17 @@ class GitSubmoduleUpdate < QB::Ansible::Module
107
97
  return false
108
98
 
109
99
  when 1
110
- QB.debug "commit is head of only one branch: #{ branch_heads[0][:ref] }"
100
+ logger.debug "commit is head of only one branch: #{ branch_heads[0][:ref] }"
111
101
  branch_head = branch_heads[0]
112
102
 
113
103
  else
114
- QB.debug "commit is head of multiple branches..."
104
+ logger.debug "commit is head of multiple branches..."
115
105
 
116
106
  local = branch_heads.select {|bh| bh[:ref].start_with? 'refs/heads'}
117
107
 
118
108
  case local.length
119
109
  when 0
120
- QB.debug "commit is head of multiple remote branches..."
110
+ logger.debug "commit is head of multiple remote branches..."
121
111
 
122
112
  # see if one is master
123
113
  branch_head = branch_heads.find {|bh| bh[:ref].end_with? 'master'}
@@ -133,15 +123,15 @@ class GitSubmoduleUpdate < QB::Ansible::Module
133
123
  return false
134
124
  end
135
125
 
136
- QB.debug "commit is head of local master, using that."
126
+ logger.debug "commit is head of local master, using that."
137
127
 
138
128
  when 1
139
- QB.debug "the commit is head of one local branch, using it."
129
+ logger.debug "the commit is head of one local branch, using it."
140
130
 
141
131
  branch_head = local[0]
142
132
 
143
133
  else
144
- QB.debug "the commit heads multiple local branches..."
134
+ logger.debug "the commit heads multiple local branches..."
145
135
 
146
136
  # again, see if one is master
147
137
  branch_head = local.find {|b| b[:ref].end_with? 'master'}
@@ -157,28 +147,30 @@ class GitSubmoduleUpdate < QB::Ansible::Module
157
147
  return false
158
148
  end
159
149
 
160
- QB.debug "commit is head of remote master, using that."
150
+ logger.debug "commit is head of remote master, using that."
161
151
  end # case local.length
162
152
  end # case branch_heads.length
163
153
 
164
- QB.debug "attaching #{ submodule[:rel_dir] } to #{ branch_head[:ref] }..."
154
+ logger.debug \
155
+ "attaching #{ submodule[:rel_dir] } to #{ branch_head[:ref] }..."
165
156
 
166
157
  branch = branch_head[:ref].split('/')[-1]
167
158
 
168
159
  Dir.chdir submodule[:dir] do
169
- QB.debug "checking out branch #{ branch } for #{ submodule[:rel_dir] }..."
160
+ logger.debug \
161
+ "checking out branch #{ branch } for #{ submodule[:rel_dir] }..."
170
162
 
171
163
  Cmds! "git checkout <%= branch %>", branch: branch
172
164
 
173
165
  # do a pull if the head was on the remote
174
166
  if branch_head[:ref].start_with? 'refs/remotes'
175
- QB.debug "commit is head of remote branch, pulling..."
167
+ logger.debug "commit is head of remote branch, pulling..."
176
168
 
177
169
  Cmds! "git pull origin <%= branch %>", branch: branch
178
170
  end
179
171
  end
180
172
 
181
- QB.debug "attached."
173
+ logger.debug "attached."
182
174
  @changed = true
183
175
  true
184
176
  end
@@ -193,5 +185,3 @@ class GitSubmoduleUpdate < QB::Ansible::Module
193
185
  nil
194
186
  end
195
187
  end
196
-
197
- GitSubmoduleUpdate.new.run
@@ -11,7 +11,7 @@ description: null
11
11
  # generalize in the future.
12
12
  requirements:
13
13
  gems:
14
- qb: ~> 0.3.0
14
+ qb: '>= 0.3.0'
15
15
 
16
16
  # prefix for role variables
17
17
  var_prefix: null
@@ -15,7 +15,7 @@ description: >-
15
15
  # Gemspec-style requirements. Right now only `.gems.qb` is used.
16
16
  requirements:
17
17
  gems:
18
- qb: ~> 0.3.0
18
+ qb: '>= 0.3.0'
19
19
 
20
20
  # Prefix for role variables
21
21
  var_prefix: pkg
@@ -12,7 +12,7 @@ description: >-
12
12
  # generalize in the future.
13
13
  requirements:
14
14
  gems:
15
- qb: ~> 0.3.0
15
+ qb: '>= 0.3.0'
16
16
 
17
17
  # prefix for role variables
18
18
  var_prefix: null
@@ -11,7 +11,7 @@ description: null
11
11
  # generalize in the future.
12
12
  requirements:
13
13
  gems:
14
- qb: ~> 0.3.0
14
+ qb: '>= 0.3.0'
15
15
 
16
16
  # prefix for role variables
17
17
  var_prefix: osx_notif
@@ -1,15 +1,8 @@
1
1
  #!/usr/bin/env ruby
2
2
  # WANT_JSON
3
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
4
+ # Load QB's Ansible module autorun harness
5
+ load ENV['QB_AM_AUTORUN_PATH']
13
6
 
14
7
  require 'json'
15
8
  require 'pathname'
@@ -17,9 +10,6 @@ require 'pathname'
17
10
  require 'qb'
18
11
  require 'cmds'
19
12
  require 'nrser'
20
- require 'nrser/refinements'
21
-
22
- using NRSER
23
13
 
24
14
  class Version
25
15
  # raw version string if available (version was read from file or whatever),
@@ -91,7 +81,7 @@ class Version
91
81
  end # Version
92
82
 
93
83
 
94
- # abstract base class for bumpers - classes that implement reading and
84
+ # abstract base class for bumpers - classes that implement reading and
95
85
  # writing Version objects to a package directory.
96
86
  class Bumper
97
87
  # absolute path to the root directory of the package.
@@ -205,7 +195,7 @@ class Bump < QB::Ansible::Module
205
195
  end # #next_rc
206
196
 
207
197
 
208
- def bump_rc
198
+ def bump_rc
209
199
  @next_version = @bumper.bump! prerelease: ['rc', next_rc]
210
200
  @next_version_formatted = @bumper.class.format @next_version
211
201
 
@@ -268,5 +258,3 @@ class Bump < QB::Ansible::Module
268
258
  end
269
259
 
270
260
  end # Bump
271
-
272
- Bump.new.run
@@ -4,3 +4,5 @@
4
4
  # default the encapsulated qb.role's `role-dest` to `qb_dir` so we can be
5
5
  # sure to be able to use it here... not sure if needed.
6
6
  role_dest: "{{ qb_dir }}"
7
+
8
+ qb_role_default_dir: null
@@ -5,11 +5,16 @@
5
5
  #
6
6
 
7
7
  # prefix for role variables
8
- var_prefix: null
8
+ var_prefix: qb_role
9
9
 
10
- # how to get a default for `dir` if it's not provided as the
10
+ # how to get a default for `dir` if it's not provided as the
11
11
  default_dir: null
12
12
 
13
- options:
14
- - include: qb/role
15
- as: false
13
+ options:
14
+ - include: qb/role
15
+ as: false
16
+
17
+ - name: default_dir
18
+ description: >-
19
+ Optional `default_dir` value for QB metadata (meta/qb.yml).
20
+ type: default_dir
@@ -15,7 +15,12 @@ description: >-
15
15
  # Gemspec-style requirements. Right now only `.gems.qb` is used.
16
16
  requirements:
17
17
  gems:
18
- qb: ~> 0.3.0
18
+ # Role options taking advantage of the {NRSER::Types} system require
19
+ # QB 0.4.
20
+ #
21
+ # TODO Change this to `>= 0.4.0` when 0.4.0 is released.
22
+ #
23
+ qb: '>= 0.4.0.dev'
19
24
 
20
25
  # Prefix for role variables
21
26
  var_prefix: {{ role_namespaceless }}
@@ -24,7 +29,7 @@ var_prefix: {{ role_namespaceless }}
24
29
  #
25
30
  # @see http://www.rubydoc.info/gems/qb/file/doc/qb_roles/metadata/default_dir.md
26
31
  #
27
- default_dir: null # means use *must* provide `DIRECTORY` arg
32
+ default_dir: {{ qb_role_default_dir | to_json }}
28
33
 
29
34
  # If `true`, QB will ensure `DIRECTORY` exists before starting the play.
30
35
  mkdir: false
@@ -1,45 +1,34 @@
1
1
  #!/usr/bin/env ruby
2
2
  # WANT_JSON
3
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 'nrser'
4
+ # Load QB's Ansible module autorun harness
5
+ load ENV['QB_AM_AUTORUN_PATH']
16
6
 
17
7
  class {{ role_module_class }} < QB::Ansible::Module
18
- # define arg names to NRSER::Types::Type instances here and they
19
- # will be type checked and set as @<name>
20
- #
21
- # example:
22
- #
23
- # arg :x, NRSER::Types.array(String)
8
+
9
+ # Arguments
10
+ # ==========================================================================
24
11
  #
25
- # will check that the input json has a key named 'x' and that it's value
26
- # is an Array of String instances, then set it's value as `@x`.
12
+ # Define arguments using the {NRSER::Props} system.
27
13
  #
28
14
 
29
- # entry point for the module. invoked by {\#run}.
15
+ # Execution
16
+ # ==========================================================================
17
+
18
+ # Entry point for the module. invoked by {\#run}.
30
19
  #
31
20
  # @return [nil | {Symbol => #to_json}]
32
21
  # when returning:
33
22
  #
34
23
  # - `nil`: module will successfully exit with no additional changes.
35
24
  #
36
- # - `{Symbol => #to_json}`: Hash will be merged over @facts that
25
+ # - `{Symbol => #to_json}`: Hash will be merged over @facts that
37
26
  # are returned by the module to be set in the Ansible runtime and
38
27
  # the module will exit successfully.
39
28
  #
40
29
  def main
41
30
  return nil
42
31
  end # #main
32
+
43
33
  end # {{ role_module_class }}
44
34
 
45
- {{ role_module_class }}.new.run
@@ -3,7 +3,20 @@
3
3
  # Ansible metadata for `{{ role_role_name }}` role
4
4
  ##############################################################################
5
5
 
6
- allow_duplicates: yes
6
+ # `no` means duplicate invocations with the *same* parameters (vars) will not
7
+ # be run.
8
+ #
9
+ # This is *usually* what you want for idempotent roles: if roles A
10
+ # and B both want a resource R in a particular state, they can both include
11
+ # or depend on a role C that accepts that state as paramters and C will be
12
+ # run only once.
13
+ #
14
+ # However, non-idemptent roles - say one that logs message - will want to set
15
+ # this value to `yes`.
16
+ #
17
+ # https://docs.ansible.com/ansible/devel/user_guide/playbooks_reuse_roles.html#role-duplication-and-execution
18
+ #
19
+ allow_duplicates: no
7
20
 
8
21
  dependencies: []
9
22
  # - role: role-name
@@ -11,7 +11,7 @@ description: null
11
11
  # generalize in the future.
12
12
  requirements:
13
13
  gems:
14
- qb: ~> 0.3.0
14
+ qb: '>= 0.3.0'
15
15
 
16
16
  # prefix for role variables
17
17
  var_prefix: null
@@ -15,7 +15,7 @@ description: >-
15
15
  # Gemspec-style requirements. Right now only `.gems.qb` is used.
16
16
  requirements:
17
17
  gems:
18
- qb: ~> 0.3.0
18
+ qb: '>= 0.3.0'
19
19
 
20
20
  # Prefix for role variables
21
21
  var_prefix: dependency
@@ -12,7 +12,7 @@ description: >-
12
12
  # generalize in the future.
13
13
  requirements:
14
14
  gems:
15
- qb: ~> 0.3.0
15
+ qb: '>= 0.3.0'
16
16
 
17
17
  # prefix for role variables
18
18
  var_prefix: false
@@ -1,6 +1,10 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require "bundler/setup"
3
+ # So that this script can be called from places other than the Gemfile dir,
4
+ # like when it's in `//dev/bin/console` and the Gemfile is at `//dev/Gemfile`
5
+ Dir.chdir __dir__ do
6
+ require "bundler/setup"
7
+ end
4
8
 
5
9
  # Load `nrser` gem and use refinements if it's available
6
10
  begin
@@ -9,11 +13,13 @@ rescue LoadError => error
9
13
  puts "WARN -- Failed to load `nrser` gem."
10
14
  puts "WARN -- Add it do your dependencies or edit #{ __FILE__ }"
11
15
  else
12
- using NRSER
16
+ require 'nrser/refinements/types'
13
17
  using NRSER::Types
14
18
  end
15
19
 
20
+ {% if qb_gem_info is defined %}
16
21
  require '{{ qb_gem_info.name }}'
22
+ {% endif %}
17
23
 
18
24
  # You can add fixtures and/or initialization code here to make experimenting
19
25
  # with your gem easier. You can also use a different console, if you like.
@@ -13,7 +13,7 @@ description: Build an installable `.gem` file from a source directory.
13
13
  # generalize in the future.
14
14
  requirements:
15
15
  gems:
16
- qb: ~> 0.3.0
16
+ qb: '>= 0.3.0'
17
17
 
18
18
  # prefix for role variables
19
19
  var_prefix: gem_build
@@ -12,7 +12,7 @@ description: >-
12
12
  # generalize in the future.
13
13
  requirements:
14
14
  gems:
15
- qb: ~> 0.3.0
15
+ qb: '>= 0.3.0'
16
16
 
17
17
  # prefix for role variables
18
18
  var_prefix: gem
@@ -11,7 +11,7 @@ description: null
11
11
  # generalize in the future.
12
12
  requirements:
13
13
  gems:
14
- qb: ~> 0.3.0
14
+ qb: '>= 0.3.0'
15
15
 
16
16
  # prefix for role variables
17
17
  var_prefix: false # Don't prefix variables
@@ -33,11 +33,11 @@ var_prefix: false # Don't prefix variables
33
33
  # - cwd
34
34
  # - use the directory the `qb` command is invoked form.
35
35
  # - {exe: PATH}
36
- # - invoke an executable, passing a JSON serialization of the options
36
+ # - invoke an executable, passing a JSON serialization of the options
37
37
  # mapping their CLI names to values. path can be relative to role
38
38
  # directory.
39
39
  # - {find_up: FILENAME}
40
- # - starting at the current directory and climbing up to parent
40
+ # - starting at the current directory and climbing up to parent
41
41
  # directories, use the first one that contains FILENAME. error
42
42
  # if none is found.
43
43
  default_dir: null
@@ -45,7 +45,7 @@ default_dir: null
45
45
  # If `true`, QB will ensure the default dir exists before starting the play.
46
46
  #
47
47
  # For legacy reasons, this defaults to `true` if not present, but we want to
48
- # default declare it as `false` here so new roles can turn it on only if
48
+ # default declare it as `false` here so new roles can turn it on only if
49
49
  # they need it.
50
50
  #
51
51
  mkdir: false
@@ -76,7 +76,7 @@ options:
76
76
  - name: require
77
77
  description: >-
78
78
  Explicitly specify files to require at the top of spec files.
79
- When not provided, will add all `<spec_dir>/*_helper.rb` files that
79
+ When not provided, will add all `<spec_dir>/*_helper.rb` files that
80
80
  are NOT auto-required via `<gem_root>/.rspec`.
81
81
  required: false
82
82
  type: list