qb 0.1.17 → 0.1.18

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -2
  3. data/.gitmodules +6 -0
  4. data/.qb-options.yml +1 -1
  5. data/Gemfile +2 -0
  6. data/README.md +6 -1
  7. data/exe/qb +10 -5
  8. data/lib/qb/options.rb +15 -6
  9. data/lib/qb/role.rb +39 -7
  10. data/lib/qb/version.rb +1 -1
  11. data/library/qb_facts.py +47 -7
  12. data/qb.gemspec +12 -6
  13. data/roles/nrser.rb/library/vars.rb +1 -3
  14. data/roles/nrser.state_mate/.gitignore +38 -0
  15. data/roles/nrser.state_mate/.rspec +2 -0
  16. data/roles/nrser.state_mate/Gemfile +8 -0
  17. data/roles/nrser.state_mate/Gemfile.lock +46 -0
  18. data/roles/nrser.state_mate/README.md +45 -0
  19. data/roles/nrser.state_mate/VERSION +1 -0
  20. data/roles/nrser.state_mate/defaults/main.yml +3 -0
  21. data/roles/nrser.state_mate/library/state +82 -0
  22. data/roles/nrser.state_mate/meta/main.yml +138 -0
  23. data/roles/nrser.state_mate/spec/defaults/set_types_spec.rb +112 -0
  24. data/roles/nrser.state_mate/spec/nrser.state_mate_spec.rb +7 -0
  25. data/roles/nrser.state_mate/spec/spec_helper.rb +50 -0
  26. data/roles/nrser.state_mate/tasks/main.yml +7 -0
  27. data/roles/nrser.state_mate/test/ansible/ansible.cfg +5 -0
  28. data/roles/nrser.state_mate/test/ansible/hosts +1 -0
  29. data/roles/nrser.state_mate/test/ansible/template.yml +7 -0
  30. data/roles/qb.hack_npm/README.md +6 -0
  31. data/roles/qb.hack_npm/meta/main.yml +12 -0
  32. data/roles/qb.hack_npm/meta/qb.yml +49 -0
  33. data/roles/qb.hack_npm/tasks/create.yml +21 -0
  34. data/roles/qb.hack_npm/tasks/main.yml +74 -0
  35. data/roles/qb.hack_npm/vars/main.yml +15 -0
  36. data/roles/qb.install_gem/defaults/main.yml +1 -1
  37. data/roles/qb.npm_package/defaults/main.yml +17 -0
  38. data/roles/qb.npm_package/meta/main.yml +16 -0
  39. data/roles/{qb.npm → qb.npm_package}/meta/qb.yml +3 -2
  40. data/roles/qb.npm_package/tasks/main.yml +27 -0
  41. data/roles/qb.qb_role/meta/qb.yml +1 -1
  42. data/roles/qb.qb_role/templates/qb.yml.j2 +1 -1
  43. data/roles/qb.unhack_gem/README.md +10 -0
  44. data/roles/qb.unhack_gem/defaults/main.yml +2 -0
  45. data/roles/qb.unhack_gem/meta/main.yml +8 -0
  46. data/roles/qb.unhack_gem/meta/qb.yml +21 -0
  47. data/roles/qb.unhack_gem/tasks/main.yml +27 -0
  48. data/roles/qb.vars/.qb-options.yml +3 -0
  49. data/roles/qb.vars/README.md +1 -0
  50. data/roles/qb.vars/meta/main.yml +8 -0
  51. data/roles/qb.vars/meta/qb.yml +21 -0
  52. data/roles/qb.vars/tasks/main.yml +6 -0
  53. metadata +70 -7
  54. data/roles/qb.npm/defaults/main.yml +0 -16
  55. data/roles/qb.npm/meta/main.yml +0 -14
  56. data/roles/qb.npm/tasks/main.yml +0 -8
  57. data/roles/qb.npm/templates/package.json.j2 +0 -13
