qb 0.1.63 → 0.1.64
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/options.rb +7 -0
- data/lib/qb/options/option.rb +4 -1
- data/lib/qb/package/version.rb +80 -0
- data/lib/qb/version.rb +1 -1
- data/library/path_facts +6 -66
- 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: c20bbb470860d5f8893a0b231f578aad308aa192
|
4
|
+
data.tar.gz: 6c3049e6fec28c454002d47feacc9148022ab1b1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6406952deeec382082b5234ec5a2f75a7afd21e2a05626a1f67efbeab29d823e96e814356e2d607d8ec47367cca04fdab6189bc21d0ef78d41fa516953bf269c
|
7
|
+
data.tar.gz: 8537a944f35e7337a0aeb3dd1df7fec6c6446d913b8f1e5d4354d71c3863ce507cbb3ed797edb4fff07fa1825ac5a5366f9a7919bf87148a49204f160ca29f21
|
data/lib/qb/options.rb
CHANGED
@@ -2,6 +2,7 @@ require 'optparse'
|
|
2
2
|
|
3
3
|
require_relative "role/errors"
|
4
4
|
require_relative "options/option"
|
5
|
+
require 'qb/package/version'
|
5
6
|
|
6
7
|
module QB
|
7
8
|
class Options
|
@@ -133,6 +134,8 @@ module QB
|
|
133
134
|
Array
|
134
135
|
when 'integer', 'int'
|
135
136
|
Integer
|
137
|
+
when 'version'
|
138
|
+
QB::Package::Version
|
136
139
|
when Hash
|
137
140
|
if option.meta['type'].key? 'one_of'
|
138
141
|
klass = Class.new
|
@@ -274,6 +277,10 @@ module QB
|
|
274
277
|
end
|
275
278
|
|
276
279
|
opt_parser = OptionParser.new do |opts|
|
280
|
+
opts.accept(QB::Package::Version) do |string|
|
281
|
+
QB::Package::Version.from_string(string).to_h
|
282
|
+
end
|
283
|
+
|
277
284
|
opts.banner = @role.banner
|
278
285
|
|
279
286
|
opts.on(
|
data/lib/qb/options/option.rb
CHANGED
@@ -38,7 +38,10 @@ module QB
|
|
38
38
|
Options.cli_ize_name "#{ @include_path.join('-') }-#{ @meta_name }"
|
39
39
|
end
|
40
40
|
|
41
|
-
@var_name = if
|
41
|
+
@var_name = if @meta['var_name']
|
42
|
+
# prefer an explicit, exact variable name if provided
|
43
|
+
@meta['var_name']
|
44
|
+
elsif role.var_prefix
|
42
45
|
Options.var_ize_name "#{ role.var_prefix }_#{ @meta_name }"
|
43
46
|
else
|
44
47
|
Options.var_ize_name @meta_name
|
@@ -0,0 +1,80 @@
|
|
1
|
+
module QB
|
2
|
+
module Package
|
3
|
+
# An attempt to unify NPM and Gem version schemes to a reasonable extend,
|
4
|
+
# and hopefully cover whatever else the cat may drag in.
|
5
|
+
class Version
|
6
|
+
# Create a Version instance from a Gem::Version
|
7
|
+
def self.from_gem_version version
|
8
|
+
release_segments = version.segments.take_while {|seg| !seg.is_a?(String)}
|
9
|
+
prerelease_segments = version.segments[release_segments.length..-1]
|
10
|
+
|
11
|
+
new raw: version.to_s,
|
12
|
+
major: release_segments[0],
|
13
|
+
minor: release_segments[1],
|
14
|
+
patch: release_segments[2],
|
15
|
+
prerelease: prerelease_segments,
|
16
|
+
build: [],
|
17
|
+
release: version.release.to_s
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.from_npm_version version
|
21
|
+
stmt = NRSER.squish <<-END
|
22
|
+
var Semver = require('semver');
|
23
|
+
|
24
|
+
console.log(
|
25
|
+
JSON.stringify(
|
26
|
+
Semver(#{ JSON.dump version })
|
27
|
+
)
|
28
|
+
);
|
29
|
+
END
|
30
|
+
|
31
|
+
parse = JSON.load Cmds.out!("node --eval %s", stmt)
|
32
|
+
|
33
|
+
new raw: version,
|
34
|
+
major: parse['major'],
|
35
|
+
minor: parse['minor'],
|
36
|
+
patch: parse['patch'],
|
37
|
+
prerelease: parse['prerelease'],
|
38
|
+
build: parse['build'],
|
39
|
+
release: [parse['major'], parse['minor'], parse['patch']].join(".")
|
40
|
+
end
|
41
|
+
|
42
|
+
def self.from_string string
|
43
|
+
if string.include? '-'
|
44
|
+
self.from_npm_version string
|
45
|
+
else
|
46
|
+
self.from_gem_version Gem::Version.new(string)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
# Construct a new Version
|
51
|
+
def initialize raw:, major:, minor:, patch:, prerelease:, build:, release:
|
52
|
+
@raw = raw
|
53
|
+
@major = major
|
54
|
+
@minor = minor
|
55
|
+
@patch = patch
|
56
|
+
@prerelease = prerelease
|
57
|
+
@build = build
|
58
|
+
@release = release
|
59
|
+
|
60
|
+
@level = @prerelease[0] || 'release'
|
61
|
+
|
62
|
+
@is_release = @prerelease.empty?
|
63
|
+
@is_dev = @prerelease[0] == 'dev'
|
64
|
+
@is_rc = @prerelease[0] == 'rc'
|
65
|
+
end
|
66
|
+
|
67
|
+
# dump all instance variables into a hash
|
68
|
+
def to_h
|
69
|
+
instance_variables.map {|var|
|
70
|
+
[var[1..-1], instance_variable_get(var)]
|
71
|
+
}.to_h
|
72
|
+
end # #to_h
|
73
|
+
|
74
|
+
# Dump all instance variables in JSON serialization
|
75
|
+
def to_json *args
|
76
|
+
to_h.to_json *args
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end # Package
|
80
|
+
end # QB
|
data/lib/qb/version.rb
CHANGED
data/library/path_facts
CHANGED
@@ -14,6 +14,7 @@ end
|
|
14
14
|
require 'ostruct'
|
15
15
|
|
16
16
|
require 'qb'
|
17
|
+
require 'qb/package/version'
|
17
18
|
require 'cmds'
|
18
19
|
require 'pathname'
|
19
20
|
require 'uri'
|
@@ -28,70 +29,6 @@ end
|
|
28
29
|
GITHUB_SSH_URL_RE = /^git@github\.com\:(?<owner>.*)\/(?<name>.*)\.git$/
|
29
30
|
GITHUB_HTTPS_URL_RE = /^https:\/\/github\.com\/(?<owner>.*)\/(?<name>.*)\.git$/
|
30
31
|
|
31
|
-
# An attempt to unify NPM and Gem version schemes to a reasonable extend,
|
32
|
-
# and hopefully cover whatever else the cat may drag in.
|
33
|
-
class Version
|
34
|
-
# Create a Version instance from a Gem::Version
|
35
|
-
def self.from_gem_version version
|
36
|
-
release_segments = version.segments.take_while {|seg| !seg.is_a?(String)}
|
37
|
-
prerelease_segments = version.segments[release_segments.length..-1]
|
38
|
-
|
39
|
-
new raw: version.to_s,
|
40
|
-
major: release_segments[0],
|
41
|
-
minor: release_segments[1],
|
42
|
-
patch: release_segments[2],
|
43
|
-
prerelease: prerelease_segments,
|
44
|
-
build: [],
|
45
|
-
release: version.release
|
46
|
-
end
|
47
|
-
|
48
|
-
def self.from_npm_version version
|
49
|
-
stmt = NRSER.squish <<-END
|
50
|
-
var Semver = require('semver');
|
51
|
-
|
52
|
-
console.log(
|
53
|
-
JSON.stringify(
|
54
|
-
Semver(#{ JSON.dump version })
|
55
|
-
)
|
56
|
-
);
|
57
|
-
END
|
58
|
-
|
59
|
-
parse = JSON.load Cmds.out!("node --eval %s", stmt)
|
60
|
-
|
61
|
-
new raw: version,
|
62
|
-
major: parse['major'],
|
63
|
-
minor: parse['minor'],
|
64
|
-
patch: parse['patch'],
|
65
|
-
prerelease: parse['prerelease'],
|
66
|
-
build: parse['build'],
|
67
|
-
release: [parse['major'], parse['minor'], parse['patch']].join(".")
|
68
|
-
end
|
69
|
-
|
70
|
-
# Construct a new Version
|
71
|
-
def initialize raw:, major:, minor:, patch:, prerelease:, build:, release:
|
72
|
-
@raw = raw
|
73
|
-
@major = major
|
74
|
-
@minor = minor
|
75
|
-
@patch = patch
|
76
|
-
@prerelease = prerelease
|
77
|
-
@build = build
|
78
|
-
@release = release
|
79
|
-
|
80
|
-
@level = @prerelease[0] || 'release'
|
81
|
-
|
82
|
-
@is_release = @prerelease.empty?
|
83
|
-
@is_dev = @prerelease[0] == 'dev'
|
84
|
-
@is_rc = @prerelease[0] == 'rc'
|
85
|
-
end
|
86
|
-
|
87
|
-
# Dump all instance variables in JSON serialization
|
88
|
-
def to_json *args
|
89
|
-
instance_variables.map {|var|
|
90
|
-
[var[1..-1].to_sym, instance_variable_get(var)]
|
91
|
-
}.to_h.to_json *args
|
92
|
-
end
|
93
|
-
end
|
94
|
-
|
95
32
|
class PathFacts < QB::AnsibleModule
|
96
33
|
# Add a bunch of useful things to know about the path
|
97
34
|
def add_path_facts
|
@@ -225,7 +162,7 @@ class PathFacts < QB::AnsibleModule
|
|
225
162
|
|
226
163
|
spec = Gem::Specification::load(gemspec_path.to_s)
|
227
164
|
gem.name = spec.name
|
228
|
-
gem.version = Version.from_gem_version spec.version
|
165
|
+
gem.version = QB::Package::Version.from_gem_version spec.version
|
229
166
|
end
|
230
167
|
|
231
168
|
# Add facts about an NPM package based in `@path`, if any.
|
@@ -246,7 +183,10 @@ class PathFacts < QB::AnsibleModule
|
|
246
183
|
|
247
184
|
# To stay consistent with Gem
|
248
185
|
npm.name = npm.package_json['name']
|
249
|
-
|
186
|
+
|
187
|
+
npm.version = QB::Package::Version.from_npm_version(
|
188
|
+
npm.package_json['version']
|
189
|
+
)
|
250
190
|
end
|
251
191
|
|
252
192
|
# Run the module.
|
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.64
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- nrser
|
@@ -183,6 +183,7 @@ files:
|
|
183
183
|
- lib/qb/ansible_module.rb
|
184
184
|
- lib/qb/options.rb
|
185
185
|
- lib/qb/options/option.rb
|
186
|
+
- lib/qb/package/version.rb
|
186
187
|
- lib/qb/role.rb
|
187
188
|
- lib/qb/role/errors.rb
|
188
189
|
- lib/qb/util.rb
|