config_curator 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0cc743eac4dc51e37ac3c8c373868ed9b099853e
4
- data.tar.gz: c5857e0fc09a20c537069875c4515b706b8d3ebc
3
+ metadata.gz: 9753c5a06c3b4ee8154f677ee19e096c31503646
4
+ data.tar.gz: b7b258c1b60446f82a5c8db2731d85ca0573329f
5
5
  SHA512:
6
- metadata.gz: 815a4f93e970b6cdeeb9e0fa848d7d6d2c50ed192d20ea4c973b2a885d1900732532418126f52ddc0d9d0c16034e3547c223387b707ee64f0f98d34f376cf4ee
7
- data.tar.gz: d0cb7b9cff4ac26b07d1405942871a51ce04f388387736e6bca432d32e16321fc1cd93d88174ed2b50b8177dc00a70b6527831b73f0d4c6409f7eb638fc2693d
6
+ metadata.gz: 129f1da431c6d4afab659dbca31bf5b11523b6e21033d3508b0e3b3c51d7f2528f39d65f4282ac6c3399c7d6037919f9b6988c4078dd08eebf9188724a01f14a
7
+ data.tar.gz: efba699dc4727c0bb018ea4cd8afa20d17eb0007a9ae04e5b53a3dbb386943077d1bd6feff16640044b625428296b9a33ae354e3edf7d6b0389d2e5406ef5478
data/.editorconfig ADDED
@@ -0,0 +1,9 @@
1
+ root = true
2
+
3
+ [*]
4
+ charset = utf-8
5
+ end_of_line = lf
6
+ insert_final_newline = true
7
+ trim_trailing_whitespace = true
8
+ indent_style = space
9
+ indent_size = 2
data/.travis.yml CHANGED
@@ -2,13 +2,12 @@ language: ruby
2
2
  cache: bundler
3
3
  rvm:
4
4
  - 2.0.0
5
- - 2.1.1
6
- - 2.1.2
5
+ - 2.1.5
6
+ - 2.2.0
7
+ cache: bundler
8
+ sudo: false
7
9
 
8
10
  before_install:
9
11
  - 'echo ''gem: --no-document'' > ~/.gemrc'
10
12
 
11
- install:
12
- - bundle update
13
-
14
13
  script: bundle exec rake travis
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # ChangeLog
2
2
 
3
+ ## 0.2.1
4
+
5
+ - Allow all keys in manifest to be strings or symbols.
6
+
3
7
  ## 0.2.0
4
8
 
5
9
  - Merged [ruby-gem](https://github.com/razor-x/ruby-gem) for improved development.
data/README.md CHANGED
@@ -1,11 +1,11 @@
1
1
  # Config Curator
2
2
 
3
- [![Gem Version](http://img.shields.io/gem/v/config_curator.svg?style=flat)](https://rubygems.org/gems/config_curator)
4
- [![MIT License](http://img.shields.io/badge/license-MIT-red.svg?style=flat)](./LICENSE.txt)
5
- [![Dependency Status](http://img.shields.io/gemnasium/razor-x/config_curator.svg?style=flat)](https://gemnasium.com/razor-x/config_curator)
6
- [![Build Status](http://img.shields.io/travis/razor-x/config_curator.svg?style=flat)](https://travis-ci.org/razor-x/config_curator)
7
- [![Coverage Status](http://img.shields.io/coveralls/razor-x/config_curator.svg?style=flat)](https://coveralls.io/r/razor-x/config_curator)
8
- [![Code Climate](http://img.shields.io/codeclimate/github/razor-x/config_curator.svg?style=flat)](https://codeclimate.com/github/razor-x/config_curator)
3
+ [![Gem Version](https://img.shields.io/gem/v/config_curator.svg)](https://rubygems.org/gems/config_curator)
4
+ [![MIT License](https://img.shields.io/badge/license-MIT-red.svg)](./LICENSE.txt)
5
+ [![Dependency Status](https://img.shields.io/gemnasium/razor-x/config_curator.svg)](https://gemnasium.com/razor-x/config_curator)
6
+ [![Build Status](https://img.shields.io/travis/razor-x/config_curator.svg)](https://travis-ci.org/razor-x/config_curator)
7
+ [![Coverage Status](https://img.shields.io/coveralls/razor-x/config_curator.svg)](https://coveralls.io/r/razor-x/config_curator)
8
+ [![Code Climate](https://img.shields.io/codeclimate/github/razor-x/config_curator.svg)](https://codeclimate.com/github/razor-x/config_curator)
9
9
 
10
10
  by Evan Boyd Sosenko.
11
11
 
@@ -19,28 +19,28 @@ Gem::Specification.new do |spec|
19
19
 
20
20
  spec.required_ruby_version = '>= 2.0.0'
21
21
 
22
- spec.add_dependency 'activesupport', '~> 4.1.0'
23
- spec.add_dependency 'thor', '~> 0.19.1'
22
+ spec.add_dependency 'activesupport', '~> 4.2'
23
+ spec.add_dependency 'thor', '~> 0.19'
24
24
 
25
25
  spec.add_development_dependency 'bundler', '~> 1.6'
26
- spec.add_development_dependency 'bump', '~> 0.5.0'
26
+ spec.add_development_dependency 'bump', '~> 0.5'
27
27
 
28
- spec.add_development_dependency 'yard', '~> 0.8.7.4'
28
+ spec.add_development_dependency 'yard', '~> 0.8.7'
29
29
  spec.add_development_dependency 'yard-redcarpet-ext', '~> 0.0.3'
30
- spec.add_development_dependency 'redcarpet', '~> 3.1.2'
31
- spec.add_development_dependency 'github-markup', '1.2.1'
30
+ spec.add_development_dependency 'redcarpet', '~> 3.2'
31
+ spec.add_development_dependency 'github-markup', '~> 1.3'
32
32
 
33
- spec.add_development_dependency 'rubocop', '~> 0.23.0'
33
+ spec.add_development_dependency 'rubocop', '~> 0.28'
34
34
 
35
- spec.add_development_dependency 'rake', '~> 10.3.2'
35
+ spec.add_development_dependency 'rake', '~> 10.4'
36
36
 
37
- spec.add_development_dependency 'guard', '~> 2.6.1'
38
- spec.add_development_dependency 'guard-yard', '~> 2.1.0'
39
- spec.add_development_dependency 'guard-rubocop', '~> 1.1.0'
40
- spec.add_development_dependency 'guard-rspec', '~> 4.2.9'
37
+ spec.add_development_dependency 'guard', '~> 2.11'
38
+ spec.add_development_dependency 'guard-yard', '~> 2.1'
39
+ spec.add_development_dependency 'guard-rubocop', '~> 1.2'
40
+ spec.add_development_dependency 'guard-rspec', '~> 4.5'
41
41
 
42
- spec.add_development_dependency 'rspec', '~> 3.0.0'
43
- spec.add_development_dependency 'simplecov', '~> 0.8.2'
44
- spec.add_development_dependency 'coveralls', '~> 0.7.0'
45
- spec.add_development_dependency 'fuubar', '~> 2.0.0.rc1'
42
+ spec.add_development_dependency 'rspec', '~> 3.1'
43
+ spec.add_development_dependency 'simplecov', '~> 0.9'
44
+ spec.add_development_dependency 'coveralls', '~> 0.7'
45
+ spec.add_development_dependency 'fuubar', '~> 2.0'
46
46
  end
data/lib/.rubocop.yml CHANGED
@@ -1,4 +1,7 @@
1
1
  inherit_from: ../.rubocop.yml
2
2
 
3
- Style/LineLength:
3
+ Metrics/LineLength:
4
4
  Max: 100
5
+
6
+ Metrics/AbcSize:
7
+ Enabled: false
@@ -10,13 +10,13 @@ module ConfigCurator
10
10
  class_option :quiet, type: :boolean, aliases: %i(q)
11
11
  class_option :debug, type: :boolean
12
12
 
13
- # Installs the collection.
14
- # @param manifest [String] path to the manifest file to use
15
- # @return [Boolean] value of {Collection#install} or {Collection#install?}
16
13
  desc 'install', 'Installs all units in collection.'
17
14
  option :dryrun,
18
15
  type: :boolean, aliases: %i(n),
19
- desc: %q{Only simulate the install. Don't make any actual changes.}
16
+ desc: "Only simulate the install. Don't make any actual changes."
17
+ # Installs the collection.
18
+ # @param manifest [String] path to the manifest file to use
19
+ # @return [Boolean] value of {Collection#install} or {Collection#install?}
20
20
  def install(manifest = 'manifest.yml')
21
21
  unless File.exist? manifest
22
22
  logger.fatal { "Manifest file '#{manifest}' does not exist." }
@@ -1,3 +1,4 @@
1
+ require 'active_support/core_ext/hash'
1
2
  require 'active_support/core_ext/string'
2
3
  require 'logger'
3
4
  require 'yaml'
@@ -39,7 +40,8 @@ module ConfigCurator
39
40
  # @param file [Hash] the yaml file to load
40
41
  # @return [Hash] the loaded manifest
41
42
  def load_manifest(file)
42
- self.manifest = YAML.load_file file
43
+ self.manifest =
44
+ ActiveSupport::HashWithIndifferentAccess.new YAML.load_file(file)
43
45
  end
44
46
 
45
47
  # Unit objects defined by the manifest and organized by type.
@@ -90,7 +92,7 @@ module ConfigCurator
90
92
  # @return [Unit] the unit object of the appropriate subclass
91
93
  def create_unit(type, attributes: {})
92
94
  "#{self.class.name.split('::').first}::#{type.to_s.camelize}".constantize
93
- .new(options: unit_options, logger: logger).tap do |unit|
95
+ .new(options: unit_options, logger: logger).tap do |unit|
94
96
  {src: :source, dst: :destination}.each do |k, v|
95
97
  unit.send "#{v}=".to_sym, attributes[k] unless attributes[k].nil?
96
98
  end
@@ -68,21 +68,21 @@ module ConfigCurator
68
68
 
69
69
  def dpkg(package)
70
70
  cmd = command? 'dpkg'
71
- Open3.popen3 cmd, '-s', package do |_, _ , _, wait_thr|
71
+ Open3.popen3 cmd, '-s', package do |_, _, _, wait_thr|
72
72
  wait_thr.value.to_i == 0
73
73
  end
74
74
  end
75
75
 
76
76
  def pacman(package)
77
77
  cmd = command? 'pacman'
78
- Open3.popen3 cmd, '-qQ', package do |_, _ , _, wait_thr|
78
+ Open3.popen3 cmd, '-qQ', package do |_, _, _, wait_thr|
79
79
  wait_thr.value.to_i == 0
80
80
  end
81
81
  end
82
82
 
83
83
  def pkgng(package)
84
84
  cmd = command? 'pkg'
85
- Open3.popen3 cmd, 'info', package do |_, _ , _, wait_thr|
85
+ Open3.popen3 cmd, 'info', package do |_, _, _, wait_thr|
86
86
  wait_thr.value.to_i == 0
87
87
  end
88
88
  end
@@ -70,10 +70,9 @@ module ConfigCurator
70
70
  basename = File.basename path.chomp(extension)
71
71
  if Dir.exist? directory
72
72
  file = Dir.entries(directory).grep(/^#{basename}.#{hostname.downcase}/).first
73
- File.join directory, file unless file.nil?
74
- else
75
- nil
73
+ return File.join directory, file unless file.nil?
76
74
  end
75
+ nil
77
76
  end
78
77
  end
79
78
  end
@@ -1,5 +1,5 @@
1
1
  # Simple and intelligent configuration file management.
2
2
  module ConfigCurator
3
3
  # Config Curator version.
4
- VERSION = '0.2.0'
4
+ VERSION = '0.2.1'
5
5
  end
data/spec/.rubocop.yml CHANGED
@@ -3,5 +3,5 @@ inherit_from: ../.rubocop.yml
3
3
  Style/StringLiterals:
4
4
  Enabled: false
5
5
 
6
- Style/LineLength:
6
+ Metrics/LineLength:
7
7
  Max: 120
data/spec/cli_spec.rb CHANGED
@@ -1,11 +1,9 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe ConfigCurator::CLI do
4
-
5
4
  subject(:cli) { ConfigCurator::CLI.new }
6
5
 
7
6
  describe "#collection" do
8
-
9
7
  it "makes a new collection" do
10
8
  expect(cli.collection).to be_a ConfigCurator::Collection
11
9
  end
@@ -16,14 +14,12 @@ describe ConfigCurator::CLI do
16
14
  end
17
15
 
18
16
  describe "#logger" do
19
-
20
17
  it "makes a new logger" do
21
18
  expect(cli.logger).to be_a Logger
22
19
  end
23
20
  end
24
21
 
25
22
  describe "#install" do
26
-
27
23
  it "installs the collection" do
28
24
  allow(File).to receive(:exist?).with('manifest.yml').and_return(true)
29
25
  expect(cli.collection).to receive(:load_manifest).with('manifest.yml')
@@ -32,7 +28,6 @@ describe ConfigCurator::CLI do
32
28
  end
33
29
 
34
30
  context "when --dryrun is set" do
35
-
36
31
  before(:each) { allow(cli).to receive(:options).and_return(dryrun: true) }
37
32
 
38
33
  it "only checks if install would succeed" do
@@ -45,7 +40,6 @@ describe ConfigCurator::CLI do
45
40
  end
46
41
 
47
42
  context "manifest not found" do
48
-
49
43
  it "returns false and doesn't do anything else" do
50
44
  allow(File).to receive(:exist?).with('manifest.yml').and_return(false)
51
45
  expect(cli.collection).to_not receive(:install)
@@ -54,7 +48,6 @@ describe ConfigCurator::CLI do
54
48
  end
55
49
 
56
50
  context "when --dryrun is set" do
57
-
58
51
  before(:each) { allow(cli).to receive(:options).and_return(dryrun: true) }
59
52
 
60
53
  it "returns false and doesn't do anything else" do
@@ -1,11 +1,9 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe ConfigCurator::Collection do
4
-
5
4
  subject(:collection) { ConfigCurator::Collection.new }
6
5
 
7
6
  describe ".new" do
8
-
9
7
  it "sets the logger" do
10
8
  logger = Logger.new(STDOUT)
11
9
  collection = ConfigCurator::Collection.new logger: logger
@@ -19,15 +17,15 @@ describe ConfigCurator::Collection do
19
17
  end
20
18
 
21
19
  describe "#logger" do
22
-
23
20
  it "makes a new logger" do
24
21
  expect(collection.logger).to be_a Logger
25
22
  end
26
23
  end
27
24
 
28
25
  describe "#load_manifest" do
29
-
30
- let(:manifest) { {root: 'tmp'} }
26
+ let(:manifest) do
27
+ ActiveSupport::HashWithIndifferentAccess.new(root: 'tmp')
28
+ end
31
29
 
32
30
  it "loads the manifest" do
33
31
  path = 'path/to/manifest'
@@ -38,7 +36,6 @@ describe ConfigCurator::Collection do
38
36
  end
39
37
 
40
38
  describe "#create_unit" do
41
-
42
39
  subject(:unit) { collection.create_unit :unit }
43
40
 
44
41
  it "makes a new unit" do
@@ -50,7 +47,6 @@ describe ConfigCurator::Collection do
50
47
  end
51
48
 
52
49
  context "with basic attributes" do
53
-
54
50
  let(:attributes) { {src: 'src', dst: 'dest'} }
55
51
  subject(:unit) { collection.create_unit :unit, attributes: attributes }
56
52
 
@@ -64,7 +60,6 @@ describe ConfigCurator::Collection do
64
60
  end
65
61
 
66
62
  context "with unit specific attributes" do
67
-
68
63
  let(:attributes) { {src: 'src', dst: 'dest', fmode: '0600', owner: 'username'} }
69
64
  subject(:unit) { collection.create_unit :component, attributes: attributes }
70
65
 
@@ -80,7 +75,6 @@ describe ConfigCurator::Collection do
80
75
  end
81
76
 
82
77
  context "with manifest" do
83
-
84
78
  let(:manifest) do
85
79
  YAML.load <<-EOF
86
80
  :root: /tmp
@@ -117,14 +111,12 @@ describe ConfigCurator::Collection do
117
111
  end
118
112
 
119
113
  describe "#units" do
120
-
121
114
  let(:types) do
122
115
  types = ConfigCurator::Collection::UNIT_TYPES
123
116
  types.map { |t| "#{t}s".to_sym }
124
117
  end
125
118
 
126
119
  context "no manifest" do
127
-
128
120
  it "has a key for each supported unit type" do
129
121
  types.each do |type|
130
122
  expect(collection.units.key? type).to be true
@@ -140,7 +132,6 @@ describe ConfigCurator::Collection do
140
132
  end
141
133
 
142
134
  context "with manifest" do
143
-
144
135
  let(:manifest) do
145
136
  YAML.load <<-EOF
146
137
  :defaults:
@@ -192,7 +183,6 @@ describe ConfigCurator::Collection do
192
183
  end
193
184
 
194
185
  describe "#install" do
195
-
196
186
  let(:manifest) do
197
187
  YAML.load <<-EOF
198
188
  :components:
@@ -210,7 +200,6 @@ describe ConfigCurator::Collection do
210
200
  let(:units) { collection.units }
211
201
 
212
202
  context "when #install? is true" do
213
-
214
203
  it "calls #install on each unit and returns true" do
215
204
  allow(collection).to receive(:install?).and_return(true)
216
205
  expect(units[:components][0]).to receive(:install)
@@ -221,7 +210,6 @@ describe ConfigCurator::Collection do
221
210
  end
222
211
 
223
212
  context "when #install? is false" do
224
-
225
213
  it "does not call #install on each unit and returns false" do
226
214
  allow(collection).to receive(:install?).and_return(false)
227
215
  expect(units[:components][0]).to_not receive(:install)
@@ -232,7 +220,6 @@ describe ConfigCurator::Collection do
232
220
  end
233
221
 
234
222
  context "when component install fails" do
235
-
236
223
  it "stops installing and returns nil" do
237
224
  allow(collection).to receive(:install?).and_return(true)
238
225
  expect(units[:components][0]).to receive(:install)
@@ -244,7 +231,6 @@ describe ConfigCurator::Collection do
244
231
  end
245
232
 
246
233
  describe "#install?" do
247
-
248
234
  let(:manifest) do
249
235
  YAML.load <<-EOF
250
236
  :components:
@@ -262,7 +248,6 @@ describe ConfigCurator::Collection do
262
248
  let(:units) { collection.units }
263
249
 
264
250
  context "when no errors" do
265
-
266
251
  it "calls #install? on each unit and returns true" do
267
252
  expect(units[:components][0]).to receive(:install?)
268
253
  expect(units[:components][1]).to receive(:install?)
@@ -272,10 +257,9 @@ describe ConfigCurator::Collection do
272
257
  end
273
258
 
274
259
  context "when install error" do
275
-
276
260
  it "calls #install? on each unit and returns false" do
277
261
  allow(units[:components][0]).to receive(:install?)
278
- .and_raise(ConfigCurator::Unit::InstallFailed)
262
+ .and_raise(ConfigCurator::Unit::InstallFailed)
279
263
  allow(units[:components][1]).to receive(:install?)
280
264
  allow(units[:config_files][0]).to receive(:install?)
281
265
  expect(collection.install?).to be false
@@ -1,11 +1,9 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe ConfigCurator::PackageLookup do
4
-
5
4
  subject(:lookup) { ConfigCurator::PackageLookup.new }
6
5
 
7
6
  describe ".new" do
8
-
9
7
  it "sets the package tool" do
10
8
  lookup = ConfigCurator::PackageLookup.new tool: :dpkg
11
9
  expect(lookup.tool).to eq :dpkg
@@ -13,16 +11,13 @@ describe ConfigCurator::PackageLookup do
13
11
  end
14
12
 
15
13
  describe "#tools" do
16
-
17
14
  it "uses the default list of tools" do
18
15
  expect(lookup.tools).to eq ConfigCurator::PackageLookup::TOOLS
19
16
  end
20
17
  end
21
18
 
22
19
  describe "#tool" do
23
-
24
20
  context "when tool is set" do
25
-
26
21
  it "returns the tool" do
27
22
  lookup.tool = :pacman
28
23
  expect(lookup.tool).to eq :pacman
@@ -30,7 +25,6 @@ describe ConfigCurator::PackageLookup do
30
25
  end
31
26
 
32
27
  context "when tool not set" do
33
-
34
28
  it "returns the first avaible tool" do
35
29
  lookup.tools = {dpkg: 'dpkg', pacman: 'pacman'}
36
30
  allow(lookup).to receive(:command?).with('dpkg').and_return(true)
@@ -40,9 +34,7 @@ describe ConfigCurator::PackageLookup do
40
34
  end
41
35
 
42
36
  describe "#installed?" do
43
-
44
37
  context "when package is found" do
45
-
46
38
  it "calls the corresponding private lookup method and returns true" do
47
39
  lookup.tool = :dpkg
48
40
  cmd = lookup.tools[:dpkg]
@@ -53,7 +45,6 @@ describe ConfigCurator::PackageLookup do
53
45
  end
54
46
 
55
47
  context "when package not found" do
56
-
57
48
  it "calls the corresponding private lookup method and returns false" do
58
49
  lookup.tool = :dpkg
59
50
  cmd = lookup.tools[:dpkg]
@@ -64,7 +55,6 @@ describe ConfigCurator::PackageLookup do
64
55
  end
65
56
 
66
57
  context "when no package tool found" do
67
-
68
58
  it "fails" do
69
59
  lookup.tools = {dpkg: 'dpkg'}
70
60
  allow(lookup).to receive(:command?).with('dpkg').and_return(nil)
@@ -73,7 +63,6 @@ describe ConfigCurator::PackageLookup do
73
63
  end
74
64
 
75
65
  context "when package tool not found" do
76
-
77
66
  it "fails" do
78
67
  lookup.tool = :dpkg
79
68
  cmd = lookup.tools[:dpkg]
data/spec/unit_spec.rb CHANGED
@@ -1,11 +1,9 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe ConfigCurator::Unit do
4
-
5
4
  subject(:unit) { ConfigCurator::Unit.new }
6
5
 
7
6
  describe ".new" do
8
-
9
7
  it "sets the logger" do
10
8
  logger = Logger.new(STDOUT)
11
9
  unit = ConfigCurator::Unit.new logger: logger
@@ -23,14 +21,12 @@ describe ConfigCurator::Unit do
23
21
  end
24
22
 
25
23
  describe "#logger" do
26
-
27
24
  it "makes a new logger" do
28
25
  expect(unit.logger).to be_a Logger
29
26
  end
30
27
  end
31
28
 
32
29
  describe "#options" do
33
-
34
30
  it "merges with default options" do
35
31
  unit.options[:root] = '/home/user'
36
32
  expect(unit.options).to eq ConfigCurator::Unit::DEFAULT_OPTIONS.merge(root: '/home/user')
@@ -44,14 +40,12 @@ describe ConfigCurator::Unit do
44
40
  end
45
41
 
46
42
  describe "#source_path" do
47
-
48
43
  it "expands the path" do
49
44
  unit.source = 'path/../src_name'
50
45
  expect(unit.source_path).to eq File.expand_path('path/../src_name')
51
46
  end
52
47
 
53
48
  context "when no source given" do
54
-
55
49
  it "returns nil" do
56
50
  expect(unit.source_path).to eq nil
57
51
  end
@@ -59,7 +53,6 @@ describe ConfigCurator::Unit do
59
53
  end
60
54
 
61
55
  describe "#destination_path" do
62
-
63
56
  it "expands the path" do
64
57
  unit.destination = 'path/../dest_name'
65
58
  unit.options[:root] = '/tmp'
@@ -67,7 +60,6 @@ describe ConfigCurator::Unit do
67
60
  end
68
61
 
69
62
  context "when no destination given" do
70
-
71
63
  it "returns nil" do
72
64
  expect(unit.destination_path).to eq nil
73
65
  end
@@ -75,7 +67,6 @@ describe ConfigCurator::Unit do
75
67
  end
76
68
 
77
69
  describe "#hosts" do
78
-
79
70
  it "is empty by default" do
80
71
  expect(unit.hosts).to be_a Array
81
72
  expect(unit.hosts).to be_empty
@@ -83,7 +74,6 @@ describe ConfigCurator::Unit do
83
74
  end
84
75
 
85
76
  describe "#packages" do
86
-
87
77
  it "is empty by default" do
88
78
  expect(unit.packages).to be_a Array
89
79
  expect(unit.packages).to be_empty
@@ -91,7 +81,6 @@ describe ConfigCurator::Unit do
91
81
  end
92
82
 
93
83
  describe "#package_lookup" do
94
-
95
84
  it "returns a PackageLookup object" do
96
85
  expect(unit.package_lookup).to be_a ConfigCurator::PackageLookup
97
86
  end
@@ -103,9 +92,7 @@ describe ConfigCurator::Unit do
103
92
  end
104
93
 
105
94
  describe "#install" do
106
-
107
95
  context "when unit should be installed" do
108
-
109
96
  it "returns true" do
110
97
  expect(unit).to receive(:install?).and_return(true)
111
98
  expect(unit.install).to be true
@@ -113,7 +100,6 @@ describe ConfigCurator::Unit do
113
100
  end
114
101
 
115
102
  context "when unit should not be installed" do
116
-
117
103
  it "returns false" do
118
104
  expect(unit).to receive(:install?).and_return(false)
119
105
  expect(unit.install).to be false
@@ -122,7 +108,6 @@ describe ConfigCurator::Unit do
122
108
  end
123
109
 
124
110
  describe "#install?" do
125
-
126
111
  it "checks if host is allowed" do
127
112
  expect(unit).to receive(:allowed_host?)
128
113
  unit.install?
@@ -135,9 +120,7 @@ describe ConfigCurator::Unit do
135
120
  end
136
121
 
137
122
  describe "#allowed_host?" do
138
-
139
123
  context "when hosts are given" do
140
-
141
124
  it "allows host if host is listed" do
142
125
  allow(unit).to receive(:hostname).and_return('test_hostname')
143
126
  unit.hosts = %w(some_host test_hostname)
@@ -152,7 +135,6 @@ describe ConfigCurator::Unit do
152
135
  end
153
136
 
154
137
  context "when no hosts are given" do
155
-
156
138
  it "allows any host" do
157
139
  unit.hosts = []
158
140
  expect(unit.allowed_host?).to eq true
@@ -161,9 +143,7 @@ describe ConfigCurator::Unit do
161
143
  end
162
144
 
163
145
  describe "#packages_installed?" do
164
-
165
146
  context "when packages listed" do
166
-
167
147
  it "meets package requirements if no missing packages" do
168
148
  allow(unit).to receive(:pkg_exists?).with('good_pkg_1').and_return(true)
169
149
  allow(unit).to receive(:pkg_exists?).with('good_pkg_2').and_return(true)
@@ -180,7 +160,6 @@ describe ConfigCurator::Unit do
180
160
  end
181
161
 
182
162
  context "when no packages listed" do
183
-
184
163
  it "meets package requirements" do
185
164
  unit.packages = []
186
165
  expect(unit.packages_installed?).to eq true
@@ -1,13 +1,10 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe ConfigCurator::Component do
4
-
5
4
  subject(:component) { ConfigCurator::Component.new }
6
5
 
7
6
  describe "#install" do
8
-
9
7
  context "when component should be installed" do
10
-
11
8
  it "installs the component and returns true" do
12
9
  expect(component).to receive(:install?).and_return(true)
13
10
  expect(component).to receive(:install_component)
@@ -18,7 +15,6 @@ describe ConfigCurator::Component do
18
15
  end
19
16
 
20
17
  context "when component should not be installed" do
21
-
22
18
  it "does not install the component and returns false" do
23
19
  expect(component).to receive(:install?).and_return(false)
24
20
  expect(component).to_not receive(:install_component)
@@ -30,9 +26,7 @@ describe ConfigCurator::Component do
30
26
  end
31
27
 
32
28
  describe "#install?" do
33
-
34
29
  context "when source not given" do
35
-
36
30
  it "fails" do
37
31
  component.destination = 'inst_path'
38
32
  expect { component.install? }.to raise_error ConfigCurator::Symlink::InstallFailed
@@ -40,7 +34,6 @@ describe ConfigCurator::Component do
40
34
  end
41
35
 
42
36
  context "when destination not given" do
43
-
44
37
  it "fails" do
45
38
  component.source = 'dir'
46
39
  expect { component.install? }.to raise_error ConfigCurator::Symlink::InstallFailed
@@ -48,7 +41,6 @@ describe ConfigCurator::Component do
48
41
  end
49
42
 
50
43
  context "when source does not exist" do
51
-
52
44
  it "fails" do
53
45
  component.destination = 'inst_path'
54
46
  component.source = 'dir/that/does/not/exist'
@@ -1,11 +1,9 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe ConfigCurator::ConfigFile do
4
-
5
4
  subject(:config_file) { ConfigCurator::ConfigFile.new }
6
5
 
7
6
  describe "#destination" do
8
-
9
7
  let(:source) { 'path/../src_name.ext' }
10
8
 
11
9
  it "uses the source path to set the destination" do
@@ -14,47 +12,41 @@ describe ConfigCurator::ConfigFile do
14
12
  end
15
13
 
16
14
  context "when host-specific file found" do
17
-
18
15
  it "uses the source path to set the destination" do
19
16
  config_file.source = source
20
17
  allow(config_file).to receive(:search_for_host_specific_file).with(source)
21
- .and_return('path/../src_name.hostname.ext')
18
+ .and_return('path/../src_name.hostname.ext')
22
19
  expect(config_file.destination).to eq source
23
20
  end
24
21
  end
25
22
  end
26
23
 
27
24
  describe "#source" do
28
-
29
25
  context "when host-specific file not found" do
30
-
31
26
  let(:source) { 'path/../src_name.ext' }
32
27
 
33
28
  it "returns the source path" do
34
29
  config_file.source = source
35
30
  allow(config_file).to receive(:search_for_host_specific_file).with(source)
36
- .and_return(nil)
31
+ .and_return(nil)
37
32
  expect(config_file.source).to eq source
38
33
  end
39
34
  end
40
35
 
41
36
  context "when host-specific file found" do
42
-
43
37
  let(:source) { 'path/../src_name.ext' }
44
38
 
45
39
  it "returns the host-specific source path" do
46
40
  config_file.source = source
47
41
  allow(config_file).to receive(:search_for_host_specific_file).with(source)
48
- .and_return('path/../src_name.hostname.ext')
42
+ .and_return('path/../src_name.hostname.ext')
49
43
  expect(config_file.source).to eq 'path/../src_name.hostname.ext'
50
44
  end
51
45
  end
52
46
  end
53
47
 
54
48
  describe "#install" do
55
-
56
49
  context "when config file should be installed" do
57
-
58
50
  it "installs the config file and returns true" do
59
51
  expect(config_file).to receive(:install?).and_return(true)
60
52
  expect(config_file).to receive(:install_file)
@@ -65,7 +57,6 @@ describe ConfigCurator::ConfigFile do
65
57
  end
66
58
 
67
59
  context "when config file should not be installed" do
68
-
69
60
  it "does not install the config file and returns false" do
70
61
  expect(config_file).to receive(:install?).and_return(false)
71
62
  expect(config_file).to_not receive(:install_file)
@@ -77,16 +68,13 @@ describe ConfigCurator::ConfigFile do
77
68
  end
78
69
 
79
70
  describe "#install?" do
80
-
81
71
  context "when source not given" do
82
-
83
72
  it "fails" do
84
73
  expect { config_file.install? }.to raise_error ConfigCurator::Symlink::InstallFailed
85
74
  end
86
75
  end
87
76
 
88
77
  context "when source does not exist" do
89
-
90
78
  it "fails" do
91
79
  config_file.source = 'dir/that/does/not/exist'
92
80
  expect { config_file.install? }.to raise_error ConfigCurator::Symlink::InstallFailed
@@ -1,13 +1,10 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe ConfigCurator::Symlink do
4
-
5
4
  subject(:symlink) { ConfigCurator::Symlink.new }
6
5
 
7
6
  describe "#install" do
8
-
9
7
  context "when symbolic link should be installed" do
10
-
11
8
  it "installs the symbolic link and returns true" do
12
9
  expect(symlink).to receive(:install?).and_return true
13
10
  expect(symlink).to receive(:install_symlink)
@@ -16,7 +13,6 @@ describe ConfigCurator::Symlink do
16
13
  end
17
14
 
18
15
  context "when symbolic link should not be installed" do
19
-
20
16
  it "does not install the symbolic link and returns false" do
21
17
  expect(symlink).to receive(:install?).and_return false
22
18
  expect(symlink).to_not receive(:install_symlink)
@@ -26,9 +22,7 @@ describe ConfigCurator::Symlink do
26
22
  end
27
23
 
28
24
  describe "#install?" do
29
-
30
25
  context "when source not given" do
31
-
32
26
  it "fails" do
33
27
  symlink.destination = 'link_path'
34
28
  expect { symlink.install? }.to raise_error ConfigCurator::Symlink::InstallFailed
@@ -36,7 +30,6 @@ describe ConfigCurator::Symlink do
36
30
  end
37
31
 
38
32
  context "when destination not given" do
39
-
40
33
  it "fails" do
41
34
  symlink.source = 'file'
42
35
  expect { symlink.install? }.to raise_error ConfigCurator::Symlink::InstallFailed
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.2.0
4
+ version: 0.2.1
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-07-10 00:00:00.000000000 Z
11
+ date: 2015-02-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 4.1.0
19
+ version: '4.2'
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: 4.1.0
26
+ version: '4.2'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: thor
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 0.19.1
33
+ version: '0.19'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 0.19.1
40
+ version: '0.19'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -58,28 +58,28 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 0.5.0
61
+ version: '0.5'
62
62
  type: :development
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: 0.5.0
68
+ version: '0.5'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: yard
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 0.8.7.4
75
+ version: 0.8.7
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: 0.8.7.4
82
+ version: 0.8.7
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: yard-redcarpet-ext
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -100,168 +100,168 @@ dependencies:
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: 3.1.2
103
+ version: '3.2'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: 3.1.2
110
+ version: '3.2'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: github-markup
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - '='
115
+ - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: 1.2.1
117
+ version: '1.3'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - '='
122
+ - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: 1.2.1
124
+ version: '1.3'
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: rubocop
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
129
  - - "~>"
130
130
  - !ruby/object:Gem::Version
131
- version: 0.23.0
131
+ version: '0.28'
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
- version: 0.23.0
138
+ version: '0.28'
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: rake
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
143
  - - "~>"
144
144
  - !ruby/object:Gem::Version
145
- version: 10.3.2
145
+ version: '10.4'
146
146
  type: :development
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
150
  - - "~>"
151
151
  - !ruby/object:Gem::Version
152
- version: 10.3.2
152
+ version: '10.4'
153
153
  - !ruby/object:Gem::Dependency
154
154
  name: guard
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
157
  - - "~>"
158
158
  - !ruby/object:Gem::Version
159
- version: 2.6.1
159
+ version: '2.11'
160
160
  type: :development
161
161
  prerelease: false
162
162
  version_requirements: !ruby/object:Gem::Requirement
163
163
  requirements:
164
164
  - - "~>"
165
165
  - !ruby/object:Gem::Version
166
- version: 2.6.1
166
+ version: '2.11'
167
167
  - !ruby/object:Gem::Dependency
168
168
  name: guard-yard
169
169
  requirement: !ruby/object:Gem::Requirement
170
170
  requirements:
171
171
  - - "~>"
172
172
  - !ruby/object:Gem::Version
173
- version: 2.1.0
173
+ version: '2.1'
174
174
  type: :development
175
175
  prerelease: false
176
176
  version_requirements: !ruby/object:Gem::Requirement
177
177
  requirements:
178
178
  - - "~>"
179
179
  - !ruby/object:Gem::Version
180
- version: 2.1.0
180
+ version: '2.1'
181
181
  - !ruby/object:Gem::Dependency
182
182
  name: guard-rubocop
183
183
  requirement: !ruby/object:Gem::Requirement
184
184
  requirements:
185
185
  - - "~>"
186
186
  - !ruby/object:Gem::Version
187
- version: 1.1.0
187
+ version: '1.2'
188
188
  type: :development
189
189
  prerelease: false
190
190
  version_requirements: !ruby/object:Gem::Requirement
191
191
  requirements:
192
192
  - - "~>"
193
193
  - !ruby/object:Gem::Version
194
- version: 1.1.0
194
+ version: '1.2'
195
195
  - !ruby/object:Gem::Dependency
196
196
  name: guard-rspec
197
197
  requirement: !ruby/object:Gem::Requirement
198
198
  requirements:
199
199
  - - "~>"
200
200
  - !ruby/object:Gem::Version
201
- version: 4.2.9
201
+ version: '4.5'
202
202
  type: :development
203
203
  prerelease: false
204
204
  version_requirements: !ruby/object:Gem::Requirement
205
205
  requirements:
206
206
  - - "~>"
207
207
  - !ruby/object:Gem::Version
208
- version: 4.2.9
208
+ version: '4.5'
209
209
  - !ruby/object:Gem::Dependency
210
210
  name: rspec
211
211
  requirement: !ruby/object:Gem::Requirement
212
212
  requirements:
213
213
  - - "~>"
214
214
  - !ruby/object:Gem::Version
215
- version: 3.0.0
215
+ version: '3.1'
216
216
  type: :development
217
217
  prerelease: false
218
218
  version_requirements: !ruby/object:Gem::Requirement
219
219
  requirements:
220
220
  - - "~>"
221
221
  - !ruby/object:Gem::Version
222
- version: 3.0.0
222
+ version: '3.1'
223
223
  - !ruby/object:Gem::Dependency
224
224
  name: simplecov
225
225
  requirement: !ruby/object:Gem::Requirement
226
226
  requirements:
227
227
  - - "~>"
228
228
  - !ruby/object:Gem::Version
229
- version: 0.8.2
229
+ version: '0.9'
230
230
  type: :development
231
231
  prerelease: false
232
232
  version_requirements: !ruby/object:Gem::Requirement
233
233
  requirements:
234
234
  - - "~>"
235
235
  - !ruby/object:Gem::Version
236
- version: 0.8.2
236
+ version: '0.9'
237
237
  - !ruby/object:Gem::Dependency
238
238
  name: coveralls
239
239
  requirement: !ruby/object:Gem::Requirement
240
240
  requirements:
241
241
  - - "~>"
242
242
  - !ruby/object:Gem::Version
243
- version: 0.7.0
243
+ version: '0.7'
244
244
  type: :development
245
245
  prerelease: false
246
246
  version_requirements: !ruby/object:Gem::Requirement
247
247
  requirements:
248
248
  - - "~>"
249
249
  - !ruby/object:Gem::Version
250
- version: 0.7.0
250
+ version: '0.7'
251
251
  - !ruby/object:Gem::Dependency
252
252
  name: fuubar
253
253
  requirement: !ruby/object:Gem::Requirement
254
254
  requirements:
255
255
  - - "~>"
256
256
  - !ruby/object:Gem::Version
257
- version: 2.0.0.rc1
257
+ version: '2.0'
258
258
  type: :development
259
259
  prerelease: false
260
260
  version_requirements: !ruby/object:Gem::Requirement
261
261
  requirements:
262
262
  - - "~>"
263
263
  - !ruby/object:Gem::Version
264
- version: 2.0.0.rc1
264
+ version: '2.0'
265
265
  description: ''
266
266
  email:
267
267
  - razorx@evansosenko.com
@@ -270,6 +270,7 @@ executables:
270
270
  extensions: []
271
271
  extra_rdoc_files: []
272
272
  files:
273
+ - ".editorconfig"
273
274
  - ".gitignore"
274
275
  - ".rspec"
275
276
  - ".rubocop.yml"
@@ -323,7 +324,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
323
324
  version: '0'
324
325
  requirements: []
325
326
  rubyforge_project:
326
- rubygems_version: 2.2.2
327
+ rubygems_version: 2.4.5
327
328
  signing_key:
328
329
  specification_version: 4
329
330
  summary: Simple and intelligent configuration file management.