@@ -0,0 +1,138 @@
1
+ ---
2
+ galaxy_info:
3
+ author: nrser
4
+ description: installs the state_mate gem and provides the `state` module.
5
+ # company: your company (optional)
6
+ # If the issue tracker for your role is not on github, uncomment the
7
+ # next line and provide a value
8
+ # issue_tracker_url: http://example.com/issue/tracker
9
+ # Some suggested licenses:
10
+ # - BSD (default)
11
+ # - MIT
12
+ # - GPLv2
13
+ # - GPLv3
14
+ # - Apache
15
+ # - CC-BY
16
+ license: BSD
17
+ min_ansible_version: 1.4
18
+ #
19
+ # Below are all platforms currently available. Just uncomment
20
+ # the ones that apply to your role. If you don't see your
21
+ # platform on this list, let us know and we'll get it added!
22
+ #
23
+ #platforms:
24
+ #- name: EL
25
+ # versions:
26
+ # - all
27
+ # - 5
28
+ # - 6
29
+ # - 7
30
+ #- name: GenericUNIX
31
+ # versions:
32
+ # - all
33
+ # - any
34
+ #- name: Fedora
35
+ # versions:
36
+ # - all
37
+ # - 16
38
+ # - 17
39
+ # - 18
40
+ # - 19
41
+ # - 20
42
+ # - 21
43
+ # - 22
44
+ #- name: Windows
45
+ # versions:
46
+ # - all
47
+ # - 2012R2
48
+ #- name: SmartOS
49
+ # versions:
50
+ # - all
51
+ # - any
52
+ #- name: opensuse
53
+ # versions:
54
+ # - all
55
+ # - 12.1
56
+ # - 12.2
57
+ # - 12.3
58
+ # - 13.1
59
+ # - 13.2
60
+ #- name: Amazon
61
+ # versions:
62
+ # - all
63
+ # - 2013.03
64
+ # - 2013.09
65
+ #- name: GenericBSD
66
+ # versions:
67
+ # - all
68
+ # - any
69
+ #- name: FreeBSD
70
+ # versions:
71
+ # - all
72
+ # - 8.0
73
+ # - 8.1
74
+ # - 8.2
75
+ # - 8.3
76
+ # - 8.4
77
+ # - 9.0
78
+ # - 9.1
79
+ # - 9.1
80
+ # - 9.2
81
+ #- name: Ubuntu
82
+ # versions:
83
+ # - all
84
+ # - lucid
85
+ # - maverick
86
+ # - natty
87
+ # - oneiric
88
+ # - precise
89
+ # - quantal
90
+ # - raring
91
+ # - saucy
92
+ # - trusty
93
+ # - utopic
94
+ # - vivid
95
+ #- name: SLES
96
+ # versions:
97
+ # - all
98
+ # - 10SP3
99
+ # - 10SP4
100
+ # - 11
101
+ # - 11SP1
102
+ # - 11SP2
103
+ # - 11SP3
104
+ #- name: GenericLinux
105
+ # versions:
106
+ # - all
107
+ # - any
108
+ #- name: Debian
109
+ # versions:
110
+ # - all
111
+ # - etch
112
+ # - jessie
113
+ # - lenny
114
+ # - squeeze
115
+ # - wheezy
116
+ #
117
+ # Below are all categories currently available. Just as with
118
+ # the platforms above, uncomment those that apply to your role.
119
+ #
120
+ categories:
121
+ #- cloud
122
+ #- cloud:ec2
123
+ #- cloud:gce
124
+ #- cloud:rax
125
+ #- clustering
126
+ #- database
127
+ #- database:nosql
128
+ #- database:sql
129
+ #- development
130
+ #- monitoring
131
+ #- networking
132
+ #- packaging
133
+ - system
134
+ #- web
135
+ dependencies: []
136
+ # List your role dependencies here, one per line.
137
+ # Be sure to remove the '[]' above if you add dependencies
138
+ # to this list.
@@ -0,0 +1,112 @@
1
+ require 'nrser/refinements'
2
+
3
+ require 'spec_helper'
4
+ require 'state_mate/adapters/defaults'
5
+
6
+ using NRSER
7
+
8
+ describe "nrser.state_mate:defaults" do
9
+ let(:defaults) {
10
+ StateMate::Adapters::Defaults
11
+ }
12
+
13
+ before(:all) {
14
+ # copy the role stuff
15
+ FileUtils.rm_r ROLE_DIR if ROLE_DIR.exist?
16
+ FileUtils.mkdir_p ROLE_DIR
17
+ ['defaults', 'handlers', 'library', 'meta', 'tasks', 'vars'].each do |dir|
18
+ dest = ROLE_DIR + dir
19
+ FileUtils.rm_r dest if dest.exist?
20
+ FileUtils.cp_r (ROOT + dir), dest
21
+ end
22
+ }
23
+
24
+ before(:each) {
25
+ # this will error if the domain is missing
26
+ Cmds 'defaults delete %{domain}', domain: DOMAIN
27
+ }
28
+
29
+ VALUES = {
30
+ boolean: [true, false],
31
+ float: [24.0],
32
+ string: ["yes"],
33
+ # hash: [{'x' => true, 'y' => 'why'}],
34
+ }
35
+
36
+ VALUES.each do |type_name, values|
37
+ context type_name do
38
+ values.each do |value|
39
+ it "sets the #{ type_name } literal value #{ value.inspect }" do |ex|
40
+ playbook tasks: [
41
+ 'name' => ex.description,
42
+ 'state' => {
43
+ 'defaults' => {
44
+ 'key' => "#{ DOMAIN }:#{ type_name }",
45
+ 'set' => value
46
+ }
47
+ }
48
+ ]
49
+
50
+ expect( defaults.read [DOMAIN, type_name.to_s] ).to eq value
51
+ end
52
+
53
+ it "sets the #{ type_name } variable value #{ value.inspect }" do |ex|
54
+ playbook vars: {
55
+ 'value' => value,
56
+ },
57
+ tasks: [
58
+ 'name' => ex.description,
59
+ 'state' => {
60
+ 'defaults' => {
61
+ 'key' => "#{ DOMAIN }:#{ type_name }",
62
+ 'set' => '{{ value }}',
63
+ 'type' => type_name.to_s,
64
+ }
65
+ }
66
+ ]
67
+
68
+ expect( defaults.read [DOMAIN, type_name.to_s] ).to eq value
69
+ end
70
+ end
71
+ end
72
+ end
73
+
74
+ # it "sets a float using a literal" do
75
+ # value = 24
76
+ #
77
+ # playbook(
78
+ # tasks: [
79
+ # 'name' => 'set float with literal',
80
+ # 'state' => {
81
+ # 'defaults' => {
82
+ # 'key' => "#{ DOMAIN }:float",
83
+ # 'set' => value,
84
+ # }
85
+ # }
86
+ # ]
87
+ # )
88
+ #
89
+ # expect( defaults.read [DOMAIN, 'float'] ).to eq value
90
+ # end
91
+ #
92
+ # it "sets a float using a variable" do
93
+ # value = 24
94
+ #
95
+ # playbook(
96
+ # vars: {
97
+ # 'value' => value,
98
+ # },
99
+ # tasks: [
100
+ # 'name' => 'set float with literal',
101
+ # 'state' => {
102
+ # 'defaults' => {
103
+ # 'key' => "#{ DOMAIN }:float",
104
+ # 'set' => "{{ value }}",
105
+ # }
106
+ # }
107
+ # ]
108
+ # )
109
+ #
110
+ # expect( defaults.read [DOMAIN, 'float'] ).to eq value
111
+ # end
112
+ end
@@ -0,0 +1,7 @@
1
+ require 'spec_helper'
2
+
3
+ describe "nrser.state_mate" do
4
+ it "has a version number" do
5
+ expect(File.read(ROOT + "VERSION")).not_to be nil
6
+ end
7
+ end
@@ -0,0 +1,50 @@
1
+ require 'fileutils'
2
+ require 'yaml'
3
+
4
+ require 'cmds'
5
+
6
+ require 'nrser/refinements'
7
+ require 'nrser/extras'
8
+
9
+ using NRSER
10
+
11
+ ROOT = NRSER.git_root __FILE__
12
+ ANSIBLE_DIR = ROOT + 'test' + 'ansible'
13
+ ROLES_DIR = ANSIBLE_DIR + 'roles'
14
+ ROLE_DIR = ROLES_DIR + 'nrser.state_mate'
15
+ TEMPLATE_PATH = ANSIBLE_DIR + 'template.yml'
16
+ PLAYBOOK_PATH = ANSIBLE_DIR + 'temp-playbook.yml'
17
+
18
+ DOMAIN = 'com.nrser.state_mate.ansible'
19
+
20
+ def playbook options = {}
21
+ data = YAML.load TEMPLATE_PATH.read
22
+
23
+ [:name, :vars, :roles, :tasks].each do |sym|
24
+ data[0][sym.to_s] = options[sym] if options.key? sym
25
+ end
26
+
27
+ PLAYBOOK_PATH.open('w') do |f|
28
+ f.write YAML.dump(data)
29
+ end
30
+
31
+ result = Dir.chdir ANSIBLE_DIR do
32
+ Cmds 'ansible-playbook %{path}', path: PLAYBOOK_PATH
33
+ end
34
+
35
+ unless result.ok?
36
+ raise binding.erb <<-END
37
+ error executing playbook
38
+
39
+ path: <%= PLAYBOOK_PATH %>
40
+
41
+ out:
42
+
43
+ <%= result.out.indent %>
44
+
45
+ err:
46
+
47
+ <%= result.err.indent %>
48
+ END
49
+ end
50
+ end
@@ -0,0 +1,7 @@
1
+ ---
2
+ # tasks file for nrser.state_mate
3
+ - name: install state_mate gem
4
+ gem:
5
+ name: state_mate
6
+ version: "{{ state_mate_version }}"
7
+ user_install: false
@@ -0,0 +1,5 @@
1
+ [defaults]
2
+
3
+ hostfile = ./hosts
4
+
5
+ roles_path = ./roles
@@ -0,0 +1 @@
1
+ localhost ansible_connection=local
@@ -0,0 +1,7 @@
1
+ ---
2
+ - name: nrser.state_mate test playbook
3
+ hosts: localhost
4
+ gather_facts: false
5
+
6
+ roles:
7
+ - role: nrser.state_mate
@@ -0,0 +1,6 @@
1
+ # qb.hack_npm
2
+ # ===========
3
+
4
+ hack on an npm module by adding it as a submodule in `dev/packages` and `npm link` it, adding that step to `dev/setup.yml` as well.
5
+
6
+ hopefully at least. just started on it.
@@ -0,0 +1,12 @@
1
+ ---
2
+ # meta file for qb.hack_npm
3
+
4
+ allow_duplicates: yes
5
+
6
+ dependencies:
7
+ - role: nrser.state_mate
8
+
9
+ - role: nrser.rb
10
+
11
+ - role: qb.npm_package
12
+ when: hack_npm_create
@@ -0,0 +1,49 @@
1
+ ---
2
+ # meta/qb.yml file for qb.hack_npm
3
+ #
4
+ # qb settings for this role. see README.md for more info.
5
+ #
6
+
7
+ # prefix for role variables
8
+ var_prefix: null
9
+
10
+ # how to get a default for `dir` if it's not provided as the
11
+ default_dir: null
12
+
13
+ # set to false to not save options in .qb-options.yml files
14
+ save_options: false
15
+
16
+ options:
17
+ # - name: example
18
+ # description: an example of a variable.
19
+ # required: false
20
+ # type: boolean # boolean (default) | string
21
+ # short: e
22
+ - name: name
23
+ type: string
24
+ description: the repo name
25
+ short: n
26
+
27
+ - name: owner
28
+ type: string
29
+ description: the repo owner
30
+ short: o
31
+
32
+ - name: dest_dir
33
+ type: string
34
+ description: qb_dir relative dir to put the submodule in under it's name.
35
+ short: d
36
+
37
+ - name: dest_path
38
+ type: string
39
+ description: >
40
+ qb_dir relative path to put the submodule at. supercedes dest_dir.
41
+ short: p
42
+
43
+ - name: create
44
+ type: boolean
45
+ description: create a new npm package to hack
46
+ short: c
47
+
48
+ - include: qb.npm_package
49
+ as: package
@@ -0,0 +1,21 @@
1
+ ---
2
+ # create a new npm package to hack
3
+ - name: add everything
4
+ command: git add --all .
5
+ args:
6
+ chdir: "{{ qb_dir }}"
7
+
8
+ - name: add commit everything
9
+ command: git commit -m "init"
10
+ args:
11
+ chdir: "{{ qb_dir }}"
12
+
13
+ - name: push
14
+ command: git push --set-upstream origin master
15
+ args:
16
+ chdir: "{{ qb_dir }}"
17
+
18
+ - name: remove it
19
+ file:
20
+ path: "{{ qb_dir }}"
21
+ state: absent
@@ -0,0 +1,74 @@
1
+ ---
2
+ # tasks file for qb.hack_npm
3
+
4
+ # - set_fact:
5
+ # hack_npm_rel_dir: "{{ qb_dir | relpath(qb_cwd) }}"
6
+
7
+ - name: setup some variables
8
+ vars.rb:
9
+ namespace: hack_npm
10
+ bind:
11
+ qb_dir: "{{ qb_dir }}"
12
+ qb_cwd: "{{ qb_cwd }}"
13
+ src: |
14
+ require 'pathname'
15
+ require 'cmds'
16
+
17
+ vars = {}
18
+
19
+ # get the root of the git repot that we're operating from
20
+ Dir.chdir qb_cwd do
21
+ begin
22
+ vars['repo_root'] = Cmds.out!('git rev-parse --show-toplevel').strip
23
+ rescue Exception => e
24
+ raise "don't seem to be in a git repo..? #{ e.message }"
25
+ end
26
+ end
27
+
28
+ # get the relative path
29
+ vars['rel_dir'] = Pathname.new(qb_dir)
30
+ .relative_path_from(Pathname.new(vars['repo_root']))
31
+ .to_s
32
+
33
+ # for the rest we want to be in the repo root
34
+ Dir.chdir vars['repo_root'] do
35
+ # see if the submodule is already in place
36
+
37
+ end
38
+
39
+ vars
40
+
41
+ - include: create.yml
42
+ when: hack_npm_create
43
+
44
+ - name: "add {{ hack_npm_owner }}/{{ hack_npm_name }} submodule"
45
+ command: >
46
+ git submodule add --force
47
+ git@github.com:{{ hack_npm_owner }}/{{ hack_npm_name }}.git
48
+ {{ hack_npm_rel_dir }}
49
+ args:
50
+ chdir: "{{ qb_cwd }}"
51
+ creates: "{{ qb_dir }}"
52
+
53
+ - name: add linking to dev/setup.yml
54
+ # - name: npm link nrser.js for jash so it can build
55
+ # tags:
56
+ # - npm-link
57
+ # command: npm link ../nrser.js
58
+ # args:
59
+ # chdir: "{{ dev_setup_project_root }}/packages/{{ item }}"
60
+ # with_items:
61
+ # - jash
62
+ state:
63
+ debug: w
64
+ yaml:
65
+ key: "{{ qb_cwd }}/dev/setup.yml:0:tasks"
66
+ array_contains:
67
+ name: "npm link {{ hack_npm_rel_dir }}"
68
+ tags:
69
+ - npm-link
70
+ command: "npm link {{ hack_npm_rel_dir }}"
71
+ args:
72
+ chdir: "{{ '{{ dev_setup_project_root }}' }}"
73
+ create: true
74
+
@@ -0,0 +1,15 @@
1
+ ---
2
+ # vars file for qb.hack_npm
3
+ hack_npm_name: "{{ qb_dir | basename }}"
4
+ hack_npm_owner: "{{ git_user_name }}"
5
+ # hack_npm_dest_dir: "{{ qb_dir }}/dev/packages"
6
+ # hack_npm_dest_path: "{{ hack_npm_dest_dir }}/{{ hack_npm_name }}"
7
+ hack_npm_create: false
8
+
9
+ # overrides
10
+ npm_package_project: true
11
+ npm_package_scope: "{{ hack_npm_owner }}"
12
+ npm_package_name: "{{ hack_npm_name }}"
13
+ project_name: "{{ hack_npm_name }}"
14
+ project_owner: "{{ hack_npm_owner }}"
15
+ project_hub: true
@@ -1,3 +1,3 @@
1
1
  ---
