qb 0.1.55 → 0.1.56
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 +4 -4
- data/lib/qb/ansible_module.rb +20 -0
- data/lib/qb/version.rb +1 -1
- data/roles/nrser.rb/library/{sync.rb → sync.rb.rb} +0 -0
- data/roles/nrser.rb/library/{vars.rb → vars.rb.rb} +27 -6
- data/roles/qb.git_check_clean/meta/main.yml +8 -0
- data/roles/qb.git_check_clean/tasks/main.yml +19 -0
- data/roles/qb.qb_role/defaults/main.yml +0 -2
- data/roles/qb.qb_role/meta/qb.yml +1 -14
- data/roles/qb.qb_role/tasks/main.yml +0 -5
- data/roles/qb.role/defaults/main.yml +3 -0
- data/roles/qb.role/meta/qb.yml +13 -0
- data/roles/qb.role/tasks/main.yml +8 -1
- data/roles/qb.role/tasks/module.yml +20 -0
- data/roles/qb.role/templates/library/module.rb.j2 +45 -0
- metadata +8 -6
- data/roles/qb.qb_role/tasks/module.yml +0 -20
- data/roles/qb.qb_role/templates/module.rb.j2 +0 -22
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a3ccd247eed4ac55327f18af1328683369b781c8
|
4
|
+
data.tar.gz: 036e4e71a58d83a99137b27c61e44a6bbbf99247
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b9034e575a08fd1fffb4973fcc5f7c4e3a7055927c8bf07be2cf01e828a3d314cee408b283223cf4458e14dc4217f603d7ba37aaccc84f912022b2a1ba28b39e
|
7
|
+
data.tar.gz: 2593c3192c626701c2017d51c55cdf30df3359c52245acf69a09616f5e47ea635fff64865d14845bd783eade72cff24d1524420c9dc054ddda68747d85e372fc
|
data/lib/qb/ansible_module.rb
CHANGED
@@ -2,10 +2,16 @@ require 'json'
|
|
2
2
|
|
3
3
|
module QB
|
4
4
|
class AnsibleModule
|
5
|
+
@@arg_types = {}
|
6
|
+
|
5
7
|
def self.stringify_keys hash
|
6
8
|
hash.map {|k, v| [k.to_s, v]}.to_h
|
7
9
|
end
|
8
10
|
|
11
|
+
def self.arg name, type
|
12
|
+
@@arg_types[name.to_sym] = type
|
13
|
+
end
|
14
|
+
|
9
15
|
def initialize
|
10
16
|
@changed = false
|
11
17
|
@input_file = ARGV[0]
|
@@ -23,6 +29,20 @@ module QB
|
|
23
29
|
if ENV['QB_STDIO_ERR']
|
24
30
|
$stderr = UNIXSocket.new ENV['QB_STDIO_ERR']
|
25
31
|
end
|
32
|
+
|
33
|
+
@@arg_types.each {|key, type|
|
34
|
+
var_name = "@#{ key.to_s }"
|
35
|
+
|
36
|
+
unless instance_variable_get(var_name).nil?
|
37
|
+
raise ArgumentError.new NRSER.squish <<-END
|
38
|
+
an instance variable named #{ var_name } exists
|
39
|
+
with value #{ instance_variable_get(var_name).inspect }
|
40
|
+
END
|
41
|
+
end
|
42
|
+
|
43
|
+
instance_variable_set var_name,
|
44
|
+
type.check(@args.fetch(key.to_s))
|
45
|
+
}
|
26
46
|
end
|
27
47
|
|
28
48
|
def run
|
data/lib/qb/version.rb
CHANGED
File without changes
|
@@ -2,10 +2,14 @@
|
|
2
2
|
# WANT_JSON
|
3
3
|
# ^ i think this is something telling ansible to provide JSON args?
|
4
4
|
|
5
|
+
# stdlib
|
5
6
|
require 'json'
|
6
7
|
require 'shellwords'
|
7
8
|
require 'pp'
|
8
9
|
|
10
|
+
# deps
|
11
|
+
require 'nrser'
|
12
|
+
|
9
13
|
def namespace prefix, hash
|
10
14
|
Hash[
|
11
15
|
hash.map {|key, value|
|
@@ -33,7 +37,7 @@ def main
|
|
33
37
|
end
|
34
38
|
end
|
35
39
|
|
36
|
-
result = b.eval args
|
40
|
+
result = b.eval args.fetch('src')
|
37
41
|
|
38
42
|
if result.is_a? Hash
|
39
43
|
result = namespace(args['namespace'], result) if args['namespace']
|
@@ -47,13 +51,30 @@ def main
|
|
47
51
|
})
|
48
52
|
|
49
53
|
rescue Exception => e
|
54
|
+
path = File.join Dir.pwd, "ansible-error.log"
|
55
|
+
msg = NRSER.squish <<-END
|
56
|
+
vars.rb failed: #{ e.message } (#{ e.class.name }).
|
57
|
+
See #{ path } for details.
|
58
|
+
END
|
59
|
+
|
60
|
+
File.open(path, 'w') {|f|
|
61
|
+
f.puts "ERROR:\n\n"
|
62
|
+
f.puts NRSER.indent(NRSER.format_exception(e))
|
63
|
+
|
64
|
+
f.puts "\nINPUT:\n\n"
|
65
|
+
f.puts NRSER.indent(input) if defined? input
|
66
|
+
|
67
|
+
f.puts "\nARGS:\n\n"
|
68
|
+
f.puts NRSER.indent(args.pretty_inspect) if defined? args
|
69
|
+
|
70
|
+
f.puts "\nRUBY:\n"
|
71
|
+
f.puts NRSER.indent("VERSION: #{ RUBY_VERSION }")
|
72
|
+
f.puts NRSER.indent("PATH: #{ RbConfig.ruby }")
|
73
|
+
}
|
74
|
+
|
50
75
|
print JSON.dump({
|
51
76
|
'failed' => true,
|
52
|
-
'msg' =>
|
53
|
-
# 'input' => input,
|
54
|
-
# 'args' => args,
|
55
|
-
# 'ARGV' => ARGV,
|
56
|
-
# 'ruby' => RUBY_VERSION,
|
77
|
+
'msg' => msg,
|
57
78
|
})
|
58
79
|
end
|
59
80
|
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
---
|
2
|
+
# tasks file for qb.git_check_clean
|
3
|
+
|
4
|
+
- name: >
|
5
|
+
get git status for repo {{ git_check_clean_dir }}
|
6
|
+
shell: git status --porcelain 2>/dev/null
|
7
|
+
args:
|
8
|
+
chdir: "{{ git_check_clean_dir }}"
|
9
|
+
register: git_check_clean_status
|
10
|
+
changed_when: false
|
11
|
+
|
12
|
+
- name: >
|
13
|
+
fail if the repo has any untracked or modified files
|
14
|
+
fail:
|
15
|
+
msg: >
|
16
|
+
repo at {{ git_check_clean_dir }} can not have any untracked or
|
17
|
+
modified files, please commit or stash and retry.
|
18
|
+
when: (git_check_clean_status.stdout_lines | length) != 0
|
19
|
+
|
@@ -10,19 +10,6 @@ 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
|
-
options:
|
14
|
-
- name: modules
|
15
|
-
description: >-
|
16
|
-
create ruby module boilerplate(s) in library using QB::AnsibleModule.
|
17
|
-
type: array
|
18
|
-
required: false
|
19
|
-
# TODO not yet implemented
|
20
|
-
implies: library
|
21
|
-
examples:
|
22
|
-
- |
|
23
|
-
produces library/some_module execuable with a module named SomeModule
|
24
|
-
|
25
|
-
--modules=some_module
|
26
|
-
|
13
|
+
options:
|
27
14
|
- include: qb.role
|
28
15
|
as: false
|
data/roles/qb.role/meta/qb.yml
CHANGED
@@ -76,6 +76,19 @@ vars:
|
|
76
76
|
type: boolean
|
77
77
|
description: create a project repo for this role
|
78
78
|
short: p
|
79
|
+
|
80
|
+
- name: modules
|
81
|
+
description: >-
|
82
|
+
create ruby module boilerplate(s) in library using QB::AnsibleModule.
|
83
|
+
type: array
|
84
|
+
required: false
|
85
|
+
# TODO not yet implemented
|
86
|
+
implies: library
|
87
|
+
examples:
|
88
|
+
- |
|
89
|
+
produces library/some_module execuable with a module named SomeModule
|
90
|
+
|
91
|
+
--modules=some_module
|
79
92
|
|
80
93
|
- include: qb.project
|
81
94
|
|
@@ -0,0 +1,20 @@
|
|
1
|
+
---
|
2
|
+
- set_fact:
|
3
|
+
role_module_class: "{{ role_module | class_case }}"
|
4
|
+
role_module_path: "{{ role_dest }}/library/{{ role_module }}"
|
5
|
+
|
6
|
+
- name: create library directory
|
7
|
+
file:
|
8
|
+
dest: "{{ role_module_path | dirname }}"
|
9
|
+
state: directory
|
10
|
+
|
11
|
+
- name: "create {{ role_module }} module"
|
12
|
+
template:
|
13
|
+
src: library/module.rb.j2
|
14
|
+
dest: "{{ role_module_path }}"
|
15
|
+
force: "{{ role_force }}"
|
16
|
+
|
17
|
+
- name: "make library/{{ role_module }} executable"
|
18
|
+
file:
|
19
|
+
path: "{{ role_module_path }}"
|
20
|
+
mode: a+x
|
@@ -0,0 +1,45 @@
|
|
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 'nrser'
|
16
|
+
|
17
|
+
class {{ role_module_class }} < QB::AnsibleModule
|
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)
|
24
|
+
#
|
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`.
|
27
|
+
#
|
28
|
+
|
29
|
+
# entry point for the module. invoked by {\#run}.
|
30
|
+
#
|
31
|
+
# @return [nil | {Symbol => #to_json}]
|
32
|
+
# when returning:
|
33
|
+
#
|
34
|
+
# - `nil`: module will successfully exit with no additional changes.
|
35
|
+
#
|
36
|
+
# - `{Symbol => #to_json}`: Hash will be merged over @facts that
|
37
|
+
# are returned by the module to be set in the Ansible runtime and
|
38
|
+
# the module will exit successfully.
|
39
|
+
#
|
40
|
+
def main
|
41
|
+
return nil
|
42
|
+
end # #main
|
43
|
+
end # {{ role_module_class }}
|
44
|
+
|
45
|
+
{{ role_module_class }}.new.run
|
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.56
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- nrser
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-04-
|
11
|
+
date: 2017-04-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -276,8 +276,8 @@ files:
|
|
276
276
|
- roles/nrser.blockinfile/tests/test-replace.yml
|
277
277
|
- roles/nrser.blockinfile/tests/test-state.yml
|
278
278
|
- roles/nrser.rb/.gitignore
|
279
|
-
- roles/nrser.rb/library/sync.rb
|
280
|
-
- roles/nrser.rb/library/vars.rb
|
279
|
+
- roles/nrser.rb/library/sync.rb.rb
|
280
|
+
- roles/nrser.rb/library/vars.rb.rb
|
281
281
|
- roles/nrser.rb/meta/main.yml
|
282
282
|
- roles/nrser.rbenv_gem/README.md
|
283
283
|
- roles/nrser.rbenv_gem/VERSION
|
@@ -328,6 +328,8 @@ files:
|
|
328
328
|
- roles/qb.gem/templates/spec.rb.j2
|
329
329
|
- roles/qb.gem/templates/spec_helper.rb.j2
|
330
330
|
- roles/qb.gem/templates/version.rb.j2
|
331
|
+
- roles/qb.git_check_clean/meta/main.yml
|
332
|
+
- roles/qb.git_check_clean/tasks/main.yml
|
331
333
|
- roles/qb.git_repo/defaults/main.yml
|
332
334
|
- roles/qb.git_repo/meta/main.yml
|
333
335
|
- roles/qb.git_repo/meta/qb.yml
|
@@ -575,9 +577,7 @@ files:
|
|
575
577
|
- roles/qb.qb_role/meta/main.yml
|
576
578
|
- roles/qb.qb_role/meta/qb.yml
|
577
579
|
- roles/qb.qb_role/tasks/main.yml
|
578
|
-
- roles/qb.qb_role/tasks/module.yml
|
579
580
|
- roles/qb.qb_role/templates/.gitkeep
|
580
|
-
- roles/qb.qb_role/templates/module.rb.j2
|
581
581
|
- roles/qb.qb_role/templates/qb.yml.j2
|
582
582
|
- roles/qb.read_json/defaults/main.yml
|
583
583
|
- roles/qb.read_json/meta/main.yml
|
@@ -596,10 +596,12 @@ files:
|
|
596
596
|
- roles/qb.role/meta/main.yml
|
597
597
|
- roles/qb.role/meta/qb.yml
|
598
598
|
- roles/qb.role/tasks/main.yml
|
599
|
+
- roles/qb.role/tasks/module.yml
|
599
600
|
- roles/qb.role/templates/.gitkeep
|
600
601
|
- roles/qb.role/templates/README.md.j2
|
601
602
|
- roles/qb.role/templates/defaults/main.yml.j2
|
602
603
|
- roles/qb.role/templates/handlers/main.yml.j2
|
604
|
+
- roles/qb.role/templates/library/module.rb.j2
|
603
605
|
- roles/qb.role/templates/meta/main.yml.j2
|
604
606
|
- roles/qb.role/templates/tasks/main.yml.j2
|
605
607
|
- roles/qb.role/templates/vars/main.yml.j2
|
@@ -1,20 +0,0 @@
|
|
1
|
-
---
|
2
|
-
- set_fact:
|
3
|
-
qb_role_module_class: "{{ qb_role_module | class_case }}"
|
4
|
-
qb_role_module_path: "{{ role_dest }}/library/{{ qb_role_module }}"
|
5
|
-
|
6
|
-
- name: create library directory
|
7
|
-
file:
|
8
|
-
dest: "{{ qb_role_module_path | dirname }}"
|
9
|
-
state: directory
|
10
|
-
|
11
|
-
- name: "create {{ qb_role_module }} module"
|
12
|
-
template:
|
13
|
-
src: module.rb.j2
|
14
|
-
dest: "{{ qb_role_module_path }}"
|
15
|
-
force: "{{ role_force }}"
|
16
|
-
|
17
|
-
- name: "make library/{{ qb_role_module }} executable"
|
18
|
-
file:
|
19
|
-
path: "{{ qb_role_module_path }}"
|
20
|
-
mode: a+x
|
@@ -1,22 +0,0 @@
|
|
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
|