anvil-core 0.1.0 → 0.2.0

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: 1ec595224814976ccada12c8a43dc3041bb43cca
4
- data.tar.gz: d31891f5299ddd11c15e30317eb33ac10e737ab8
3
+ metadata.gz: ee2a3e726f71df8d805f6948e7dddf8c865d983d
4
+ data.tar.gz: 268c51a44e9bd3aedded2d898e1cf91d353c7b80
5
5
  SHA512:
6
- metadata.gz: 1e86c8cef457da7957997a36c0cf976e5181e0a3e45789036ec6454ebf35f0b557b6c73cf98f54a8b0dc81ab8b4244f2c41cc2ea8293ce510c79185434369fd2
7
- data.tar.gz: c55729de1caf67c05e1a4fe5e3d5f96a0dae0e68c0f65d29f607e9ce2db686189707d3f8ac559f836edae4c062347a1a84c3db1c82b6393a8711f134949c91dd
6
+ metadata.gz: 4b02d16e0f8c0430407742909227a7b31cec9a2d3f5ae2c9fb47a3531e324e42a90784e838bac6d34cf7c1bb26a1665ac22ba84d5171a29583a9980af9a31295
7
+ data.tar.gz: 087e1f4ae6030290d71d65902ffd2ba1d0d7580cbe2862f377fe2640a7c6f65dc07108fcd9e2990a72743fa90c47921921c00c0c01b2db71a62c1c514e0b3e50
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.2.0
@@ -0,0 +1,27 @@
1
+ require 'git'
2
+
3
+ module Anvil
4
+ class Task
5
+ module Projects
6
+ def project_path(project)
7
+ Anvil::Config.base_projects_path + "/#{project}"
8
+ end
9
+
10
+ def change_project(project)
11
+ Dir.chdir(project_path(project))
12
+ end
13
+
14
+ def on_project(project)
15
+ Dir.chdir(project_path(project)) do
16
+ yield(git)
17
+ end
18
+ end
19
+
20
+ protected
21
+
22
+ def git
23
+ Git.open(Dir.pwd)
24
+ end
25
+ end
26
+ end
27
+ end
@@ -29,7 +29,7 @@ module Anvil
29
29
 
30
30
  # @return [String] top level dir if this is a git managed project
31
31
  def self.current_project_path
32
- Rugged::Repository.discover(ENV['PWD']).gsub('.git/', '')
32
+ Rugged::Repository.discover(Dir.pwd).gsub('.git/', '')
33
33
  rescue Rugged::RepositoryError
34
34
  ''
35
35
  end
@@ -7,8 +7,12 @@ class Gem::BumpTask < Anvil::Task
7
7
  parser do
8
8
  arguments %w(term)
9
9
 
10
- on('-p', '--[no-]persist', 'Commit tag and push the changes') do |p|
11
- options[:persist] = p
10
+ on('-p', '--persist', 'Commit tag and push the changes') do |p|
11
+ options[:persist] = true
12
+ end
13
+
14
+ on('-f', '--force', 'Act even if the git repo is not clean') do |f|
15
+ options[:force] = true
12
16
  end
13
17
  end
14
18
 
@@ -30,7 +34,7 @@ class Gem::BumpTask < Anvil::Task
30
34
  protected
31
35
 
32
36
  def git
33
- @git ||= Git.open ENV['PWD']
37
+ @git ||= Git.open Dir.pwd
34
38
  end
35
39
 
36
40
  def version_file(mode = 'r')
@@ -67,9 +71,11 @@ class Gem::BumpTask < Anvil::Task
67
71
  end
68
72
 
69
73
  def prepare_repo
70
- fail Anvil::RepoNotClean unless clean?
71
-
72
- git.pull
74
+ if clean? || force?
75
+ git.pull
76
+ else
77
+ fail Anvil::RepoNotClean
78
+ end
73
79
  end
74
80
 
75
81
  def clean?
@@ -77,4 +83,8 @@ class Gem::BumpTask < Anvil::Task
77
83
  git.status.deleted.empty? &&
78
84
  git.status.added.empty?
79
85
  end
86
+
87
+ def force?
88
+ options[:force]
89
+ end
80
90
  end
@@ -0,0 +1,48 @@
1
+ require 'spec_helper'
2
+ require 'anvil/task/projects'
3
+
4
+ describe Anvil::Task::Projects, fakefs: true do
5
+ let(:dummy_class) do
6
+ Class.new do
7
+ include Anvil::Task::Projects
8
+ end
9
+ end
10
+ let(:project) { 'anvil-core' }
11
+ let(:project_path) { Anvil::Config.base_projects_path + "/#{project}" }
12
+ subject { dummy_class.new }
13
+
14
+ before { FileUtils.mkdir_p project_path }
15
+
16
+ describe '#project_path' do
17
+ it "returns the anvil's project path" do
18
+ expect(subject.project_path(project))
19
+ .to eq(project_path)
20
+ end
21
+ end
22
+
23
+ describe '#change_project' do
24
+ let!(:previous_dir) { Dir.getwd }
25
+
26
+ before { FileUtils.mkdir_p project_path }
27
+ after { Dir.chdir previous_dir }
28
+
29
+ it "cd's into the project's path" do
30
+ subject.change_project(project)
31
+ expect(Dir.getwd).to eq(project_path)
32
+ end
33
+ end
34
+
35
+ describe '#on_project' do
36
+ before { subject.stub(:git).and_return(double('git')) }
37
+
38
+ it 'keeps the project changed inside the block' do
39
+ subject.on_project project do
40
+ expect(Dir.pwd).to eq(project_path)
41
+ end
42
+ end
43
+
44
+ it 'yields a git project object' do
45
+ expect { |b| subject.on_project(project, &b) }.to yield_with_args
46
+ end
47
+ end
48
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: anvil-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Fran Casas
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-05-19 00:00:00.000000000 Z
12
+ date: 2014-05-22 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: git
@@ -180,6 +180,7 @@ files:
180
180
  - lib/anvil/task/class_methods.rb
181
181
  - lib/anvil/task/naming.rb
182
182
  - lib/anvil/task/options.rb
183
+ - lib/anvil/task/projects.rb
183
184
  - lib/anvil/task/repositories.rb
184
185
  - lib/anvil/task_manager.rb
185
186
  - lib/anvil/version.rb
@@ -199,6 +200,7 @@ files:
199
200
  - spec/lib/anvil/parser_spec.rb
200
201
  - spec/lib/anvil/task/naming_spec.rb
201
202
  - spec/lib/anvil/task/options_spec.rb
203
+ - spec/lib/anvil/task/projects_spec.rb
202
204
  - spec/lib/anvil/task_manager_spec.rb
203
205
  - spec/lib/anvil/task_spec.rb
204
206
  - spec/lib/anvil/versioner_spec.rb
@@ -251,6 +253,7 @@ test_files:
251
253
  - spec/lib/anvil/parser_spec.rb
252
254
  - spec/lib/anvil/task/naming_spec.rb
253
255
  - spec/lib/anvil/task/options_spec.rb
256
+ - spec/lib/anvil/task/projects_spec.rb
254
257
  - spec/lib/anvil/task_manager_spec.rb
255
258
  - spec/lib/anvil/task_spec.rb
256
259
  - spec/lib/anvil/versioner_spec.rb