qb 0.1.17 → 0.1.18
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +3 -2
- data/.gitmodules +6 -0
- data/.qb-options.yml +1 -1
- data/Gemfile +2 -0
- data/README.md +6 -1
- data/exe/qb +10 -5
- data/lib/qb/options.rb +15 -6
- data/lib/qb/role.rb +39 -7
- data/lib/qb/version.rb +1 -1
- data/library/qb_facts.py +47 -7
- data/qb.gemspec +12 -6
- data/roles/nrser.rb/library/vars.rb +1 -3
- data/roles/nrser.state_mate/.gitignore +38 -0
- data/roles/nrser.state_mate/.rspec +2 -0
- data/roles/nrser.state_mate/Gemfile +8 -0
- data/roles/nrser.state_mate/Gemfile.lock +46 -0
- data/roles/nrser.state_mate/README.md +45 -0
- data/roles/nrser.state_mate/VERSION +1 -0
- data/roles/nrser.state_mate/defaults/main.yml +3 -0
- data/roles/nrser.state_mate/library/state +82 -0
- data/roles/nrser.state_mate/meta/main.yml +138 -0
- data/roles/nrser.state_mate/spec/defaults/set_types_spec.rb +112 -0
- data/roles/nrser.state_mate/spec/nrser.state_mate_spec.rb +7 -0
- data/roles/nrser.state_mate/spec/spec_helper.rb +50 -0
- data/roles/nrser.state_mate/tasks/main.yml +7 -0
- data/roles/nrser.state_mate/test/ansible/ansible.cfg +5 -0
- data/roles/nrser.state_mate/test/ansible/hosts +1 -0
- data/roles/nrser.state_mate/test/ansible/template.yml +7 -0
- data/roles/qb.hack_npm/README.md +6 -0
- data/roles/qb.hack_npm/meta/main.yml +12 -0
- data/roles/qb.hack_npm/meta/qb.yml +49 -0
- data/roles/qb.hack_npm/tasks/create.yml +21 -0
- data/roles/qb.hack_npm/tasks/main.yml +74 -0
- data/roles/qb.hack_npm/vars/main.yml +15 -0
- data/roles/qb.install_gem/defaults/main.yml +1 -1
- data/roles/qb.npm_package/defaults/main.yml +17 -0
- data/roles/qb.npm_package/meta/main.yml +16 -0
- data/roles/{qb.npm → qb.npm_package}/meta/qb.yml +3 -2
- data/roles/qb.npm_package/tasks/main.yml +27 -0
- data/roles/qb.qb_role/meta/qb.yml +1 -1
- data/roles/qb.qb_role/templates/qb.yml.j2 +1 -1
- data/roles/qb.unhack_gem/README.md +10 -0
- data/roles/qb.unhack_gem/defaults/main.yml +2 -0
- data/roles/qb.unhack_gem/meta/main.yml +8 -0
- data/roles/qb.unhack_gem/meta/qb.yml +21 -0
- data/roles/qb.unhack_gem/tasks/main.yml +27 -0
- data/roles/qb.vars/.qb-options.yml +3 -0
- data/roles/qb.vars/README.md +1 -0
- data/roles/qb.vars/meta/main.yml +8 -0
- data/roles/qb.vars/meta/qb.yml +21 -0
- data/roles/qb.vars/tasks/main.yml +6 -0
- metadata +70 -7
- data/roles/qb.npm/defaults/main.yml +0 -16
- data/roles/qb.npm/meta/main.yml +0 -14
- data/roles/qb.npm/tasks/main.yml +0 -8
- data/roles/qb.npm/templates/package.json.j2 +0 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6eb975b210be08ce0337c76edfd3206c3182b7f3
|
4
|
+
data.tar.gz: e33159e190cb5562a43c3cedd7c30e1179ee7a0e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 741b549e8146722b757941e5c3afd9dc9d67ed889ddd8d455038e18d8dd651fdd6e98003338fa1a277087fd1835d9b447be37d06868db112a1da853491a30af6
|
7
|
+
data.tar.gz: e82f75b6e60cae6630c6b9255021ce4da2104608d0b18675ec5da20a0f55cc3f19ee5eb288720e9f6b5c615e243b1480274b52ab41d991e4a9d4e73ce3b7afd3
|
data/.gitignore
CHANGED
data/.gitmodules
CHANGED
@@ -10,3 +10,9 @@
|
|
10
10
|
[submodule "roles/nrser.rb"]
|
11
11
|
path = roles/nrser.rb
|
12
12
|
url = git@github.com:nrser/ansible-nrser.rb.git
|
13
|
+
[submodule "roles/nrser.state_mate"]
|
14
|
+
path = roles/nrser.state_mate
|
15
|
+
url = git@github.com:nrser/ansible-nrser.state_mate.git
|
16
|
+
[submodule "dev/gems/state_mate"]
|
17
|
+
path = dev/gems/state_mate
|
18
|
+
url = git@github.com:nrser/state_mate
|
data/.qb-options.yml
CHANGED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -8,6 +8,11 @@ if this file exists in a role `qb` sees it will make that role available.
|
|
8
8
|
|
9
9
|
the contents of this file allow you to configure how `qb` uses the role.
|
10
10
|
|
11
|
+
### null values ###
|
12
|
+
|
13
|
+
values set to `null` are treated like they're not there at all. to tell QB
|
14
|
+
*not* to do something assign `false`.
|
15
|
+
|
11
16
|
### var_prefix ###
|
12
17
|
|
13
18
|
declare prefix to be added to variable names from the command line for
|
@@ -30,7 +35,7 @@ to the `qb.project` role.
|
|
30
35
|
|
31
36
|
however, this setting allows you to specify an alternative prefix.
|
32
37
|
|
33
|
-
if this is set to `null`
|
38
|
+
if this is set to `null` the default will be used.
|
34
39
|
|
35
40
|
### default_dir ###
|
36
41
|
|
data/exe/qb
CHANGED
@@ -58,10 +58,10 @@ def with_clean_env &block
|
|
58
58
|
end
|
59
59
|
|
60
60
|
def metadata
|
61
|
-
if QB.gemspec.metadata
|
61
|
+
if QB.gemspec.metadata && !QB.gemspec.metadata.empty?
|
62
62
|
"metadata:\n" + QB.gemspec.metadata.map {|key, value|
|
63
63
|
" #{ key }: #{ value }"
|
64
|
-
}.join("\n")
|
64
|
+
}.join("\n") + "\n"
|
65
65
|
end
|
66
66
|
end
|
67
67
|
|
@@ -69,7 +69,6 @@ def help
|
|
69
69
|
puts <<-END
|
70
70
|
version: #{ QB::VERSION }
|
71
71
|
#{ metadata }
|
72
|
-
|
73
72
|
syntax:
|
74
73
|
|
75
74
|
qb ROLE [OPTIONS] DIRECTORY
|
@@ -138,7 +137,9 @@ def main args
|
|
138
137
|
|
139
138
|
# create the dir if it doesn't exist (so don't have to cover this in
|
140
139
|
# every role)
|
141
|
-
|
140
|
+
if role.mkdir
|
141
|
+
FileUtils.mkdir_p dir unless File.exists? dir
|
142
|
+
end
|
142
143
|
|
143
144
|
saved_options_path = Pathname.new(dir) + '.qb-options.yml'
|
144
145
|
|
@@ -203,7 +204,11 @@ def main args
|
|
203
204
|
'that' => "'ansible 2.1.2' in lookup('pipe', 'ansible --version')",
|
204
205
|
},
|
205
206
|
},
|
206
|
-
{
|
207
|
+
{
|
208
|
+
'qb_facts' => {
|
209
|
+
'qb_dir' => dir,
|
210
|
+
}
|
211
|
+
},
|
207
212
|
],
|
208
213
|
'roles' => [
|
209
214
|
'nrser.blockinfile',
|
data/lib/qb/options.rb
CHANGED
@@ -64,11 +64,11 @@ module QB
|
|
64
64
|
@cli_name = if @include_path.empty?
|
65
65
|
Options.cli_ize_name @meta_name
|
66
66
|
else
|
67
|
-
"#{ @include_path.join('-') }-#{
|
67
|
+
Options.cli_ize_name "#{ @include_path.join('-') }-#{ @meta_name }"
|
68
68
|
end
|
69
69
|
|
70
70
|
@var_name = if role.var_prefix
|
71
|
-
"#{ role.var_prefix }_#{
|
71
|
+
Options.var_ize_name "#{ role.var_prefix }_#{ @meta_name }"
|
72
72
|
else
|
73
73
|
Options.var_ize_name @meta_name
|
74
74
|
end
|
@@ -102,11 +102,15 @@ module QB
|
|
102
102
|
private
|
103
103
|
|
104
104
|
# get the value at the first found of the keys or the default.
|
105
|
+
#
|
106
|
+
# `nil` (`null` in yaml files) are treated like they're not there at
|
107
|
+
# all. you need to use `false` if you want to tell QB not to do something.
|
108
|
+
#
|
105
109
|
def meta_or keys, default
|
106
110
|
keys = [keys] if keys.is_a? String
|
107
111
|
keys.each do |key|
|
108
|
-
if
|
109
|
-
return
|
112
|
+
if meta.key?(key) && !meta[key].nil?
|
113
|
+
return meta[key]
|
110
114
|
end
|
111
115
|
end
|
112
116
|
default
|
@@ -196,10 +200,15 @@ module QB
|
|
196
200
|
|
197
201
|
# don't use short names when included (for now)
|
198
202
|
if include_path.empty? && option.meta['short']
|
199
|
-
on_args << "-#{ option.meta['short'] } #{ option.
|
203
|
+
on_args << "-#{ option.meta['short'] } #{ option.meta_name.upcase }"
|
200
204
|
end
|
201
205
|
|
202
|
-
|
206
|
+
if option.meta['accept_false']
|
207
|
+
on_args << "--[no-]#{ option.cli_name }=#{ option.meta_name.upcase }"
|
208
|
+
else
|
209
|
+
on_args << "--#{ option.cli_name }=#{ option.meta_name.upcase }"
|
210
|
+
end
|
211
|
+
|
203
212
|
|
204
213
|
on_args << ruby_type
|
205
214
|
end
|
data/lib/qb/role.rb
CHANGED
@@ -180,18 +180,22 @@ module QB
|
|
180
180
|
# passing them to the role. defaults to `#namespaceless` unless specified
|
181
181
|
# in meta.
|
182
182
|
def var_prefix
|
183
|
-
meta
|
183
|
+
# ugh, i was generating meta/qb.yml files that set 'var_prefix' to
|
184
|
+
# `null`, but it would be nice to
|
185
|
+
#
|
186
|
+
meta_or 'var_prefix', namespaceless
|
184
187
|
end
|
185
188
|
|
186
189
|
# get the options from the metadata, defaulting to [] if none defined
|
187
190
|
def options
|
188
|
-
|
191
|
+
meta_or ['options', 'opts', 'vars'], []
|
189
192
|
end
|
190
193
|
|
191
194
|
# old name
|
192
195
|
alias_method :vars, :options
|
193
196
|
|
194
|
-
# loads the defaults from defaults/main.yml,
|
197
|
+
# loads the defaults from vars/main.yml and defaults/main.yml,
|
198
|
+
# caching by default. vars override defaults values.
|
195
199
|
def load_defaults cache = true
|
196
200
|
defaults_path = @path + 'defaults' + 'main.yml'
|
197
201
|
defaults = if defaults_path.file?
|
@@ -200,6 +204,15 @@ module QB
|
|
200
204
|
{}
|
201
205
|
end
|
202
206
|
|
207
|
+
vars_path = @path + 'vars' + 'main.yml'
|
208
|
+
vars = if vars_path.file?
|
209
|
+
YAML.load(vars_path.read) || {}
|
210
|
+
else
|
211
|
+
{}
|
212
|
+
end
|
213
|
+
|
214
|
+
defaults = defaults.merge! vars
|
215
|
+
|
203
216
|
if cache
|
204
217
|
@defaults = defaults
|
205
218
|
end
|
@@ -213,11 +226,30 @@ module QB
|
|
213
226
|
end
|
214
227
|
|
215
228
|
def save_options
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
229
|
+
!!meta_or('save_options', true)
|
230
|
+
end
|
231
|
+
|
232
|
+
# if the exe should auto-make the directory. this is nice for most roles
|
233
|
+
# but some need it to be missing
|
234
|
+
def mkdir
|
235
|
+
!!meta_or('mkdir', true)
|
236
|
+
end
|
237
|
+
|
238
|
+
private
|
239
|
+
|
240
|
+
# get the value at the first found of the keys or the default.
|
241
|
+
#
|
242
|
+
# `nil` (`null` in yaml files) are treated like they're not there at
|
243
|
+
# all. you need to use `false` if you want to tell QB not to do something.
|
244
|
+
#
|
245
|
+
def meta_or keys, default
|
246
|
+
keys = [keys] if keys.is_a? String
|
247
|
+
keys.each do |key|
|
248
|
+
if meta.key?(key) && !meta[key].nil?
|
249
|
+
return meta[key]
|
250
|
+
end
|
220
251
|
end
|
252
|
+
default
|
221
253
|
end
|
222
254
|
end
|
223
255
|
end
|
data/lib/qb/version.rb
CHANGED
data/library/qb_facts.py
CHANGED
@@ -1,28 +1,68 @@
|
|
1
1
|
#!/usr/bin/python
|
2
2
|
|
3
3
|
import subprocess
|
4
|
+
import os
|
5
|
+
import glob
|
6
|
+
import json
|
7
|
+
|
8
|
+
def gemspec_path(dir):
|
9
|
+
paths = glob.glob(os.path.join(dir, '*.gemspec'))
|
10
|
+
|
11
|
+
if len(paths) == 0:
|
12
|
+
return None
|
13
|
+
elif len(paths) == 1:
|
14
|
+
return paths[0]
|
15
|
+
else:
|
16
|
+
# this shouldn't really happen, but i don't want to stop the show...
|
17
|
+
return paths[0]
|
18
|
+
|
19
|
+
def is_gem(dir):
|
20
|
+
return bool(gemspec_path(dir))
|
4
21
|
|
5
22
|
def main():
|
6
23
|
module = AnsibleModule(
|
7
24
|
argument_spec = dict(
|
25
|
+
qb_dir = dict(require = True, type = 'path'),
|
8
26
|
),
|
9
27
|
supports_check_mode = False,
|
10
28
|
)
|
11
|
-
|
29
|
+
|
30
|
+
qb_dir = module.params['qb_dir']
|
12
31
|
|
13
32
|
facts = {}
|
14
33
|
|
15
|
-
|
16
|
-
'
|
17
|
-
'
|
34
|
+
cmds = {
|
35
|
+
'qb_git_user_name': ['git', 'config', 'user.name'],
|
36
|
+
'qb_git_user_email': ['git', 'config', 'user.email'],
|
18
37
|
}
|
19
38
|
|
20
|
-
for key, cmd in
|
39
|
+
for key, cmd in cmds.iteritems():
|
21
40
|
try:
|
22
|
-
|
41
|
+
value = subprocess.check_output(cmd).rstrip()
|
42
|
+
facts[key] = value
|
23
43
|
except subprocess.CalledProcessError as e:
|
24
|
-
pass
|
44
|
+
pass
|
45
|
+
|
46
|
+
if is_gem(qb_dir):
|
47
|
+
ruby = '''
|
48
|
+
require 'json'
|
49
|
+
spec = Gem::Specification::load("%s")
|
50
|
+
puts JSON.dump({
|
51
|
+
'name' => spec.name,
|
52
|
+
'version' => spec.version,
|
53
|
+
})
|
54
|
+
''' % (gemspec_path(qb_dir))
|
55
|
+
|
56
|
+
spec_json = subprocess.check_output(['ruby', '-e', ruby])
|
57
|
+
gem_info = json.loads(spec_json)
|
58
|
+
gem_info['gemspec_path'] = gemspec_path(qb_dir)
|
25
59
|
|
60
|
+
facts['qb_gem_info'] = gem_info
|
61
|
+
|
62
|
+
# depreciated namespaceless names
|
63
|
+
facts['git_user_name'] = facts['qb_git_user_name']
|
64
|
+
facts['git_user_email'] = facts['qb_git_user_email']
|
65
|
+
|
26
66
|
changed = False
|
27
67
|
|
28
68
|
module.exit_json(
|
data/qb.gemspec
CHANGED
@@ -21,10 +21,14 @@ Gem::Specification.new do |spec|
|
|
21
21
|
`git submodule --quiet foreach pwd`.split($\).each do |submodule_path|
|
22
22
|
Dir.chdir(submodule_path) do
|
23
23
|
submodule_relative_path = submodule_path.sub gem_dir, ""
|
24
|
-
|
25
|
-
#
|
26
|
-
|
27
|
-
|
24
|
+
|
25
|
+
# don't bundle dev submods
|
26
|
+
unless submodule_relative_path.start_with? 'dev/'
|
27
|
+
# issue git ls-files in submodule's directory and
|
28
|
+
# prepend the submodule path to create absolute file paths
|
29
|
+
`git ls-files`.split($\).each do |filename|
|
30
|
+
spec.files << "#{submodule_relative_path}/#{filename}"
|
31
|
+
end
|
28
32
|
end
|
29
33
|
end
|
30
34
|
end
|
@@ -37,8 +41,10 @@ Gem::Specification.new do |spec|
|
|
37
41
|
spec.add_development_dependency "rake", "~> 10.0"
|
38
42
|
spec.add_development_dependency "rspec"
|
39
43
|
|
40
|
-
spec.add_dependency "cmds", ">= 0.0.9"
|
41
|
-
spec.add_dependency "nrser-extras", ">= 0.0.3"
|
44
|
+
spec.add_dependency "cmds",'~> 0.0', ">= 0.0.9"
|
45
|
+
spec.add_dependency "nrser-extras", '~> 0.0', ">= 0.0.3"
|
46
|
+
spec.add_dependency "state_mate", '~> 0.0', ">= 0.0.8"
|
47
|
+
|
42
48
|
|
43
49
|
if QB::VERSION.end_with? '.dev'
|
44
50
|
commit = `git rev-parse HEAD`.strip
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# ruby / gem / bundler stuff
|
2
|
+
# ==========================
|
3
|
+
|
4
|
+
*.gem
|
5
|
+
*.rbc
|
6
|
+
.bundle
|
7
|
+
.config
|
8
|
+
.yardoc
|
9
|
+
InstalledFiles
|
10
|
+
_yardoc
|
11
|
+
coverage
|
12
|
+
doc/
|
13
|
+
lib/bundler/man
|
14
|
+
pkg
|
15
|
+
rdoc
|
16
|
+
spec/reports
|
17
|
+
test/tmp
|
18
|
+
test/version_tmp
|
19
|
+
tmp
|
20
|
+
*.bundle
|
21
|
+
*.so
|
22
|
+
*.o
|
23
|
+
*.a
|
24
|
+
mkmf.log
|
25
|
+
|
26
|
+
# osx
|
27
|
+
# ===
|
28
|
+
|
29
|
+
.DS_Store
|
30
|
+
|
31
|
+
# test stuff
|
32
|
+
# ==========
|
33
|
+
|
34
|
+
# stuff copied in from the repo
|
35
|
+
test/ansible/roles/nrser.state_mate
|
36
|
+
|
37
|
+
# temp playbook generated by rspec tests
|
38
|
+
test/ansible/temp-playbook.yml
|
@@ -0,0 +1,46 @@
|
|
1
|
+
PATH
|
2
|
+
remote: /Users/nrser/dev/gh/nrser/state_mate
|
3
|
+
specs:
|
4
|
+
state_mate (0.0.7.dev)
|
5
|
+
CFPropertyList (~> 2.3)
|
6
|
+
cmds (~> 0.0, >= 0.0.9)
|
7
|
+
nrser (~> 0.0, >= 0.0.13)
|
8
|
+
|
9
|
+
GEM
|
10
|
+
remote: https://rubygems.org/
|
11
|
+
specs:
|
12
|
+
CFPropertyList (2.3.2)
|
13
|
+
cmds (0.0.9)
|
14
|
+
erubis (~> 2.7)
|
15
|
+
nrser (>= 0.0.13)
|
16
|
+
diff-lcs (1.2.5)
|
17
|
+
erubis (2.7.0)
|
18
|
+
nrser (0.0.13)
|
19
|
+
nrser-extras (0.0.3)
|
20
|
+
cmds (>= 0.0.7)
|
21
|
+
nrser (>= 0.0.13)
|
22
|
+
rspec (3.3.0)
|
23
|
+
rspec-core (~> 3.3.0)
|
24
|
+
rspec-expectations (~> 3.3.0)
|
25
|
+
rspec-mocks (~> 3.3.0)
|
26
|
+
rspec-core (3.3.2)
|
27
|
+
rspec-support (~> 3.3.0)
|
28
|
+
rspec-expectations (3.3.1)
|
29
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
30
|
+
rspec-support (~> 3.3.0)
|
31
|
+
rspec-mocks (3.3.2)
|
32
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
33
|
+
rspec-support (~> 3.3.0)
|
34
|
+
rspec-support (3.3.0)
|
35
|
+
|
36
|
+
PLATFORMS
|
37
|
+
ruby
|
38
|
+
|
39
|
+
DEPENDENCIES
|
40
|
+
cmds
|
41
|
+
nrser-extras
|
42
|
+
rspec
|
43
|
+
state_mate!
|
44
|
+
|
45
|
+
BUNDLED WITH
|
46
|
+
1.10.6
|
@@ -0,0 +1,45 @@
|
|
1
|
+
nrser.state_mate
|
2
|
+
================
|
3
|
+
|
4
|
+
installs the `state_mate` gem and provides the `state` Ansible module for
|
5
|
+
maintaining system state on OSX.
|
6
|
+
|
7
|
+
Requirements
|
8
|
+
------------
|
9
|
+
|
10
|
+
a Ruby version where the user you run Ansible as can install gems.
|
11
|
+
|
12
|
+
Role Variables
|
13
|
+
--------------
|
14
|
+
|
15
|
+
- `state_mate_version`: version of the `state_mate` gem to install.
|
16
|
+
|
17
|
+
Dependencies
|
18
|
+
------------
|
19
|
+
|
20
|
+
none.
|
21
|
+
|
22
|
+
Example Playbook
|
23
|
+
----------------
|
24
|
+
|
25
|
+
Including an example of how to use your role (for instance, with variables passed in as parameters) is always nice for users too:
|
26
|
+
|
27
|
+
- hosts: servers
|
28
|
+
roles:
|
29
|
+
- role: nrser.state_mate
|
30
|
+
tasks:
|
31
|
+
- name: always show scrollbars
|
32
|
+
state:
|
33
|
+
defaults:
|
34
|
+
key: NSGlobalDomain:AppleShowScrollBars
|
35
|
+
set: Always
|
36
|
+
|
37
|
+
License
|
38
|
+
-------
|
39
|
+
|
40
|
+
BSD
|
41
|
+
|
42
|
+
Author Information
|
43
|
+
------------------
|
44
|
+
|
45
|
+
<https://github.com/nrser>
|
@@ -0,0 +1 @@
|
|
1
|
+
0.1.1
|
@@ -0,0 +1,82 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# WANT_JSON
|
3
|
+
|
4
|
+
# needed for dev
|
5
|
+
begin
|
6
|
+
require 'bundler/setup'
|
7
|
+
rescue LoadError => e
|
8
|
+
end
|
9
|
+
|
10
|
+
require 'json'
|
11
|
+
require 'shellwords'
|
12
|
+
require 'pp'
|
13
|
+
require 'yaml'
|
14
|
+
|
15
|
+
require 'nrser'
|
16
|
+
require 'state_mate'
|
17
|
+
require 'state_mate/adapters/yaml'
|
18
|
+
|
19
|
+
using NRSER
|
20
|
+
|
21
|
+
def main
|
22
|
+
input = nil
|
23
|
+
args = nil
|
24
|
+
changed = false
|
25
|
+
|
26
|
+
# preorder for yaml keys
|
27
|
+
StateMate::Adapters::YAML.preorder = ['name', 'tags', 'command']
|
28
|
+
|
29
|
+
begin
|
30
|
+
input = File.read ARGV[0]
|
31
|
+
args = JSON.load input
|
32
|
+
|
33
|
+
raise "arg fail" if args['fail']
|
34
|
+
|
35
|
+
# filter out keys that start with '_ansible', which are ansible-added
|
36
|
+
# values.
|
37
|
+
#
|
38
|
+
# example:
|
39
|
+
#
|
40
|
+
# {"_ansible_version"=>"2.1.0.0",
|
41
|
+
# "_ansible_selinux_special_fs"=>["fuse", "nfs", "vboxsf", "ramfs"],
|
42
|
+
# "_ansible_no_log"=>false,
|
43
|
+
# "_ansible_verbosity"=>0,
|
44
|
+
# "_ansible_syslog_facility"=>"LOG_USER",
|
45
|
+
# "_ansible_diff"=>false,
|
46
|
+
# "_ansible_debug"=>false,
|
47
|
+
# "_ansible_check_mode"=>false}
|
48
|
+
#
|
49
|
+
spec = args.reject {|k, v| k.start_with? '_ansible'}
|
50
|
+
|
51
|
+
if spec['debug']
|
52
|
+
StateMate.debug = spec['debug']
|
53
|
+
spec.delete 'debug'
|
54
|
+
|
55
|
+
StateMate.debug "START RUN #{ '*' * 42 }"
|
56
|
+
StateMate.debug YAML.dump(spec)
|
57
|
+
end
|
58
|
+
|
59
|
+
changes = StateMate.execute spec
|
60
|
+
|
61
|
+
StateMate.debug changes: changes
|
62
|
+
|
63
|
+
print JSON.dump({
|
64
|
+
'changed' => !changes.empty?,
|
65
|
+
'changes' => changes,
|
66
|
+
})
|
67
|
+
rescue Exception => e
|
68
|
+
StateMate.debug error: e
|
69
|
+
|
70
|
+
print JSON.dump({
|
71
|
+
'failed' => true,
|
72
|
+
# 'msg' => e.format, # broken?
|
73
|
+
'msg' => e.message,
|
74
|
+
# 'input' => input,
|
75
|
+
'args' => args,
|
76
|
+
# 'ARGV' => ARGV,
|
77
|
+
# 'ruby' => RUBY_VERSION,
|
78
|
+
})
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
main if __FILE__ == $0
|