syllabus 0.0.1 → 0.0.2
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/README.md +1 -1
- data/examples/mac.rb +0 -1
- data/lib/syllabus.rb +1 -10
- data/lib/syllabus/config.rb +8 -21
- data/lib/syllabus/core.rb +8 -3
- data/lib/syllabus/version.rb +1 -1
- data/spec/lib/syllabus/config_spec.rb +20 -13
- data/syllabus.gemspec +1 -1
- metadata +16 -26
- data/lib/syllabus/backend.rb +0 -25
- data/lib/syllabus/command.rb +0 -28
- data/lib/syllabus/command/base.rb +0 -2
- data/lib/syllabus/command/darwin.rb +0 -5
- data/lib/syllabus/command/linux.rb +0 -2
- data/lib/syllabus/command/redhat.rb +0 -2
- data/spec/lib/syllabus/backend_spec.rb +0 -23
- data/spec/lib/syllabus/command_spec.rb +0 -59
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f5b5883a98d5bf257cfcad935a27669565efde0e
|
4
|
+
data.tar.gz: 5baf224cc77f0319f1aca69dcc96d11d1443e19c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6144c146067206f896b080e52cdedec6e23db8e60a4a25157958a8971e6d220b3b65d5b21f4141490c8b93a1ff9fcb745dfd8a6b7914e01778958bdb7b1e9ef2
|
7
|
+
data.tar.gz: 3c5130a794977a9f9b4aca4a89778aa17ce0cbdc944bc541a605a0deffcad852eb1f7f6b9ce84db78daa7d4bb3ed65d2000fefdd5d8cf65cb3ec3066eece64f0
|
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Syllabus [](http://travis-ci.org/serverspec/syllabus)
|
2
2
|
|
3
3
|
Syllabus is a configuration management tool for the era of "immutable infrastructure." which just provides a thin abstraction layer onto plain shell script.
|
4
4
|
|
data/examples/mac.rb
CHANGED
data/lib/syllabus.rb
CHANGED
@@ -2,15 +2,6 @@ module Syllabus
|
|
2
2
|
require 'syllabus/version'
|
3
3
|
require 'syllabus/cli'
|
4
4
|
require 'syllabus/core'
|
5
|
-
require 'syllabus/logger'
|
6
5
|
require 'syllabus/config'
|
7
|
-
require 'syllabus/
|
8
|
-
require 'syllabus/command'
|
9
|
-
require 'syllabus/command/base'
|
10
|
-
require 'syllabus/command/darwin'
|
11
|
-
require 'syllabus/command/linux'
|
12
|
-
require 'syllabus/command/redhat'
|
6
|
+
require 'syllabus/logger'
|
13
7
|
end
|
14
|
-
|
15
|
-
require 'specinfra'
|
16
|
-
|
data/lib/syllabus/config.rb
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
class Syllabus::Config
|
2
2
|
attr_reader :commands
|
3
3
|
|
4
|
-
def self.new_from_file(
|
5
|
-
|
6
|
-
new(
|
4
|
+
def self.new_from_file(args)
|
5
|
+
config = File.read(args[:file])
|
6
|
+
new(config: config, file: args[:file], backend: args[:backend])
|
7
7
|
end
|
8
8
|
|
9
|
-
def initialize(
|
9
|
+
def initialize(args)
|
10
|
+
@backend = args[:backend]
|
10
11
|
@hosts = nil
|
11
|
-
@os_type = nil
|
12
12
|
@commands = []
|
13
|
-
instance_eval(
|
13
|
+
instance_eval(args[:config], args[:file] || '')
|
14
14
|
end
|
15
15
|
|
16
16
|
def hosts(arg = nil)
|
@@ -21,29 +21,16 @@ class Syllabus::Config
|
|
21
21
|
@hosts
|
22
22
|
end
|
23
23
|
|
24
|
-
def os_type(arg = nil)
|
25
|
-
if arg
|
26
|
-
@os_type = arg.kind_of?(Proc) ? arg.call : arg
|
27
|
-
end
|
28
|
-
|
29
|
-
@os_type
|
30
|
-
end
|
31
|
-
|
32
24
|
def path(arg = nil)
|
33
25
|
if arg
|
34
|
-
@path = arg.kind_of?(
|
35
|
-
SpecInfra::Configuration.path = @path
|
26
|
+
@path = arg.kind_of?(Array) ? arg : arg.split(':')
|
36
27
|
end
|
37
28
|
|
38
29
|
@path
|
39
30
|
end
|
40
31
|
|
41
32
|
def method_missing(name, *args)
|
42
|
-
command =
|
43
|
-
os_type: os_type,
|
44
|
-
name: name,
|
45
|
-
args: args,
|
46
|
-
)
|
33
|
+
command = @backend.commands.send(name, *args)
|
47
34
|
@commands.push(command)
|
48
35
|
end
|
49
36
|
end
|
data/lib/syllabus/core.rb
CHANGED
@@ -1,11 +1,16 @@
|
|
1
|
+
require 'specinfra'
|
2
|
+
|
1
3
|
class Syllabus::Core
|
4
|
+
extend SpecInfra::Helper::Backend
|
5
|
+
extend SpecInfra::Helper::DetectOS
|
6
|
+
|
2
7
|
def self.run(args)
|
3
|
-
|
4
|
-
|
8
|
+
backend = backend_for(args[:type])
|
9
|
+
config = Syllabus::Config.new_from_file(file: args[:file], backend: backend)
|
5
10
|
logger = Syllabus::Logger.new(level: args[:level])
|
6
11
|
|
7
12
|
config.commands.each do |command|
|
8
|
-
result = backend.run_command(command
|
13
|
+
result = backend.run_command(command)
|
9
14
|
logger.log(command, result)
|
10
15
|
end
|
11
16
|
end
|
data/lib/syllabus/version.rb
CHANGED
@@ -1,6 +1,13 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Syllabus::Config do
|
4
|
+
let(:backend) {
|
5
|
+
backend = SpecInfra::Backend.backend_for('Exec')
|
6
|
+
commands = SpecInfra::Command::RedHat.new
|
7
|
+
backend.set_commands(commands)
|
8
|
+
backend
|
9
|
+
}
|
10
|
+
|
4
11
|
describe '#hosts' do
|
5
12
|
context 'Hosts are passed as an Array' do
|
6
13
|
let(:config) {
|
@@ -9,7 +16,7 @@ hosts %w[foo bar baz]
|
|
9
16
|
EOS
|
10
17
|
}
|
11
18
|
subject {
|
12
|
-
described_class.new(config)
|
19
|
+
described_class.new(backend: backend, config: config)
|
13
20
|
}
|
14
21
|
|
15
22
|
it { expect(subject.hosts).to be == %w[foo bar baz] }
|
@@ -22,38 +29,38 @@ hosts -> { %w[foo bar baz] }
|
|
22
29
|
EOS
|
23
30
|
}
|
24
31
|
subject {
|
25
|
-
described_class.new(config)
|
32
|
+
described_class.new(backend: backend, config: config)
|
26
33
|
}
|
27
34
|
|
28
35
|
it { expect(subject.hosts).to be == %w[foo bar baz] }
|
29
36
|
end
|
30
37
|
end
|
31
38
|
|
32
|
-
describe '#
|
33
|
-
context '
|
39
|
+
describe '#path' do
|
40
|
+
context 'path are passed as an Array' do
|
34
41
|
let(:config) {
|
35
42
|
<<EOS
|
36
|
-
|
43
|
+
path %w[/bin /usr/bin]
|
37
44
|
EOS
|
38
45
|
}
|
39
46
|
subject {
|
40
|
-
described_class.new(config)
|
47
|
+
described_class.new(backend: backend, config: config)
|
41
48
|
}
|
42
49
|
|
43
|
-
it { expect(subject.
|
50
|
+
it { expect(subject.path).to be == %w[/bin /usr/bin] }
|
44
51
|
end
|
45
52
|
|
46
|
-
context '
|
53
|
+
context 'path are passed as a String' do
|
47
54
|
let(:config) {
|
48
55
|
<<EOS
|
49
|
-
|
56
|
+
path '/bin:/usr/bin'
|
50
57
|
EOS
|
51
58
|
}
|
52
59
|
subject {
|
53
|
-
described_class.new(config)
|
60
|
+
described_class.new(backend: backend, config: config)
|
54
61
|
}
|
55
62
|
|
56
|
-
it { expect(subject.
|
63
|
+
it { expect(subject.path).to be == %w[/bin /usr/bin] }
|
57
64
|
end
|
58
65
|
end
|
59
66
|
|
@@ -64,12 +71,12 @@ install 'httpd'
|
|
64
71
|
EOS
|
65
72
|
}
|
66
73
|
subject {
|
67
|
-
described_class.new(config)
|
74
|
+
described_class.new(backend: backend, config: config)
|
68
75
|
}
|
69
76
|
|
70
77
|
it {
|
71
78
|
expect(subject.commands.length).to be == 1
|
72
|
-
expect(subject.commands.first).to be_an_instance_of
|
79
|
+
expect(subject.commands.first).to be_an_instance_of String
|
73
80
|
}
|
74
81
|
end
|
75
82
|
end
|
data/syllabus.gemspec
CHANGED
@@ -19,10 +19,10 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.require_paths = ['lib']
|
20
20
|
|
21
21
|
spec.add_dependency 'specinfra'
|
22
|
-
spec.add_dependency 'configspec'
|
23
22
|
spec.add_dependency 'thor'
|
24
23
|
spec.add_dependency 'term-ansicolor'
|
25
24
|
|
26
25
|
spec.add_development_dependency 'bundler', '~> 1.3'
|
27
26
|
spec.add_development_dependency 'rake'
|
27
|
+
spec.add_development_dependency 'rspec'
|
28
28
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: syllabus
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kentaro Kuribayashi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-12-
|
11
|
+
date: 2013-12-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: specinfra
|
@@ -24,20 +24,6 @@ dependencies:
|
|
24
24
|
- - '>='
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: configspec
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - '>='
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '0'
|
34
|
-
type: :runtime
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - '>='
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '0'
|
41
27
|
- !ruby/object:Gem::Dependency
|
42
28
|
name: thor
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -94,6 +80,20 @@ dependencies:
|
|
94
80
|
- - '>='
|
95
81
|
- !ruby/object:Gem::Version
|
96
82
|
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rspec
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - '>='
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - '>='
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
97
|
description: Yet Another Configuration Management Tool in the Era of Immutable Infrastructure
|
98
98
|
email:
|
99
99
|
- kentarok@gmail.com
|
@@ -111,19 +111,11 @@ files:
|
|
111
111
|
- bin/syllabus
|
112
112
|
- examples/mac.rb
|
113
113
|
- lib/syllabus.rb
|
114
|
-
- lib/syllabus/backend.rb
|
115
114
|
- lib/syllabus/cli.rb
|
116
|
-
- lib/syllabus/command.rb
|
117
|
-
- lib/syllabus/command/base.rb
|
118
|
-
- lib/syllabus/command/darwin.rb
|
119
|
-
- lib/syllabus/command/linux.rb
|
120
|
-
- lib/syllabus/command/redhat.rb
|
121
115
|
- lib/syllabus/config.rb
|
122
116
|
- lib/syllabus/core.rb
|
123
117
|
- lib/syllabus/logger.rb
|
124
118
|
- lib/syllabus/version.rb
|
125
|
-
- spec/lib/syllabus/backend_spec.rb
|
126
|
-
- spec/lib/syllabus/command_spec.rb
|
127
119
|
- spec/lib/syllabus/config_spec.rb
|
128
120
|
- spec/spec_helper.rb
|
129
121
|
- syllabus.gemspec
|
@@ -152,7 +144,5 @@ signing_key:
|
|
152
144
|
specification_version: 4
|
153
145
|
summary: Yet Another Configuration Management Tool in the Era of Immutable Infrastructure
|
154
146
|
test_files:
|
155
|
-
- spec/lib/syllabus/backend_spec.rb
|
156
|
-
- spec/lib/syllabus/command_spec.rb
|
157
147
|
- spec/lib/syllabus/config_spec.rb
|
158
148
|
- spec/spec_helper.rb
|
data/lib/syllabus/backend.rb
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
require 'delegate'
|
2
|
-
require 'specinfra/backend'
|
3
|
-
|
4
|
-
class Syllabus::Backend < Delegator
|
5
|
-
attr_reader :backend_type
|
6
|
-
|
7
|
-
class NotImplementedError < StandardError; end
|
8
|
-
|
9
|
-
def initialize(args)
|
10
|
-
@backend_type = args[:type]
|
11
|
-
@backend = backend_class.instance
|
12
|
-
end
|
13
|
-
|
14
|
-
def backend_class
|
15
|
-
if SpecInfra::Backend.const_defined?(backend_type.to_sym)
|
16
|
-
SpecInfra::Backend.const_get(backend_type.to_sym)
|
17
|
-
else
|
18
|
-
raise NotImplementedError.new("Backend for #{backend_type} has not been implemented yet")
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
def __getobj__
|
23
|
-
@backend
|
24
|
-
end
|
25
|
-
end
|
data/lib/syllabus/command.rb
DELETED
@@ -1,28 +0,0 @@
|
|
1
|
-
require 'configspec/commands/base'
|
2
|
-
require 'configspec/commands/linux'
|
3
|
-
require 'configspec/commands/redhat'
|
4
|
-
|
5
|
-
class Syllabus::Command
|
6
|
-
attr_reader :os_type, :name, :args
|
7
|
-
|
8
|
-
class NotImplementedError < StandardError; end
|
9
|
-
|
10
|
-
def initialize(args)
|
11
|
-
@os_type = args[:os_type]
|
12
|
-
@name = args[:name]
|
13
|
-
@args = args[:args]
|
14
|
-
end
|
15
|
-
|
16
|
-
def command_class
|
17
|
-
if Syllabus::Command.const_defined?(os_type.to_sym)
|
18
|
-
Syllabus::Command.const_get(os_type.to_sym)
|
19
|
-
else
|
20
|
-
raise NotImplementedError.new("Command for #{os_type} has not been implemented yet")
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
def to_s
|
25
|
-
command = command_class.new
|
26
|
-
command.send(name.to_sym, args.first)
|
27
|
-
end
|
28
|
-
end
|
@@ -1,23 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Syllabus::Backend do
|
4
|
-
describe '#backend_class' do
|
5
|
-
context 'when a backend class found' do
|
6
|
-
subject {
|
7
|
-
Syllabus::Backend.new(type: 'Exec')
|
8
|
-
}
|
9
|
-
|
10
|
-
it { expect(subject.backend_class).to be == SpecInfra::Backend::Exec }
|
11
|
-
end
|
12
|
-
|
13
|
-
context 'when no command class found' do
|
14
|
-
subject {
|
15
|
-
Syllabus::Backend.new(type: 'NoSuchType')
|
16
|
-
}
|
17
|
-
|
18
|
-
it {
|
19
|
-
expect { subject.backend_class }.to raise_error Syllabus::Backend::NotImplementedError
|
20
|
-
}
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
@@ -1,59 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Syllabus::Command do
|
4
|
-
describe '#command_class' do
|
5
|
-
context 'when a command class found' do
|
6
|
-
subject {
|
7
|
-
Syllabus::Command.new(
|
8
|
-
os_type: 'RedHat',
|
9
|
-
name: :install,
|
10
|
-
args: %w['httpd'],
|
11
|
-
)
|
12
|
-
}
|
13
|
-
|
14
|
-
it { expect(subject.command_class).to be == Syllabus::Command::RedHat }
|
15
|
-
end
|
16
|
-
|
17
|
-
context 'when no command class found' do
|
18
|
-
subject {
|
19
|
-
Syllabus::Command.new(
|
20
|
-
os_type: 'NoSuchType',
|
21
|
-
name: :install,
|
22
|
-
args: %w['httpd'],
|
23
|
-
)
|
24
|
-
}
|
25
|
-
|
26
|
-
it {
|
27
|
-
expect { subject.command_class }.to raise_error Syllabus::Command::NotImplementedError
|
28
|
-
}
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
describe '#to_s' do
|
33
|
-
context 'when a command class found' do
|
34
|
-
subject {
|
35
|
-
Syllabus::Command.new(
|
36
|
-
os_type: 'RedHat',
|
37
|
-
name: :install,
|
38
|
-
args: %w['httpd'],
|
39
|
-
)
|
40
|
-
}
|
41
|
-
|
42
|
-
it { expect(subject.to_s).to be == "yum -y install 'httpd'" }
|
43
|
-
end
|
44
|
-
|
45
|
-
context 'when no command class found' do
|
46
|
-
subject {
|
47
|
-
Syllabus::Command.new(
|
48
|
-
os_type: 'NoSuchType',
|
49
|
-
name: :install,
|
50
|
-
args: %w['httpd'],
|
51
|
-
)
|
52
|
-
}
|
53
|
-
|
54
|
-
it {
|
55
|
-
expect { subject.to_s }.to raise_error Syllabus::Command::NotImplementedError
|
56
|
-
}
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|