rubolite 0.0.4 → 0.0.5

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.
@@ -1,7 +1,11 @@
1
1
  module Rubolite
2
2
  class Client
3
+ extend Forwardable
4
+
3
5
  attr_reader :admin, :ssh_keys
4
6
 
7
+ def_delegators :@admin, :git
8
+
5
9
  def initialize(admin)
6
10
  @admin = admin
7
11
  @ssh_keys = {}
@@ -40,8 +44,9 @@ module Rubolite
40
44
  end
41
45
 
42
46
  def commit!
43
- admin.git.add('.')
44
- admin.git.commit_all("Modified configuration by rubolite")
47
+ return unless commitable?
48
+ admin.git.add(".")
49
+ admin.git.commit "Modified configuration by rubolite"
45
50
  end
46
51
 
47
52
  def push!
@@ -61,5 +66,9 @@ module Rubolite
61
66
  @groups = nil
62
67
  @ssh_keys = {}
63
68
  end
69
+
70
+ def commitable?
71
+ admin.git.status.changed.size > 0
72
+ end
64
73
  end
65
74
  end
@@ -1,3 +1,3 @@
1
1
  module Rubolite
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
@@ -39,6 +39,10 @@ describe Rubolite::Client do
39
39
  end
40
40
 
41
41
  context "saving" do
42
+ let(:git) { stub status: status, add: nil }
43
+ let(:status) { stub changed: changed }
44
+ let(:changed) { Hash.new }
45
+
42
46
  it "saves changes" do
43
47
  admin.writer.should_receive(:write!)
44
48
  subject.save!
@@ -55,7 +59,14 @@ describe Rubolite::Client do
55
59
  end
56
60
 
57
61
  it "commits the changes to the repo" do
58
- admin.git.should_receive(:commit_all)
62
+ admin.git.should_receive(:commit)
63
+ subject.commit!
64
+ end
65
+
66
+ it "commits only if things have changed" do
67
+ subject.admin.stub(git: git)
68
+
69
+ admin.git.should_not_receive(:commit_all)
59
70
  subject.commit!
60
71
  end
61
72
 
@@ -108,4 +119,19 @@ describe Rubolite::Client do
108
119
  expect(subject.ssh_keys.object_id).not_to eq(ssh_keys)
109
120
  end
110
121
  end
122
+
123
+ context "status reporting" do
124
+ let(:git) { stub status: status }
125
+ let(:status) { stub changed: changed }
126
+ let(:changed) { Hash.new }
127
+
128
+ before(:each) do
129
+ subject.admin.stub(git: git)
130
+ end
131
+
132
+ it "reports that it is commitable" do
133
+ changed.should_receive(:size).and_return(1)
134
+ expect(subject).to be_commitable
135
+ end
136
+ end
111
137
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubolite
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-11-19 00:00:00.000000000 Z
12
+ date: 2012-11-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec