qb 0.3.11 → 0.3.12

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: d1678a4a6dfc757aecb5af77047d7297a904fb31
4
- data.tar.gz: 3625a1a8927af9408f0a86bf835f3036edd232e8
3
+ metadata.gz: cad865997a7d3c28a43696a18d61845343640f57
4
+ data.tar.gz: 862f3381e5233eb4958e534beeeeb6e8713f70b5
5
5
  SHA512:
6
- metadata.gz: 41154f9bdd64ad770b27dec333ab1a17eb972ac3611518b2a79e945ab35b0f8e19ab4a41fadea8a3e54731ec3c030216ccf4f61b1eee70d445b6f1b28ea14e81
7
- data.tar.gz: 3a123e89b2ea5b62b67b6ba07b4296f9d1a5288cb99a30effd91d58a393e902de16c0d2fd5d4d96a5151857ab367a2b99ac43b791e151140beeba3dc7609a976
6
+ metadata.gz: e84892a7b62dad0a3f7d4dfb4a5aa5dd5c865a3412ef8b6f1e1f70ada799e61b3f7397511a8e3aa6275c3927ff0c32c21fd1aae179bc6551689d2251db047275
7
+ data.tar.gz: c40a7c516e791e845d335ad3a8aa31dfc8537c3a5f7d72010cd28f1e2bd4dc04fe40c829fd600f974e72ec3f27e035dce51fbd3e1d06744c1b3b9c00a34db310
@@ -0,0 +1,147 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ from __future__ import (absolute_import, division, print_function)
4
+ __metaclass__ = type
5
+
6
+ import re
7
+
8
+
9
+
10
+ # Constants
11
+ # ============================================================================
12
+
13
+ # Regular expression to split strings into their module namespace pieces by
14
+ # `::` (Ruby) or `.` (Python, Javascript).
15
+ #
16
+ NAMESPACE_SPLIT_RE = re.compile(r'(?:\:\:)|\.|\#')
17
+
18
+
19
+ # Functions
20
+ # ============================================================================
21
+
22
+ def words(string):
23
+ '''break a string into words
24
+
25
+ >>> words('git_submodule_update')
26
+ ['git', 'submodule', 'update']
27
+
28
+ >>> words("qb.DoSomething")
29
+ ['qb', 'Do', 'Something']
30
+
31
+ >>> words("TestGem::SomeClass")
32
+ ['Test', 'Gem', 'Some', 'Class']
33
+
34
+ >>> words("MyAPIClass")
35
+ ['My', 'API', 'Class']
36
+
37
+ >>> words('ThisIsAName')
38
+ ['This', 'Is', 'A', 'Name']
39
+
40
+ >>> words('404Error')
41
+ ['404', 'Error']
42
+
43
+ >>> words('MyPackageV1')
44
+ ['My', 'Package', 'V', '1']
45
+
46
+ # Don't work with doctest I guess..?
47
+ # >>> [print(_) for _ in words(u'中文')]
48
+ # [u'中文']
49
+ '''
50
+
51
+ consumers = [
52
+ [tag, [re.compile(pattern, re.U) for pattern in patterns]]
53
+ for tag, patterns in
54
+ [
55
+ ['break', [r'([\W\_]+)']],
56
+ ['lower_case', [r'([a-z]+)']],
57
+ ['capitalized', [r'([A-Z][a-z]+)']],
58
+ ['acronym', [
59
+ r'([A-Z]+)[A-Z][a-z]',
60
+ r'([A-Z]+)[0-9]',
61
+ r'([A-Z]+)\z',
62
+ ]],
63
+ ['number', [r'([0-9]+)']],
64
+ ['other', [r'([^0-9a-zA-Z]+)']],
65
+ ]
66
+ ]
67
+
68
+ def find(remaining):
69
+ for tag, exps in consumers:
70
+ for exp in exps:
71
+ # print("matching %s %s %s" % (tag, exp, remaining))
72
+ match = exp.match(remaining)
73
+ if match:
74
+ # print("matched %s! %s" % (tag, match.group(0)))
75
+ return [tag, exp, match]
76
+ raise StandardError("bad string: %s" % remaining)
77
+
78
+ index = 0
79
+ results = []
80
+ remaining = string
81
+
82
+ while len(remaining) > 0:
83
+ [tag, exp, match] = find(remaining)
84
+ if tag != 'break':
85
+ results.append(remaining[:match.end(1)])
86
+ remaining = remaining[match.end(1):]
87
+
88
+ return results
89
+
90
+
91
+ def snake(name):
92
+ '''
93
+ Turn a name into underscore-separated lower case.
94
+
95
+ >>> snake('git_submodule_update')
96
+ 'git_submodule_update'
97
+
98
+ >>> snake("qb.DoSomething")
99
+ 'qb_do_something'
100
+
101
+ >>> snake("TestGem::SomeClass")
102
+ 'test_gem_some_class'
103
+
104
+ >>> snake("MyAPIClass")
105
+ 'my_api_class'
106
+
107
+ >>> snake('ThisIsAName')
108
+ 'this_is_a_name'
109
+
110
+ >>> snake('404Error')
111
+ '404_error'
112
+
113
+ >>> snake('MyPackageV1')
114
+ 'my_package_v_1'
115
+
116
+ '''
117
+ return '_'.join([part.lower() for part in words(name)])
118
+
119
+
120
+ def filepath(name):
121
+ '''
122
+ Turn a name into a file path.
123
+
124
+ >>> filepath('TestGem::SomeClass')
125
+ 'test_gem/some_class'
126
+
127
+ >>> filepath('TestGem::SomeClass#that_method')
128
+ 'test_gem/some_class/that_method'
129
+
130
+ # TODO
131
+ # >>> filepath("TestGem::SomeClass How to do something")
132
+ # 'test_gem/some_class/how_to_do_something'
133
+
134
+ >>> filepath('qb.strings.filepath')
135
+ 'qb/strings/filepath'
136
+
137
+ '''
138
+ namespaces = NAMESPACE_SPLIT_RE.split(name)
139
+ snaked = [snake(words_) for words_ in namespaces]
140
+ joined = "/".join(snaked)
141
+ return joined
142
+
143
+
144
+ # testing - call camel_case on first cli arg and print result
145
+ if __name__ == '__main__':
146
+ import doctest
147
+ doctest.testmod()
@@ -52,6 +52,20 @@ class QB::GitHub::Issue < QB::GitHub::Resource
52
52
  def self.find_by repo_id:, number:
53
53
  new QB::GitHub::API.client.issue( repo_id.path, number )
54
54
  end # .find
55
+
56
+
57
+
58
+ # @todo Document list method.
59
+ #
60
+ # @param [type] arg_name
61
+ # @todo Add name param description.
62
+ #
63
+ # @return [return_type]
64
+ # @todo Document return value.
65
+ #
66
+ def self.list arg_name
67
+ # method body
68
+ end # .list
55
69
 
56
70
 
57
71
 
@@ -4,7 +4,7 @@ module QB
4
4
 
5
5
  GEM_NAME = 'qb'
6
6
 
7
- VERSION = "0.3.11"
7
+ VERSION = "0.3.12"
8
8
 
9
9
  MIN_ANSIBLE_VERSION = Gem::Version.new '2.1.2'
10
10
 
@@ -17,14 +17,41 @@
17
17
  # https://stackoverflow.com/questions/35139025/can-not-handle-attributeerror-module-object-has-no-attribute-maketrans
18
18
  #
19
19
 
20
+
21
+ # Imports
22
+ # ============================================================================
23
+
20
24
  from __future__ import (absolute_import, division, print_function)
21
25
  __metaclass__ = type
22
26
 
23
27
  import sys
24
28
  import re
29
+ import os
25
30
 
26
31
  from ansible.errors import AnsibleError
27
32
 
33
+
34
+ # Project Imports Setup
35
+ # ----------------------------------------------------------------------------
36
+
37
+ PROJECT_ROOT = os.path.realpath(
38
+ os.path.join(
39
+ os.path.dirname(os.path.realpath(__file__)), # //plugins/filter_plugins
40
+ '..', # //plugins
41
+ '..', # //
42
+ )
43
+ )
44
+
45
+ LIB_PYTHON_DIR = os.path.join( PROJECT_ROOT, 'lib', 'python' )
46
+
47
+ if not (LIB_PYTHON_DIR in sys.path):
48
+ sys.path.insert(0, LIB_PYTHON_DIR)
49
+
50
+ # Now we can import from `//lib/python`...
51
+
52
+ import qb.strings
53
+
54
+
28
55
  def cap(string):
29
56
  '''just upper-case the first damn letter.
30
57
 
@@ -37,17 +64,6 @@ def cap(string):
37
64
  return string[0].upper() + string[1:]
38
65
 
39
66
 
40
- def words(string):
41
- '''break a string into words
42
-
43
- >>> words('git_submodule_update')
44
- ['git', 'submodule', 'update']
45
-
46
- >>> words("qb.DoSomething")
47
- ['qb', 'DoSomething']
48
- '''
49
- return re.split('[\W\_]+', string)
50
-
51
67
 
52
68
  def camel_case(string):
53
69
  '''convert a name to camel case.
@@ -71,13 +87,13 @@ def camel_case(string):
71
87
  def cap_camel_case(string):
72
88
  '''convert a string to camel case with a leading capital.
73
89
 
74
- >>> upper_camel_case("git_submodule_update")
90
+ >>> cap_camel_case("git_submodule_update")
75
91
  'GitSubmoduleUpdate'
76
92
 
77
- >>> upper_camel_case("git-submodule-update")
93
+ >>> cap_camel_case("git-submodule-update")
78
94
  'GitSubmoduleUpdate'
79
95
 
80
- >>> upper_camel_case("qb.do_something")
96
+ >>> cap_camel_case("qb.do_something")
81
97
  'QbDoSomething'
82
98
  '''
83
99
  return cap(camel_case(string))
@@ -89,10 +105,11 @@ class FilterModule(object):
89
105
  def filters(self):
90
106
  return {
91
107
  'cap': cap,
92
- 'words': words,
108
+ 'words': qb.strings.words,
93
109
  'camel_case': camel_case,
94
110
  'cap_camel_case': cap_camel_case,
95
111
  'class_case': cap_camel_case,
112
+ 'to_filepath': qb.strings.filepath,
96
113
  }
97
114
 
98
115
 
data/qb.gemspec CHANGED
@@ -97,8 +97,8 @@ Gem::Specification.new do |spec|
97
97
  spec.add_development_dependency "yard"
98
98
  spec.add_development_dependency "pry"
99
99
 
100
- spec.add_dependency "cmds", '~> 0.0', ">= 0.2.3"
101
- spec.add_dependency "nrser", '~> 0.0', ">= 0.0.28"
100
+ spec.add_dependency "cmds", '~> 0.0', ">= 0.2.4"
101
+ spec.add_dependency "nrser", '~> 0.0', ">= 0.0.29"
102
102
  spec.add_dependency "nrser-extras", '~> 0.0', ">= 0.0.3"
103
103
  spec.add_dependency "state_mate", '~> 0.0', ">= 0.0.9"
104
104
  spec.add_dependency 'parseconfig', '~> 1.0', '>= 1.0.8'
@@ -0,0 +1,10 @@
1
+ ---
2
+ # defaults file for qb/rspex/generate
3
+
4
+ gem_root: >-
5
+ {{ qb_dir }}
6
+
7
+ spec_dir: spec
8
+
9
+ spec_abs_dir: >-
10
+ {{ gem_root | path_resolve( spec_dir ) }}
@@ -0,0 +1,8 @@
1
+ ---
2
+ # meta file for qb/rspex/generate
3
+
4
+ allow_duplicates: yes
5
+
6
+ dependencies:
7
+ - role: nrser.rb
8
+
@@ -0,0 +1,91 @@
1
+ ---
2
+ # meta/qb.yml file for qb/rspex/generate
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
+ # Gemspec-style requirements. Right now only `gems:qb` is used, but plan to
11
+ # generalize in the future.
12
+ requirements:
13
+ gems:
14
+ qb: ~> 0.3.0
15
+
16
+ # prefix for role variables
17
+ var_prefix: false # Don't prefix variables
18
+
19
+ # how to get a default for `dir` if it's not provided as the only
20
+ # positional argument. if a positional argument is provided it will
21
+ # override the method defined here.
22
+ #
23
+ # options:
24
+ #
25
+ # - null
26
+ # - require the value on the command line.
27
+ # - false
28
+ # - don't provide qb_dir (means doesn't load or save options either).
29
+ # - git_root
30
+ # - use the git root of the directory that the `qb` command is invoked
31
+ # from. useful for 'project-centric' commands so they can be invoked
32
+ # from anywhere in the repo.
33
+ # - cwd
34
+ # - use the directory the `qb` command is invoked form.
35
+ # - {exe: PATH}
36
+ # - invoke an executable, passing a JSON serialization of the options
37
+ # mapping their CLI names to values. path can be relative to role
38
+ # directory.
39
+ # - {find_up: FILENAME}
40
+ # - starting at the current directory and climbing up to parent
41
+ # directories, use the first one that contains FILENAME. error
42
+ # if none is found.
43
+ default_dir: null
44
+
45
+ # If `true`, QB will ensure the default dir exists before starting the play.
46
+ #
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
49
+ # they need it.
50
+ #
51
+ mkdir: false
52
+
53
+ # default user to become for play
54
+ default_user: null
55
+
56
+ # set to false to not save options in .qb-options.yml files
57
+ save_options: true
58
+
59
+ # options to pass to ansible-playbook
60
+ ansible_options: {}
61
+
62
+ options:
63
+ # - name: example
64
+ # description: an example of a variable.
65
+ # required: false
66
+ # type: boolean # boolean (default) | string
67
+ # short: e
68
+
69
+ - name: spec_dir
70
+ description: >-
71
+ Directory that specs go in. May be relative to the gem root or absolute.
72
+ required: false
73
+ type: path
74
+ short: d
75
+
76
+ - name: require
77
+ description: >-
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
80
+ are NOT auto-required via `<gem_root>/.rspec`.
81
+ required: false
82
+ type: list
83
+ short: r
84
+
85
+ - name: class
86
+ description: >-
87
+ Generate spec file for a class.
88
+ required: false
89
+ type: string
90
+ short: c
91
+
@@ -0,0 +1,22 @@
1
+ ---
2
+
3
+ - name: >-
4
+ Set `dest` for `class={{ class }}` relative to
5
+ `spec_abs_dir={{ spec_abs_dir }}`
6
+ set_fact:
7
+ dest: >-
8
+ {{ spec_abs_dir | path_join( (class | to_filepath) + '_spec.rb' ) }}
9
+
10
+ - name: >-
11
+ Make sure the destination directory `{{ dest | dirname }}` exists
12
+ file:
13
+ dest: >-
14
+ {{ dest | dirname }}
15
+ state: directory
16
+
17
+ - name: >-
18
+ Render spec file template
19
+ template:
20
+ src: class_spec.rb.j2
21
+ dest: >-
22
+ {{ dest }}
@@ -0,0 +1,96 @@
1
+ ---
2
+ ##
3
+ # Figure out what's going on with helpers, which are files like
4
+ #
5
+ # <gem_root>/spec/*_helper.rb
6
+ #
7
+ # They may be auto-required in `<gem_root>/.rspec` with lines like
8
+ #
9
+ # --require spec_helper.rb
10
+ #
11
+ # These tasks determine what helpers a generated spec file should require.
12
+ #
13
+ # Expects:
14
+ #
15
+ # @var [str] spec_abs_dir
16
+ # Absolute path to the target gem's spec directory.
17
+ #
18
+ # @var [list<str>?] require
19
+ # Optional list of string names to require in spec files. If not defined,
20
+ # it will be set - see details below.
21
+ #
22
+ #
23
+ # Provides:
24
+ #
25
+ # @var [list<str>] available_helpers
26
+ # List of "requirable" strings pulled from any `<spec_dir>/*_helper.rb` files
27
+ # found.
28
+ #
29
+ # @var [list<str>] auto_require_helpers
30
+ # List of "auto-required" helpers parsed from `--require *_helper` lines in
31
+ # `<gem_root>/.rspec` (if it exists). Will be `[]` if `.rspec` doesn't exist
32
+ # or has not `--require *_helper` lines.
33
+ #
34
+ # @var [list<str>] require
35
+ # List of string names to require in spec files. If this variables is *not*
36
+ # defined it will be set to all available helpers that are *not*
37
+ # auto-required in `.rspec`.
38
+ #
39
+ ##
40
+
41
+ - name: >-
42
+ Get a list of available `*_helper.rb` files in
43
+ `spec_abs_dir={{ spec_abs_dir }}`
44
+ find:
45
+ paths: >-
46
+ {{ spec_abs_dir }}
47
+ patterns: '*_helper.rb'
48
+ register: found_helpers
49
+
50
+
51
+ - name: >-
52
+ Set `available_helpers` to the extension-less basenames of each file in
53
+ `found_helpers.files`
54
+ set_fact:
55
+ available_helpers: >-
56
+ {{
57
+ found_helpers.files
58
+ | map( attribute='path' )
59
+ | map( 'basename' )
60
+ | map( 'splitext' )
61
+ | map( 'first' )
62
+ | list
63
+ }}
64
+
65
+
66
+ - name: >-
67
+ Set `auto_require_helpers` to the list of spec helpers files that are
68
+ auto-required via `--require <name>_helper` lines in `<gem_root>/.rspec`
69
+ set_fact_with_ruby:
70
+ var_name: auto_require_helpers
71
+ bind:
72
+ gem_root: >-
73
+ {{ gem_root }}
74
+ src: |
75
+ require 'pathname'
76
+
77
+ path = Pathname.new( gem_root ) / '.rspec'
78
+
79
+ if path.file?
80
+ path.read.scan( /^\-\-require(?:\ |\=)(.*_helper)$/ ).map &:first
81
+ else
82
+ []
83
+ end
84
+
85
+
86
+ - when: require is not defined
87
+ name: >-
88
+ Set `require` to all the `available_helpers` that are not
89
+ `auto_require_helpers={{ auto_require_helpers }}`
90
+ set_fact:
91
+ require: >-
92
+ {{ available_helpers | difference( auto_require_helpers ) }}
93
+
94
+
95
+ # - debug: var=require
96
+
@@ -0,0 +1,9 @@
1
+ ---
2
+ # tasks file for qb/rspex/generate
3
+
4
+ - include_tasks: >-
5
+ {{ role_path }}/tasks/helpers.yml
6
+
7
+ - when: class
8
+ include_tasks: >-
9
+ {{ role_path }}/tasks/class.yml
@@ -0,0 +1,10 @@
1
+ {% for name in require %}
2
+ require {{ name | string | to_json }}
3
+ {% endfor %}
4
+
5
+ describe_class {{ class }} do
6
+ ##############################################################################
7
+
8
+ # Examples and groups...
9
+
10
+ end # describe_class {{ class }}
@@ -0,0 +1,2 @@
1
+ ---
2
+ # defaults file for qb/rspex/issue
@@ -1,5 +1,5 @@
1
1
  ---
2
- # meta file for qb/test/rspec/spec/issue
2
+ # meta file for qb/rspex/issue
3
3
 
4
4
  allow_duplicates: yes
5
5
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- # meta/qb.yml file for qb/test/rspec/spec/issue
2
+ # meta/qb.yml file for qb/rspex/issue
3
3
  #
4
4
  # qb settings for this role. see README.md for more info.
5
5
  #
@@ -40,7 +40,7 @@ var_prefix: null
40
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
- default_dir: null
43
+ default_dir: git_root
44
44
 
45
45
  # If `true`, QB will ensure the default dir exists before starting the play.
46
46
  #
@@ -59,9 +59,11 @@ save_options: true
59
59
  # options to pass to ansible-playbook
60
60
  ansible_options: {}
61
61
 
62
- options: []
62
+ options:
63
63
  # - name: example
64
64
  # description: an example of a variable.
65
65
  # required: false
66
66
  # type: boolean # boolean (default) | string
67
67
  # short: e
68
+
69
+ - name:
@@ -1,5 +1,5 @@
1
1
  ---
2
- # tasks file for qb/test/rspec/spec/issue
2
+ # tasks file for qb/rspex/issue
3
3
 
4
4
  - set_fact:
5
5
  issue: >-
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.3.11
4
+ version: 0.3.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - nrser
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-12-10 00:00:00.000000000 Z
11
+ date: 2017-12-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -89,7 +89,7 @@ dependencies:
89
89
  version: '0.0'
