config_curator 0.2.0 → 0.2.1

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 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.