config_curator 0.0.2 → 0.1.0
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/CHANGELOG.md +6 -0
- data/lib/config_curator/package_lookup.rb +22 -5
- data/lib/config_curator/version.rb +1 -1
- data/spec/package_lookup_spec.rb +34 -8
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 32b4ddb600f1f140e66c33d83bdde687f92e94a3
|
4
|
+
data.tar.gz: 85b1b44674ba0ac5df73cd64e33e509a44b9a77c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 71e19020b4da56639b484babdd8e153e45ebdffdcf8423546bfd7de17d296738c9cd8f447bdd97d45aaf1230d81910e15a36a3a24078ae231f63a3d1efbe9582
|
7
|
+
data.tar.gz: 1efebe21980e568e141376b77c92c60da909ba77c042b8a91ed490c817e2fc41451828e0985dd7d5422e1ca96b91fb758ac8ecf28aafa445115f2b92894dc7c4
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,11 @@
|
|
1
1
|
# Config Curator ChangeLog
|
2
2
|
|
3
|
+
## 0.1.0
|
4
|
+
|
5
|
+
- PackageLookup#tools separates tool identifier and tool command.
|
6
|
+
- PackageLookup#installed? checks for tool command before lookup.
|
7
|
+
- Support for FreeBSD's pkgng added to PackageLookup.
|
8
|
+
|
3
9
|
## 0.0.1
|
4
10
|
|
5
11
|
- Initial development release.
|
@@ -16,7 +16,12 @@ module ConfigCurator
|
|
16
16
|
class LookupFailed < RuntimeError; end
|
17
17
|
|
18
18
|
# Default list of supported package tools.
|
19
|
-
|
19
|
+
# @see #tools
|
20
|
+
TOOLS = {
|
21
|
+
dpkg: 'dpkg',
|
22
|
+
pacman: 'pacman',
|
23
|
+
pkgng: 'pkg',
|
24
|
+
}
|
20
25
|
|
21
26
|
attr_accessor :tool, :tools
|
22
27
|
|
@@ -25,7 +30,8 @@ module ConfigCurator
|
|
25
30
|
end
|
26
31
|
|
27
32
|
# Package tools that support package lookup ordered by preference.
|
28
|
-
#
|
33
|
+
# Each key is an identifier and each value is the command to check for.
|
34
|
+
# @return [Hash] hash of supported package tools
|
29
35
|
def tools
|
30
36
|
@tools ||= TOOLS
|
31
37
|
end
|
@@ -35,9 +41,9 @@ module ConfigCurator
|
|
35
41
|
def tool
|
36
42
|
return @tool if @tool
|
37
43
|
|
38
|
-
tools.each do |
|
39
|
-
if command?
|
40
|
-
return @tool =
|
44
|
+
tools.each do |k, v|
|
45
|
+
if command? v
|
46
|
+
return @tool = k
|
41
47
|
end
|
42
48
|
end
|
43
49
|
@tool
|
@@ -48,6 +54,10 @@ module ConfigCurator
|
|
48
54
|
# @return [Boolean] if package is installed
|
49
55
|
def installed? package
|
50
56
|
fail LookupFailed, 'No supported package tool found.' if tool.nil?
|
57
|
+
|
58
|
+
cmd = tools[tool]
|
59
|
+
fail LookupFailed, "Package tool '#{cmd}' not found." if command?(cmd).nil?
|
60
|
+
|
51
61
|
send tool, package
|
52
62
|
end
|
53
63
|
|
@@ -79,6 +89,13 @@ module ConfigCurator
|
|
79
89
|
wait_thr.value.to_i == 0
|
80
90
|
end
|
81
91
|
end
|
92
|
+
|
93
|
+
def pkgng package
|
94
|
+
cmd = command? 'pkg'
|
95
|
+
Open3.popen3 cmd, 'info', package do |_, _ , _, wait_thr|
|
96
|
+
wait_thr.value.to_i == 0
|
97
|
+
end
|
98
|
+
end
|
82
99
|
end
|
83
100
|
|
84
101
|
end
|
data/spec/package_lookup_spec.rb
CHANGED
@@ -32,8 +32,8 @@ describe ConfigCurator::PackageLookup do
|
|
32
32
|
context "when tool not set" do
|
33
33
|
|
34
34
|
it "returns the first avaible tool" do
|
35
|
-
|
36
|
-
lookup.
|
35
|
+
lookup.tools = {dpkg: 'dpkg', pacman: 'pacman'}
|
36
|
+
allow(lookup).to receive(:command?).with('dpkg').and_return(true)
|
37
37
|
expect(lookup.tool).to eq :dpkg
|
38
38
|
end
|
39
39
|
end
|
@@ -41,17 +41,43 @@ describe ConfigCurator::PackageLookup do
|
|
41
41
|
|
42
42
|
describe "#installed?" do
|
43
43
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
44
|
+
context "when package is found" do
|
45
|
+
|
46
|
+
it "calls the corresponding private lookup method and returns true" do
|
47
|
+
lookup.tool = :dpkg
|
48
|
+
cmd = lookup.tools[:dpkg]
|
49
|
+
allow(lookup).to receive(:command?).with(cmd).and_return(cmd)
|
50
|
+
expect(lookup).to receive(:dpkg).with('rsync').and_return(true)
|
51
|
+
expect(lookup.installed? 'rsync').to be true
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
context "when package not found" do
|
56
|
+
|
57
|
+
it "calls the corresponding private lookup method and returns false" do
|
58
|
+
lookup.tool = :dpkg
|
59
|
+
cmd = lookup.tools[:dpkg]
|
60
|
+
allow(lookup).to receive(:command?).with(cmd).and_return(cmd)
|
61
|
+
expect(lookup).to receive(:dpkg).with('rsync').and_return(false)
|
62
|
+
expect(lookup.installed? 'rsync').to be false
|
63
|
+
end
|
48
64
|
end
|
49
65
|
|
50
66
|
context "when no package tool found" do
|
51
67
|
|
52
68
|
it "fails" do
|
53
|
-
lookup.tools =
|
54
|
-
allow(lookup).to receive(:command?).with(
|
69
|
+
lookup.tools = {dpkg: 'dpkg'}
|
70
|
+
allow(lookup).to receive(:command?).with('dpkg').and_return(nil)
|
71
|
+
expect { lookup.installed? 'rsync' }.to raise_error ConfigCurator::PackageLookup::LookupFailed
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
context "when package tool not found" do
|
76
|
+
|
77
|
+
it "fails" do
|
78
|
+
lookup.tool = :dpkg
|
79
|
+
cmd = lookup.tools[:dpkg]
|
80
|
+
allow(lookup).to receive(:command?).with(cmd).and_return(nil)
|
55
81
|
expect { lookup.installed? 'rsync' }.to raise_error ConfigCurator::PackageLookup::LookupFailed
|
56
82
|
end
|
57
83
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: config_curator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Evan Boyd Sosenko
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-05-
|
11
|
+
date: 2014-05-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|