qb 0.1.69 → 0.1.70
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/exe/qb +2 -0
- data/lib/qb.rb +5 -28
- data/lib/qb/errors.rb +19 -0
- data/lib/qb/role.rb +17 -0
- data/lib/qb/version.rb +72 -2
- data/roles/qb.qb_role/templates/qb.yml.j2 +6 -0
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a96dba86d6f78961f1b98a546a2c322344b2e16f
|
4
|
+
data.tar.gz: c1ce84a3f5d8d5864c6f0a72e30eb119188803da
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 986b7bf9fdea777e0d32bf5c7cad71d1842917c6c98ca58423121eb3e1a076024f949ce339025a24580afd97da005faa11b7646ffc6f9413d9d2537b8dfba8c9
|
7
|
+
data.tar.gz: 2e378c83dc28305371a331d889302a93206920422907fea50e067d1a2d813af67a1d7c277bfefe222a5e90865435c83111321549f15f02b127c1034e3d26aac3
|
data/exe/qb
CHANGED
data/lib/qb.rb
CHANGED
@@ -1,18 +1,16 @@
|
|
1
1
|
require 'nrser/extras'
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
3
|
+
require_relative './qb/errors'
|
4
|
+
require_relative "./qb/version"
|
5
|
+
require_relative "./qb/util"
|
6
|
+
require_relative './qb/util/stdio'
|
7
|
+
require_relative "./qb/ansible_module"
|
7
8
|
|
8
9
|
module QB
|
9
10
|
ROOT = (Pathname.new(__FILE__).dirname + '..').expand_path
|
10
11
|
GEM_ROLES_DIR = ROOT + 'roles'
|
11
12
|
USER_ROLES_DIR = Pathname.new(ENV['HOME']).join '.ansible', 'roles'
|
12
|
-
MIN_ANSIBLE_VERSION = Gem::Version.new '2.1.2'
|
13
13
|
|
14
|
-
class Error < StandardError
|
15
|
-
end
|
16
14
|
|
17
15
|
def self.debug *args
|
18
16
|
return unless ENV['QB_DEBUG'] && args.length > 0
|
@@ -35,28 +33,7 @@ module QB
|
|
35
33
|
# $stderr.puts("DEBUG " + format(msg, values))
|
36
34
|
$stderr.puts dumpObj.pretty_inspect
|
37
35
|
end
|
38
|
-
|
39
|
-
def self.check_ansible_version
|
40
|
-
out = Cmds.out! 'ansible --version'
|
41
|
-
version_str = out[/ansible\ ([\d\.]+)/, 1]
|
42
|
-
|
43
|
-
if version_str.nil?
|
44
|
-
raise NRSER.dedent <<-END
|
45
|
-
could not parse ansible version from `ansible --version` output:
|
46
|
-
|
47
|
-
#{ out }
|
48
|
-
END
|
49
|
-
end
|
50
36
|
|
51
|
-
version = Gem::Version.new version_str
|
52
|
-
|
53
|
-
if version < QB::MIN_ANSIBLE_VERSION
|
54
|
-
raise NRSER.squish <<-END
|
55
|
-
qb #{ QB::VERSION } requires ansible #{ QB::MIN_ANSIBLE_VERSION },
|
56
|
-
found version #{ version_str } at #{ `which ansible` }
|
57
|
-
END
|
58
|
-
end
|
59
|
-
end
|
60
37
|
end
|
61
38
|
|
62
39
|
# needs QB::*_ROLES_DIR
|
data/lib/qb/errors.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
module QB
|
2
|
+
# Base class for QB errors.
|
3
|
+
class Error < StandardError; end
|
4
|
+
|
5
|
+
# Raised when a version mismatch occurs.
|
6
|
+
class VersionError < Error; end
|
7
|
+
|
8
|
+
# Raised when the current Ansible version doesn't satisfy:
|
9
|
+
#
|
10
|
+
# 1. A role as defined in `<role_dir>/meta/main.yml:min_ansible_version`)
|
11
|
+
#
|
12
|
+
# 2. QB itself as defined in {QB::MIN_ANSIBLE_VERSION}
|
13
|
+
#
|
14
|
+
class AnsibleVersionError < VersionError; end
|
15
|
+
|
16
|
+
# Raised when the current QB version doesn't satisfy a role as defined
|
17
|
+
# in `<role_dir>/meta/qb[.yml]:required_qb_version`).
|
18
|
+
class QBVersionError < VersionError; end
|
19
|
+
end # module QB
|
data/lib/qb/role.rb
CHANGED
@@ -617,6 +617,23 @@ module QB
|
|
617
617
|
meta_or 'ansible_options', {}
|
618
618
|
end
|
619
619
|
|
620
|
+
|
621
|
+
# Get the {Gem::Requirement} parse of the `qb_requirement` key in
|
622
|
+
# {#meta} (if it is defined), which specifies the required version of
|
623
|
+
# `qb` for the role.
|
624
|
+
#
|
625
|
+
# @return [Gem::Requirement, nil]
|
626
|
+
# The requirement if `required_qb_version` key is in {#meta}, else `nil`.
|
627
|
+
#
|
628
|
+
def qb_requirement
|
629
|
+
if meta['requirements'] &&
|
630
|
+
meta['requirements']['gems'] &&
|
631
|
+
meta['requirements']['gems']['qb']
|
632
|
+
Gem::Requirement.new meta['requirements']['gems']['qb']
|
633
|
+
end
|
634
|
+
end
|
635
|
+
|
636
|
+
|
620
637
|
# language inter-op
|
621
638
|
# -----------------------------------------------------------------------
|
622
639
|
|
data/lib/qb/version.rb
CHANGED
@@ -1,9 +1,79 @@
|
|
1
1
|
module QB
|
2
|
+
# Constants
|
3
|
+
# =====================================================================
|
4
|
+
|
2
5
|
GEM_NAME = 'qb'
|
3
6
|
|
4
|
-
VERSION = "0.1.
|
7
|
+
VERSION = "0.1.70"
|
8
|
+
|
9
|
+
MIN_ANSIBLE_VERSION = Gem::Version.new '2.1.2'
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
# Class Methods
|
14
|
+
# =====================================================================
|
5
15
|
|
6
16
|
def self.gemspec
|
7
17
|
Gem.loaded_specs[GEM_NAME]
|
8
18
|
end
|
9
|
-
|
19
|
+
|
20
|
+
|
21
|
+
# Get the {Gem::Version} parse of {QB::VERSION}.
|
22
|
+
#
|
23
|
+
# @return [Gem::Version]
|
24
|
+
#
|
25
|
+
def self.gem_version
|
26
|
+
Gem::Version.new VERSION
|
27
|
+
end
|
28
|
+
|
29
|
+
|
30
|
+
# Check that the Ansible version is not less than {QB::MIN_ANSIBLE_VERSION}.
|
31
|
+
#
|
32
|
+
# @raise [QB::AnsibleVersionError]
|
33
|
+
# If the version of Ansible found is less than {QB::MIN_ANSIBLE_VERSION}.
|
34
|
+
#
|
35
|
+
def self.check_ansible_version
|
36
|
+
out = Cmds.out! 'ansible --version'
|
37
|
+
version_str = out[/ansible\ ([\d\.]+)/, 1]
|
38
|
+
|
39
|
+
if version_str.nil?
|
40
|
+
raise NRSER.dedent <<-END
|
41
|
+
could not parse ansible version from `ansible --version` output:
|
42
|
+
|
43
|
+
#{ out }
|
44
|
+
END
|
45
|
+
end
|
46
|
+
|
47
|
+
version = Gem::Version.new version_str
|
48
|
+
|
49
|
+
if version < QB::MIN_ANSIBLE_VERSION
|
50
|
+
raise QB::AnsibleVersionError, NRSER.squish(
|
51
|
+
<<-END
|
52
|
+
QB #{ QB::VERSION } requires Ansible #{ QB::MIN_ANSIBLE_VERSION },
|
53
|
+
found version #{ version_str } at #{ `which ansible` }
|
54
|
+
END
|
55
|
+
)
|
56
|
+
end
|
57
|
+
end # .check_ansible_version
|
58
|
+
|
59
|
+
|
60
|
+
# If `role` has a {QB::Role#qb_requirement} raise an error if this version of
|
61
|
+
# QB doesn't satisfy it.
|
62
|
+
#
|
63
|
+
# @raise [QB::QBVersionError]
|
64
|
+
# If this version of QB doesn't satisfy the role's requirements.
|
65
|
+
#
|
66
|
+
def self.check_qb_version role
|
67
|
+
unless role.qb_requirement.nil? ||
|
68
|
+
role.qb_requirement.satisfied_by?(QB.gem_version)
|
69
|
+
raise QB::QBVersionError, NRSER.squish(
|
70
|
+
<<-END
|
71
|
+
Role #{ role } requires QB #{ role.qb_requirement }, using QB
|
72
|
+
#{ QB.gem_version } from #{ QB::ROOT }.
|
73
|
+
END
|
74
|
+
)
|
75
|
+
end
|
76
|
+
end # .check_qb_version
|
77
|
+
|
78
|
+
|
79
|
+
end # module QB
|
@@ -7,6 +7,12 @@
|
|
7
7
|
# description of the role to show in it's help output.
|
8
8
|
description: null
|
9
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.1.69
|
15
|
+
|
10
16
|
# prefix for role variables
|
11
17
|
var_prefix: null
|
12
18
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
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.70
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- nrser
|
@@ -181,6 +181,7 @@ files:
|
|
181
181
|
- exe/qb
|
182
182
|
- lib/qb.rb
|
183
183
|
- lib/qb/ansible_module.rb
|
184
|
+
- lib/qb/errors.rb
|
184
185
|
- lib/qb/options.rb
|
185
186
|
- lib/qb/options/option.rb
|
186
187
|
- lib/qb/package/version.rb
|