90
90
  - - ">="
91
91
  - !ruby/object:Gem::Version
92
- version: 0.2.3
92
+ version: 0.2.4
93
93
  type: :runtime
94
94
  prerelease: false
95
95
  version_requirements: !ruby/object:Gem::Requirement
@@ -99,7 +99,7 @@ dependencies:
99
99
  version: '0.0'
100
100
  - - ">="
101
101
  - !ruby/object:Gem::Version
102
- version: 0.2.3
102
+ version: 0.2.4
103
103
  - !ruby/object:Gem::Dependency
104
104
  name: nrser
105
105
  requirement: !ruby/object:Gem::Requirement
@@ -109,7 +109,7 @@ dependencies:
109
109
  version: '0.0'
110
110
  - - ">="
111
111
  - !ruby/object:Gem::Version
112
- version: 0.0.28
112
+ version: 0.0.29
113
113
  type: :runtime
114
114
  prerelease: false
115
115
  version_requirements: !ruby/object:Gem::Requirement
@@ -119,7 +119,7 @@ dependencies:
119
119
  version: '0.0'
120
120
  - - ">="
121
121
  - !ruby/object:Gem::Version
122
- version: 0.0.28
122
+ version: 0.0.29
123
123
  - !ruby/object:Gem::Dependency
124
124
  name: nrser-extras
125
125
  requirement: !ruby/object:Gem::Requirement
@@ -252,6 +252,7 @@ files:
252
252
  - exe/qb
253
253
  - lib/python/qb/__init__.py
254
254
  - lib/python/qb/interop.py
255
+ - lib/python/qb/strings.py
255
256
  - lib/qb.rb
256
257
  - lib/qb/ansible.rb
257
258
  - lib/qb/ansible/cmds/playbook.rb
@@ -749,10 +750,17 @@ files:
749
750
  - roles/qb/role/qb/tasks/main.yml
750
751
  - roles/qb/role/qb/templates/.gitkeep
751
752
  - roles/qb/role/qb/templates/qb.yml.j2
752
- - roles/qb/test/rspec/spec/issue/defaults/main.yml
753
- - roles/qb/test/rspec/spec/issue/meta/main.yml
754
- - roles/qb/test/rspec/spec/issue/meta/qb.yml
755
- - roles/qb/test/rspec/spec/issue/tasks/main.yml
753
+ - roles/qb/rspex/generate/defaults/main.yml
754
+ - roles/qb/rspex/generate/meta/main.yml
755
+ - roles/qb/rspex/generate/meta/qb.yml
756
+ - roles/qb/rspex/generate/tasks/class.yml
757
+ - roles/qb/rspex/generate/tasks/helpers.yml
758
+ - roles/qb/rspex/generate/tasks/main.yml
759
+ - roles/qb/rspex/generate/templates/class_spec.rb.j2
760
+ - roles/qb/rspex/issue/defaults/main.yml
761
+ - roles/qb/rspex/issue/meta/main.yml
762
+ - roles/qb/rspex/issue/meta/qb.yml
763
+ - roles/qb/rspex/issue/tasks/main.yml
756
764
  - roles/qb/yarn/setup/README.md
757
765
  - roles/qb/yarn/setup/defaults/main.yml
758
766
  - roles/qb/yarn/setup/meta/main.yml
@@ -1,2 +0,0 @@
1
- ---
2
- # defaults file for qb/test/rspec/spec/issue