qb 0.1.55 → 0.1.56
Sign up to get free protection for your applications and to get access to all the features.
- 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
|