2
2
  # defaults file for qb.install_gem
3
- install_gem_rubies: all
3
+ install_gem_rubies: current
@@ -0,0 +1,17 @@
1
+ ---
2
+ # defaults file for qb.npm_package
3
+ npm_package_force: false
4
+
5
+ # package.json stuff
6
+ npm_package_name: "{{ qb_dir | basename }}"
7
+ npm_package_scope: null
8
+ npm_package_scoped_name: "{{ ('@' + npm_package_scope + '/' + npm_package_name) if npm_package_scope else npm_package_name }}"
9
+ npm_package_private: true
10
+ npm_package_version: "0.1.0"
11
+ npm_package_description: "{{ npm_package_scoped_name }} package"
12
+ npm_package_main: "index.js"
13
+ npm_package_keywords: []
14
+ npm_package_license: "{{ 'UNLICENSED' if npm_package_private else 'ISC' }}"
15
+ npm_package_author: "{{ npm_package_scope if npm_package_scope else git_user_name }}"
16
+
17
+ npm_package_project: false
@@ -0,0 +1,16 @@
1
+ ---
2
+ # meta file for qb.npm_package
3
+
4
+ allow_duplicates: yes
5
+
6
+ dependencies:
7
+ - role: nrser.state_mate
8
+
9
+ - role: qb.gitignore
10
+ gitignore_name: Node
11
+ gitignore_force: "{{ npm_package_force }}"
12
+
13
+ - role: qb.project
14
+ project_private: "{{ npm_package_private }}"
15
+ project_force: "{{ npm_package_force }}"
16
+ when: npm_package_project
@@ -1,5 +1,5 @@
1
1
  ---
2
- # meta/qb.yml file for qb.npm
2
+ # meta/qb.yml file for qb.npm_package
3
3
  #
4
4
  # qb settings for this role. see README.md for more info.
5
5
  #
@@ -10,7 +10,7 @@ var_prefix: null
10
10
  # how to get a default for `dir` if it's not provided as the
11
11
  default_dir: null
12
12
 
13
- # set to false to not save options in /Users/nrser/dev/gh/nrser/qb/roles/qb.npm/.qb-options.yml
13
+ # set to false to not save options in .qb-options.yml files
14
14
  save_options: true
15
15
 
16
16
  vars:
@@ -28,6 +28,7 @@ vars:
28
28
  - name: scope
29
29
  description: npm scope to create the module under.
30
30
  type: string
31
+ accept_false: true
31
32
  short: s
32
33
 
33
34
  - name: name
@@ -0,0 +1,27 @@
1
+ ---
2
+ # tasks file for qb.npm_package_module
3
+
4
+ - name: set npm_package_json_path
5
+ set_fact:
6
+ npm_package_json_path: "{{ qb_dir }}/package.json"
7
+
8
+ - name: create package.json
9
+ command: npm init -y
10
+ args:
11
+ chdir: "{{ qb_dir }}"
12
+ creates: "{{ npm_package_json_path }}"
13
+
14
+ - name: set package.json scalar values
15
+ state:
16
+ json:
17
+ key: "{{ npm_package_json_path }}:{{ item.key }}"
18
+ set: "{{ item.value }}"
19
+ with_dict:
20
+ name: "{{ npm_package_scoped_name }}"
21
+ private: "{{ npm_package_private }}"
22
+ version: "{{ npm_package_version }}"
23
+ description: "{{ npm_package_description }}"
24
+ main: "{{ npm_package_main }}"
25
+ keywords: "{{ npm_package_keywords | to_json }}"
26
+ license: "{{ npm_package_license }}"
27
+ author: "{{ npm_package_author }}"
@@ -12,4 +12,4 @@ default_dir: null
12
12
 
13
13
  options:
14
14
  - include: qb.role
15
- as: null
15
+ as: false
@@ -10,7 +10,7 @@ var_prefix: null
10
10
  # how to get a default for `dir` if it's not provided as the
11
11
  default_dir: null
12
12
 
13
- # set to false to not save options in {{ qb_dir }}/.qb-options.yml
13
+ # set to false to not save options in .qb-options.yml files
14
14
  save_options: true
15
15
 
16
16
  options: []
@@ -0,0 +1,10 @@
1
+ qb.unhack_gem role
2
+ ==================
3
+
4
+ remove a gem submodule that was added with `qb hack_gem` (or otherwise) to hack on locally along side the main project, reverting to using the published version.
5
+
6
+ removes the submodule at `qb_dir` and removes the
7
+
8
+ gem <gem-name>, '~> 0.0', :path => <qb_dir>
9
+
10
+ line from `./Gemfile`.
@@ -0,0 +1,2 @@
1
+ ---
2
+ # defaults file for qb.unhack_gem
@@ -0,0 +1,8 @@
1
+ ---
2
+ # meta file for qb.unhack_gem
3
+
4
+ allow_duplicates: yes
5
+
6
+ dependencies: []
7
+ # - role: role-name
8
+
@@ -0,0 +1,21 @@
1
+ ---
2
+ # meta/qb.yml file for qb.unhack_gem
3
+ #
4
+ # qb settings for this role. see README.md for more info.
5
+ #
6
+
7
+ # prefix for role variables
8
+ var_prefix: null
9
+
10
+ # how to get a default for `dir` if it's not provided as the
11
+ default_dir: null
12
+
13
+ # set to false to not save options in .qb-options.yml files
14
+ save_options: true
15
+
16
+ options: []
17
+ # - name: example
18
+ # description: an example of a variable.
19
+ # required: false
20
+ # type: boolean # boolean (default) | string
21
+ # short: e