loom-core 0.0.6 → 0.0.9
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/.rubocop.yml +31 -0
- data/Gemfile.lock +108 -56
- data/Rakefile +2 -0
- data/bin/loom +3 -0
- data/docs/architecture.jpg +0 -0
- data/gentags.sh +2 -0
- data/lib/loom/all.rb +1 -1
- data/lib/loom/config.rb +2 -2
- data/lib/loom/method_signature.rb +1 -1
- data/lib/loom/mods/action_proxy.rb +2 -2
- data/lib/loom/mods/mod_loader.rb +10 -5
- data/lib/loom/mods/module.rb +6 -5
- data/lib/loom/pattern/all.rb +1 -0
- data/lib/loom/pattern/definition_context.rb +7 -5
- data/lib/loom/pattern/dsl.rb +184 -119
- data/lib/loom/pattern/expanding_reference.rb +82 -6
- data/lib/loom/pattern/loader.rb +2 -18
- data/lib/loom/pattern/pattern.rb +52 -0
- data/lib/loom/pattern/reference.rb +17 -13
- data/lib/loom/pattern/reference_set.rb +71 -50
- data/lib/loom/runner/all.rb +2 -0
- data/lib/loom/runner/execution_context.rb +9 -0
- data/lib/loom/{dsl.rb → runner/sshkit_connector.rb} +5 -7
- data/lib/loom/runner.rb +46 -33
- data/lib/loom/shell/api.rb +3 -3
- data/lib/loom/shell/cmd_wrapper.rb +5 -2
- data/lib/loom/shell/core.rb +16 -16
- data/lib/loom/shell.rb +4 -2
- data/lib/loom/version.rb +1 -1
- data/lib/loomext/coremods/exec.rb +1 -0
- data/lib/loomext/coremods/systemd/all.rb +1 -0
- data/lib/loomext/coremods/systemd/hostname.rb +10 -0
- data/loom.TAGS +797 -0
- data/loom.gemspec +4 -3
- data/spec/.loom/error_handling.loom +1 -0
- data/spec/.loom/fail.loom +27 -13
- data/spec/.loom/files.loom +1 -0
- data/spec/.loom/inventory.yml +3 -0
- data/spec/.loom/net.loom +1 -0
- data/spec/.loom/pattern_context.loom +1 -0
- data/spec/.loom/pkg.loom +1 -0
- data/spec/.loom/regression.loom +23 -0
- data/spec/.loom/shell.loom +1 -0
- data/spec/.loom/test.loom +21 -4
- data/spec/.loom/user.loom +1 -0
- data/spec/.loom/vms.loom +1 -0
- data/spec/loom/host_spec_spec.rb +1 -1
- data/spec/loom/pattern/dsl_spec.rb +3 -2
- data/spec/shared/loom_internals_helper.rb +1 -1
- data/spec/test_loom_spec.rb +102 -42
- data/test +15 -0
- metadata +40 -17
data/loom.gemspec
CHANGED
@@ -15,7 +15,7 @@ Gem::Specification.new do |s|
|
|
15
15
|
s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
|
16
16
|
s.require_paths = %w[lib]
|
17
17
|
|
18
|
-
s.add_dependency 'sshkit', '~> 1.
|
18
|
+
s.add_dependency 'sshkit', '~> 1.23'
|
19
19
|
s.add_dependency 'commander', '~> 4.4'
|
20
20
|
|
21
21
|
# *** Obsolete, see new issue below ***
|
@@ -28,17 +28,18 @@ Gem::Specification.new do |s|
|
|
28
28
|
# I can manually `gem install net-ssh --version 4.0.0.beta3` for now.
|
29
29
|
# s.add_dependency 'net-ssh', '>= 4.0.0.beta3'
|
30
30
|
s.add_dependency 'net-ssh', '>= 5'
|
31
|
-
s.add_dependency 'rbnacl-libsodium', '1.0.
|
31
|
+
s.add_dependency 'rbnacl-libsodium', '1.0.16'
|
32
32
|
s.add_dependency 'bcrypt_pbkdf', ">= 1.0", "< 2.0"
|
33
33
|
|
34
34
|
# New net-ssh requiremetns for ed25519
|
35
35
|
# https://github.com/net-ssh/net-ssh/issues/565
|
36
36
|
s.add_dependency 'ed25519', '>=1.0', '<2.0'
|
37
37
|
|
38
|
-
s.add_development_dependency 'bundler'
|
38
|
+
s.add_development_dependency 'bundler'
|
39
39
|
s.add_development_dependency 'rake', '~> 11.3'
|
40
40
|
s.add_development_dependency 'rspec', '~> 3.5'
|
41
41
|
s.add_development_dependency 'guard-rspec', '~> 4.7'
|
42
42
|
s.add_development_dependency 'pry', '~> 0.10'
|
43
43
|
s.add_development_dependency 'pry-byebug'
|
44
|
+
s.add_development_dependency 'rubocop'
|
44
45
|
end
|
data/spec/.loom/fail.loom
CHANGED
@@ -1,20 +1,34 @@
|
|
1
1
|
# All patterns are expected to fail
|
2
|
+
# $ bx rspec spec/test_loom_spec.rb -f d -t file:fail.loom
|
3
|
+
module ExpectedFailures
|
4
|
+
include Loom::Pattern
|
2
5
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
6
|
+
before do
|
7
|
+
Loom.log.warn <<EOS
|
8
|
+
|
9
|
+
!!!
|
10
|
+
!!! The next case is expected to fail !!!
|
11
|
+
!!!
|
12
|
+
EOS
|
7
13
|
end
|
8
|
-
end
|
9
14
|
|
10
|
-
desc "Always fails due to a hard failure"
|
11
|
-
pattern :fail_hard do |loom, facts|
|
12
|
-
loom.fail "Fail big or not at all"
|
13
|
-
end
|
14
15
|
|
15
|
-
desc "
|
16
|
-
pattern :
|
17
|
-
|
18
|
-
|
16
|
+
desc "Always fails due to return code."
|
17
|
+
pattern :fail_soft do |loom, facts|
|
18
|
+
unless loom.x :false
|
19
|
+
loom.x :echo, "i fail soft, because ALL examples are expected to succeed"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
desc "Expect `loom.fail` to throw and error out"
|
24
|
+
pattern :fail_hard do |loom, facts|
|
25
|
+
loom.fail "`loom.fail`: Fail big or not at all"
|
26
|
+
end
|
27
|
+
|
28
|
+
desc "Expected to fail: Check timeout commands"
|
29
|
+
pattern :timeout_fail do |loom, facts|
|
30
|
+
loom.timeout(:timeout => 1) do
|
31
|
+
loom.x :sleep, 2
|
32
|
+
end
|
19
33
|
end
|
20
34
|
end
|
data/spec/.loom/files.loom
CHANGED
data/spec/.loom/net.loom
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
# Tests patterns nested at deeper module levels with contextual let, before, and
|
2
2
|
# after hooks. Verifies hook order and contexts are set correctly.
|
3
|
+
# $ bx rspec spec/test_loom_spec.rb -f d -t file:pattern_context.loom
|
3
4
|
module PatternContext
|
4
5
|
module Parent
|
5
6
|
include Loom::Pattern
|
data/spec/.loom/pkg.loom
CHANGED
@@ -0,0 +1,23 @@
|
|
1
|
+
# Regression tests for issues that I've spent too much time debugging.
|
2
|
+
# These must be safe to run on localhost.
|
3
|
+
module Regression
|
4
|
+
include Loom::Pattern
|
5
|
+
|
6
|
+
# For some reason, weave glob expansion is more confusing than it should be.
|
7
|
+
weave :verify_no_glob_expansion, [
|
8
|
+
"regression:dummies:date",
|
9
|
+
"regression:dummies:echo",
|
10
|
+
]
|
11
|
+
|
12
|
+
weave :verify_glob_expansion, [
|
13
|
+
"regression:dummies:*",
|
14
|
+
]
|
15
|
+
|
16
|
+
module Dummies
|
17
|
+
include Loom::Pattern
|
18
|
+
|
19
|
+
pattern(:date) { |l, _| l.x :date }
|
20
|
+
pattern(:echo) { |l, _| l.x :echo, :hello }
|
21
|
+
pattern(:uptime) { |l, _| l.x :uptime }
|
22
|
+
end
|
23
|
+
end
|
data/spec/.loom/shell.loom
CHANGED
data/spec/.loom/test.loom
CHANGED
@@ -1,12 +1,28 @@
|
|
1
1
|
# TODO: add in test verifications that these tests are actually doing what
|
2
2
|
# they're supposed to do.
|
3
|
+
# $ bx rspec spec/test_loom_spec.rb -f d -t file:test.loom
|
4
|
+
weave :smoke, [
|
5
|
+
:"test:*",
|
6
|
+
:uptime,
|
7
|
+
]
|
3
8
|
|
4
|
-
|
9
|
+
desc "a pattern with no namespace"
|
10
|
+
pattern(:uptime) { |loom, _| loom.x :uptime }
|
11
|
+
|
12
|
+
module Test
|
5
13
|
include Loom::Pattern
|
6
14
|
|
7
|
-
|
8
|
-
|
9
|
-
|
15
|
+
with_facts { |f| f.merge a_fact: :or_fiction? }
|
16
|
+
let(:a_fact_len) { |f| f[:a_fact].size }
|
17
|
+
|
18
|
+
desc "inspects the facts"
|
19
|
+
report :the_facts do |loom, facts|
|
20
|
+
loom.fail "this should not happen: #{a_fact_len}" unless a_fact_len == 11
|
21
|
+
end
|
22
|
+
|
23
|
+
desc "expects cli provided :param_facts"
|
24
|
+
pattern :param_facts do |loom, facts|
|
25
|
+
loom.fail "expected :param_facts" unless facts[:param_facts] == "from args"
|
10
26
|
end
|
11
27
|
|
12
28
|
desc "Reports `uptime` status"
|
@@ -28,6 +44,7 @@ module Smoke
|
|
28
44
|
pattern :wrap_returns do |loom, facts|
|
29
45
|
# using loom.time as a proxy for Shell::Core#wrap here
|
30
46
|
loom.time do
|
47
|
+
# TODO: this should be loom.fail
|
31
48
|
raise "wrapped true is not true" unless loom.test :true
|
32
49
|
raise "wrapped false is not false" if loom.test :false
|
33
50
|
end
|
data/spec/.loom/user.loom
CHANGED
data/spec/.loom/vms.loom
CHANGED
data/spec/loom/host_spec_spec.rb
CHANGED
@@ -85,7 +85,7 @@ describe Loom::HostSpec do
|
|
85
85
|
end
|
86
86
|
|
87
87
|
context "ipv6 addresses" do
|
88
|
-
let(:host_string) { "[2a02:120b:2c28:5920:6257:18ff:febf:13c8:22
|
88
|
+
let(:host_string) { "[2a02:120b:2c28:5920:6257:18ff:febf:13c8]:22" }
|
89
89
|
|
90
90
|
it "parses user@localhost configurations as remote" do
|
91
91
|
expect(subject.is_localhost?).to be false
|
@@ -3,6 +3,7 @@ require "loom/pattern"
|
|
3
3
|
require "loom/shell"
|
4
4
|
|
5
5
|
describe Loom::Pattern::DSL do
|
6
|
+
extend LoomSpec::LoomInternalsHelper
|
6
7
|
|
7
8
|
# Fake API for tests. This object should raise an error on any command
|
8
9
|
# execution.
|
@@ -18,8 +19,8 @@ describe Loom::Pattern::DSL do
|
|
18
19
|
config.log_device = @logger_io
|
19
20
|
end
|
20
21
|
|
21
|
-
@reference_set =
|
22
|
-
.
|
22
|
+
@reference_set =
|
23
|
+
Loom::Pattern::ReferenceSet.builder(loom_file, ':loom_file').build
|
23
24
|
end
|
24
25
|
|
25
26
|
let(:pattern_under_test) { @reference_set['pattern_under_test'] }
|
@@ -15,7 +15,7 @@ module LoomSpec
|
|
15
15
|
|
16
16
|
def create_reference_set(loom_file_src=nil, path: 'loom/file/path')
|
17
17
|
loom_file_src ||= File.read(path)
|
18
|
-
Loom::Pattern::ReferenceSet::
|
18
|
+
Loom::Pattern::ReferenceSet::builder(loom_file_src, path).build
|
19
19
|
end
|
20
20
|
|
21
21
|
def capture_logs_to_io
|
data/spec/test_loom_spec.rb
CHANGED
@@ -15,6 +15,10 @@ describe "spec .loom files" do
|
|
15
15
|
}
|
16
16
|
|
17
17
|
EXPECTED_EXIT_CODE = {
|
18
|
+
# 100 to indicate failing patterns
|
19
|
+
# + 3 failed patterns
|
20
|
+
# ---
|
21
|
+
# 103 expected exit code
|
18
22
|
"fail.loom" => 103
|
19
23
|
}
|
20
24
|
|
@@ -25,53 +29,109 @@ describe "spec .loom files" do
|
|
25
29
|
|
26
30
|
let(:host) { "rp0" }
|
27
31
|
let(:patterns) { ref_set.slugs }
|
28
|
-
let(:command) {
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
context "
|
42
|
-
let(:
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
it "should
|
48
|
-
|
49
|
-
|
50
|
-
|
32
|
+
let(:command) { nil }
|
33
|
+
|
34
|
+
let(:executor) { lambda do |*cmd_parts|
|
35
|
+
cmd_exec = cmd_parts.join ' '
|
36
|
+
output = `#{cmd_exec} 2>&1`
|
37
|
+
OpenStruct.new({
|
38
|
+
cmd_exec: cmd_exec,
|
39
|
+
stdout: output,
|
40
|
+
rc: $?.exitstatus,
|
41
|
+
})
|
42
|
+
end }
|
43
|
+
let(:exec_result) { executor.call(*command) }
|
44
|
+
|
45
|
+
context "$ loom inventory", smoke: true do
|
46
|
+
let(:command) {[
|
47
|
+
"bin/loom inventory",
|
48
|
+
"-X loom_search_paths=./spec/.loom"
|
49
|
+
]}
|
50
|
+
|
51
|
+
it "should list all hosts in inventory.yml" do
|
52
|
+
result = exec_result
|
53
|
+
|
54
|
+
["a.host.to.check", "my.other.host"].each do |h|
|
55
|
+
expect(result.stdout).to match(/#{h}/), result.to_yaml
|
56
|
+
end
|
57
|
+
expect(result.rc).to eql 0
|
51
58
|
end
|
52
59
|
end
|
53
60
|
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
61
|
+
context "$ loom pattern", smoke: true do
|
62
|
+
let(:command) {[
|
63
|
+
"bin/loom patterns",
|
64
|
+
"-l #{LOOM_FILES.join ','}"
|
65
|
+
]}
|
66
|
+
|
67
|
+
it "should list all patterns to stdout" do
|
68
|
+
result = exec_result
|
69
|
+
|
70
|
+
# some expected pattern slug namespaces
|
71
|
+
["pkg", "shell", "expectedfailures", "test"].each do |ns|
|
72
|
+
expect(result.stdout).to match(/^\s*#{ns}:.+/), result.to_yaml
|
73
|
+
end
|
74
|
+
expect(result.rc).to eql 0
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
context "$ loom weave" do
|
79
|
+
|
80
|
+
# Tests important command line flags
|
81
|
+
let(:command) {[
|
82
|
+
"bin/loom weave #{patterns.join " "}",
|
83
|
+
"-t",
|
84
|
+
"-l #{loom_file}",
|
85
|
+
"-X log_level=info",
|
86
|
+
"-H #{host}",
|
87
|
+
"-V",
|
88
|
+
"-X sshkit_log_level=warn",
|
89
|
+
"-X log_device=stderr",
|
90
|
+
"-X run_failure_strategy=cowboy",
|
91
|
+
"-F param_facts='from args'"
|
92
|
+
]}
|
93
|
+
|
94
|
+
# bundle exec rspec --tag smoke
|
95
|
+
context "test.loom" do
|
96
|
+
let(:loom_file) { LOOM_FILES.select { |p| p.match?(/#{subject}/) }.first }
|
58
97
|
let(:ref_set) { create_reference_set(path: loom_file) }
|
98
|
+
let(:patterns) { [:smoke] }
|
99
|
+
let(:host) { "localhost" }
|
100
|
+
|
101
|
+
it "should pass the smoke tests quickly", :smoke => true do
|
102
|
+
result = exec_result
|
103
|
+
unless result.rc == 0
|
104
|
+
puts "loom output:\n#{output}"
|
105
|
+
end
|
106
|
+
expect(result.rc).to eq(0), result.to_yaml
|
107
|
+
end
|
108
|
+
end
|
59
109
|
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
110
|
+
# bundle exec rspec --tag integration
|
111
|
+
LOOM_FILES.each do |loom_file|
|
112
|
+
context File.basename loom_file do
|
113
|
+
let(:loom_file) { loom_file }
|
114
|
+
let(:ref_set) { create_reference_set(path: loom_file) }
|
115
|
+
|
116
|
+
if XFILE_SET[File.basename(loom_file)]
|
117
|
+
xit "should pass all the tests",
|
118
|
+
SPEC_TAGS.merge(:file => File.basename(loom_file)) {}
|
119
|
+
else
|
120
|
+
it "should pass all tests",
|
121
|
+
SPEC_TAGS.merge(:file => File.basename(loom_file)) do
|
122
|
+
exec = command.join(' ')
|
123
|
+
puts <<EOS
|
124
|
+
executing command:
|
125
|
+
$ #{exec}
|
126
|
+
EOS
|
127
|
+
# TODO pattern match the commands on STDOUT (see comment in
|
128
|
+
# .loom/test.loom)
|
129
|
+
output = `#{exec}`
|
130
|
+
|
131
|
+
basename = File.basename(loom_file)
|
132
|
+
expected_exit_code = EXPECTED_EXIT_CODE[basename] || 0
|
133
|
+
expect($?.exitstatus).to eq expected_exit_code
|
134
|
+
end
|
75
135
|
end
|
76
136
|
end
|
77
137
|
end
|
data/test
CHANGED
@@ -1,2 +1,17 @@
|
|
1
1
|
#!/bin/sh
|
2
|
+
echo "running unit and smoke tests"
|
2
3
|
bundle exec rspec --tag ~integration
|
4
|
+
rc=$?
|
5
|
+
if [ $rc -ne 0 ]; then
|
6
|
+
exit $rc
|
7
|
+
fi
|
8
|
+
|
9
|
+
y_or_Y="${1}"
|
10
|
+
if [ "${y_or_Y}" == "" ];then
|
11
|
+
read -p "run integration tests (y/n)?" y_or_Y
|
12
|
+
fi
|
13
|
+
|
14
|
+
case "$y_or_Y" in
|
15
|
+
y|Y ) bundle exec rspec --tag integration;;
|
16
|
+
* ) exit $rc;;
|
17
|
+
esac
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: loom-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Erick Johnson
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-11-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sshkit
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '1.
|
19
|
+
version: '1.23'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '1.
|
26
|
+
version: '1.23'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: commander
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -58,14 +58,14 @@ dependencies:
|
|
58
58
|
requirements:
|
59
59
|
- - '='
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 1.0.
|
61
|
+
version: 1.0.16
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - '='
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: 1.0.
|
68
|
+
version: 1.0.16
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: bcrypt_pbkdf
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -110,16 +110,16 @@ dependencies:
|
|
110
110
|
name: bundler
|
111
111
|
requirement: !ruby/object:Gem::Requirement
|
112
112
|
requirements:
|
113
|
-
- - "
|
113
|
+
- - ">="
|
114
114
|
- !ruby/object:Gem::Version
|
115
|
-
version: '
|
115
|
+
version: '0'
|
116
116
|
type: :development
|
117
117
|
prerelease: false
|
118
118
|
version_requirements: !ruby/object:Gem::Requirement
|
119
119
|
requirements:
|
120
|
-
- - "
|
120
|
+
- - ">="
|
121
121
|
- !ruby/object:Gem::Version
|
122
|
-
version: '
|
122
|
+
version: '0'
|
123
123
|
- !ruby/object:Gem::Dependency
|
124
124
|
name: rake
|
125
125
|
requirement: !ruby/object:Gem::Requirement
|
@@ -190,6 +190,20 @@ dependencies:
|
|
190
190
|
- - ">="
|
191
191
|
- !ruby/object:Gem::Version
|
192
192
|
version: '0'
|
193
|
+
- !ruby/object:Gem::Dependency
|
194
|
+
name: rubocop
|
195
|
+
requirement: !ruby/object:Gem::Requirement
|
196
|
+
requirements:
|
197
|
+
- - ">="
|
198
|
+
- !ruby/object:Gem::Version
|
199
|
+
version: '0'
|
200
|
+
type: :development
|
201
|
+
prerelease: false
|
202
|
+
version_requirements: !ruby/object:Gem::Requirement
|
203
|
+
requirements:
|
204
|
+
- - ">="
|
205
|
+
- !ruby/object:Gem::Version
|
206
|
+
version: '0'
|
193
207
|
description: Repeatable management of remote hosts over SSH
|
194
208
|
email: ejohnson82@gmail.com
|
195
209
|
executables:
|
@@ -199,17 +213,19 @@ extra_rdoc_files: []
|
|
199
213
|
files:
|
200
214
|
- ".gitignore"
|
201
215
|
- ".rspec"
|
216
|
+
- ".rubocop.yml"
|
202
217
|
- Gemfile
|
203
218
|
- Gemfile.lock
|
204
219
|
- Guardfile
|
205
220
|
- Rakefile
|
206
221
|
- bin/loom
|
222
|
+
- docs/architecture.jpg
|
223
|
+
- gentags.sh
|
207
224
|
- lib/env/development.rb
|
208
225
|
- lib/loom.rb
|
209
226
|
- lib/loom/all.rb
|
210
227
|
- lib/loom/config.rb
|
211
228
|
- lib/loom/core_ext.rb
|
212
|
-
- lib/loom/dsl.rb
|
213
229
|
- lib/loom/facts.rb
|
214
230
|
- lib/loom/facts/all.rb
|
215
231
|
- lib/loom/facts/fact_file_provider.rb
|
@@ -231,10 +247,14 @@ files:
|
|
231
247
|
- lib/loom/pattern/expanding_reference.rb
|
232
248
|
- lib/loom/pattern/hook.rb
|
233
249
|
- lib/loom/pattern/loader.rb
|
250
|
+
- lib/loom/pattern/pattern.rb
|
234
251
|
- lib/loom/pattern/reference.rb
|
235
252
|
- lib/loom/pattern/reference_set.rb
|
236
253
|
- lib/loom/pattern/result_reporter.rb
|
237
254
|
- lib/loom/runner.rb
|
255
|
+
- lib/loom/runner/all.rb
|
256
|
+
- lib/loom/runner/execution_context.rb
|
257
|
+
- lib/loom/runner/sshkit_connector.rb
|
238
258
|
- lib/loom/shell.rb
|
239
259
|
- lib/loom/shell/all.rb
|
240
260
|
- lib/loom/shell/api.rb
|
@@ -262,21 +282,25 @@ files:
|
|
262
282
|
- lib/loomext/coremods/package/package.rb
|
263
283
|
- lib/loomext/coremods/systemd.rb
|
264
284
|
- lib/loomext/coremods/systemd/all.rb
|
285
|
+
- lib/loomext/coremods/systemd/hostname.rb
|
265
286
|
- lib/loomext/coremods/systemd/systemd.rb
|
266
287
|
- lib/loomext/coremods/systemd/systemd_units.rb
|
267
288
|
- lib/loomext/coremods/user.rb
|
268
289
|
- lib/loomext/coremods/vm.rb
|
269
290
|
- lib/loomext/coremods/vm/all.rb
|
270
291
|
- lib/loomext/coremods/vm/vbox.rb
|
292
|
+
- loom.TAGS
|
271
293
|
- loom.gemspec
|
272
294
|
- loom/inventory.yml
|
273
295
|
- scripts/harness.sh
|
274
296
|
- spec/.loom/error_handling.loom
|
275
297
|
- spec/.loom/fail.loom
|
276
298
|
- spec/.loom/files.loom
|
299
|
+
- spec/.loom/inventory.yml
|
277
300
|
- spec/.loom/net.loom
|
278
301
|
- spec/.loom/pattern_context.loom
|
279
302
|
- spec/.loom/pkg.loom
|
303
|
+
- spec/.loom/regression.loom
|
280
304
|
- spec/.loom/shell.loom
|
281
305
|
- spec/.loom/test.loom
|
282
306
|
- spec/.loom/user.loom
|
@@ -297,11 +321,11 @@ files:
|
|
297
321
|
- spec/systemd.loom
|
298
322
|
- spec/test_loom_spec.rb
|
299
323
|
- test
|
300
|
-
homepage:
|
324
|
+
homepage:
|
301
325
|
licenses:
|
302
326
|
- MIT
|
303
327
|
metadata: {}
|
304
|
-
post_install_message:
|
328
|
+
post_install_message:
|
305
329
|
rdoc_options: []
|
306
330
|
require_paths:
|
307
331
|
- lib
|
@@ -316,9 +340,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
316
340
|
- !ruby/object:Gem::Version
|
317
341
|
version: '0'
|
318
342
|
requirements: []
|
319
|
-
|
320
|
-
|
321
|
-
signing_key:
|
343
|
+
rubygems_version: 3.5.22
|
344
|
+
signing_key:
|
322
345
|
specification_version: 4
|
323
346
|
summary: Repeatable management of remote hosts over SSH
|
324
347
|
test_files:
|