anvil-core 0.3.2 → 0.4.0
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/VERSION +1 -1
- data/lib/anvil/bundler.rb +5 -2
- data/lib/anvil/task.rb +3 -6
- data/lib/anvil/task/callback.rb +19 -0
- data/lib/anvil/task/class_methods.rb +2 -2
- data/lib/anvil/task/projects.rb +11 -1
- data/lib/tasks/help_task.rb +5 -0
- data/spec/lib/anvil/task/callback_spec.rb +29 -0
- data/spec/lib/anvil/task/projects_spec.rb +8 -1
- data/spec/lib/anvil/task_spec.rb +6 -2
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 71ffb03f67a3fed9d510791164f6688a87392fc4
|
4
|
+
data.tar.gz: c4dab2c85e2d625ffab883580fa2e2bb88382570
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2a47af0b91a303163f21691c8d520925e7f9558617c8993b22e5d265740679c4bbca464f4b1b8874fa11831563cb14d24e259a52806f0b1485f491f148d5f7d8
|
7
|
+
data.tar.gz: a2555fcaedd1ee41e37e66aeb782b7b65bd2b4ed9b09939730649085638bd378b4114d00bce8e25937f9e0e9e39711e9fca3a51bdcbe2e19a2466fccf11f1126
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.4.0
|
data/lib/anvil/bundler.rb
CHANGED
@@ -1,8 +1,11 @@
|
|
1
1
|
module Anvil
|
2
2
|
class Bundler
|
3
3
|
def self.update_gem(gem_name)
|
4
|
-
|
5
|
-
|
4
|
+
::Bundler.with_clean_env do
|
5
|
+
Cocaine::CommandLine.runner = Cocaine::CommandLine::PopenRunner.new
|
6
|
+
line = Cocaine::CommandLine.new('bundle', "update #{gem_name}")
|
7
|
+
line.run
|
8
|
+
end
|
6
9
|
end
|
7
10
|
end
|
8
11
|
end
|
data/lib/anvil/task.rb
CHANGED
@@ -3,6 +3,7 @@
|
|
3
3
|
require 'anvil/task/class_methods'
|
4
4
|
require 'anvil/task/naming'
|
5
5
|
require 'anvil/task/options'
|
6
|
+
require 'anvil/task/callback'
|
6
7
|
|
7
8
|
module Anvil
|
8
9
|
# Common class for all tasks
|
@@ -37,9 +38,7 @@ module Anvil
|
|
37
38
|
protected
|
38
39
|
|
39
40
|
def run_after_callbacks
|
40
|
-
self.class.afters.each
|
41
|
-
after[0].new(after[1]).run
|
42
|
-
end
|
41
|
+
self.class.afters.each { |callback| callback.run }
|
43
42
|
end
|
44
43
|
|
45
44
|
def run_assures
|
@@ -47,9 +46,7 @@ module Anvil
|
|
47
46
|
end
|
48
47
|
|
49
48
|
def run_before_callbacks
|
50
|
-
self.class.befores.each
|
51
|
-
before[0].new(before[1]).run
|
52
|
-
end
|
49
|
+
self.class.befores.each { |callback| callback.run }
|
53
50
|
end
|
54
51
|
|
55
52
|
def run_task
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'anvil/task/naming'
|
2
|
+
|
3
|
+
module Anvil
|
4
|
+
class Task
|
5
|
+
class Callback
|
6
|
+
include Anvil::Task::Naming
|
7
|
+
|
8
|
+
attr_reader :task, :options
|
9
|
+
|
10
|
+
def initialize(task_name, options)
|
11
|
+
@task, @options = from_name(task_name), options
|
12
|
+
end
|
13
|
+
|
14
|
+
def run
|
15
|
+
task.new(options).run
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -18,7 +18,7 @@ module Anvil
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def after(task_name, options = {})
|
21
|
-
afters <<
|
21
|
+
afters << Callback.new(task_name, options)
|
22
22
|
end
|
23
23
|
|
24
24
|
def assure(assure_name)
|
@@ -26,7 +26,7 @@ module Anvil
|
|
26
26
|
end
|
27
27
|
|
28
28
|
def before(task_name, options = {})
|
29
|
-
befores <<
|
29
|
+
befores << Callback.new(task_name, options)
|
30
30
|
end
|
31
31
|
|
32
32
|
def run(*args)
|
data/lib/anvil/task/projects.rb
CHANGED
@@ -13,6 +13,11 @@ module Anvil
|
|
13
13
|
log_project_does_not_exists project
|
14
14
|
end
|
15
15
|
|
16
|
+
# Yields a block in which PWD is the folder of a project managed
|
17
|
+
# by anvil.
|
18
|
+
#
|
19
|
+
# @param [String] project the name of a project managed by anvil
|
20
|
+
# @return [Object] anything returned by the yielded block
|
16
21
|
def on_project(project)
|
17
22
|
Dir.chdir(project_path(project)) do
|
18
23
|
yield(git)
|
@@ -21,8 +26,13 @@ module Anvil
|
|
21
26
|
log_project_does_not_exists project
|
22
27
|
end
|
23
28
|
|
29
|
+
# Runs on_project on an array of projects
|
30
|
+
#
|
31
|
+
# @param [Array] projects an array of projects managed by anvil
|
32
|
+
# @return [Array] an array with the values returned by each
|
33
|
+
# on_project run
|
24
34
|
def on_each_project(projects)
|
25
|
-
projects.
|
35
|
+
projects.map do |project|
|
26
36
|
on_project(project) { |project_git| yield project, project_git }
|
27
37
|
end
|
28
38
|
end
|
data/lib/tasks/help_task.rb
CHANGED
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'anvil/task/naming'
|
3
|
+
|
4
|
+
describe Anvil::Task::Callback do
|
5
|
+
|
6
|
+
subject(:callback) { Anvil::Task::Callback.new(:dummy, option: 'value') }
|
7
|
+
|
8
|
+
describe '#new' do
|
9
|
+
it 'sets the task by the name' do
|
10
|
+
expect(callback.task).to be DummyTask
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'sets the options' do
|
14
|
+
expect(callback.options).to include(option: 'value')
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
describe '.run' do
|
19
|
+
let(:dummy_task) { DummyTask.new }
|
20
|
+
|
21
|
+
it 'runs the task' do
|
22
|
+
expect(DummyTask).to receive(:new)
|
23
|
+
.with(option: 'value')
|
24
|
+
.and_return(dummy_task)
|
25
|
+
expect(dummy_task).to receive(:run)
|
26
|
+
callback.run
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -44,6 +44,12 @@ describe Anvil::Task::Projects, fakefs: true do
|
|
44
44
|
it 'yields a git project object' do
|
45
45
|
expect { |b| subject.on_project(project, &b) }.to yield_with_args
|
46
46
|
end
|
47
|
+
|
48
|
+
it 'returns the same thing returned by the yielded block' do
|
49
|
+
return_value = 'return-value'
|
50
|
+
|
51
|
+
expect(subject.on_project(project) { return_value }).to eq(return_value)
|
52
|
+
end
|
47
53
|
end
|
48
54
|
|
49
55
|
describe '#on_each_project' do
|
@@ -53,7 +59,8 @@ describe Anvil::Task::Projects, fakefs: true do
|
|
53
59
|
end
|
54
60
|
|
55
61
|
it 'works on each project' do
|
56
|
-
expect { |b| subject.on_each_project(projects, &b) }
|
62
|
+
expect { |b| subject.on_each_project(projects, &b) }
|
63
|
+
.to yield_control.twice
|
57
64
|
end
|
58
65
|
end
|
59
66
|
end
|
data/spec/lib/anvil/task_spec.rb
CHANGED
@@ -10,8 +10,10 @@ describe Anvil::Task do
|
|
10
10
|
describe '.after' do
|
11
11
|
before { dummy_task.class_eval { after :dummy_after, argument: 'value' } }
|
12
12
|
|
13
|
+
subject(:afters) { dummy_task.afters }
|
13
14
|
it 'adds DummyBeforeTask to the after callbacks' do
|
14
|
-
|
15
|
+
afters.first.should be_an_instance_of Anvil::Task::Callback
|
16
|
+
afters.first.task.should be DummyAfterTask
|
15
17
|
end
|
16
18
|
end
|
17
19
|
|
@@ -28,8 +30,10 @@ describe Anvil::Task do
|
|
28
30
|
dummy_task.class_eval { before :dummy_before, argument: 'value' }
|
29
31
|
end
|
30
32
|
|
33
|
+
subject(:befores) { dummy_task.befores }
|
31
34
|
it 'adds DummyBeforeTask to the before callbacks' do
|
32
|
-
|
35
|
+
befores.first.should be_an_instance_of Anvil::Task::Callback
|
36
|
+
befores.first.task.should be DummyBeforeTask
|
33
37
|
end
|
34
38
|
end
|
35
39
|
|
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.
|
4
|
+
version: 0.4.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-06-
|
12
|
+
date: 2014-06-25 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: git
|
@@ -178,6 +178,7 @@ files:
|
|
178
178
|
- lib/anvil/parser.rb
|
179
179
|
- lib/anvil/rubygems.rb
|
180
180
|
- lib/anvil/task.rb
|
181
|
+
- lib/anvil/task/callback.rb
|
181
182
|
- lib/anvil/task/class_methods.rb
|
182
183
|
- lib/anvil/task/naming.rb
|
183
184
|
- lib/anvil/task/options.rb
|
@@ -200,6 +201,7 @@ files:
|
|
200
201
|
- spec/lib/anvil/config_spec.rb
|
201
202
|
- spec/lib/anvil/extensions_manager_spec.rb
|
202
203
|
- spec/lib/anvil/parser_spec.rb
|
204
|
+
- spec/lib/anvil/task/callback_spec.rb
|
203
205
|
- spec/lib/anvil/task/naming_spec.rb
|
204
206
|
- spec/lib/anvil/task/options_spec.rb
|
205
207
|
- spec/lib/anvil/task/projects_spec.rb
|
@@ -253,6 +255,7 @@ test_files:
|
|
253
255
|
- spec/lib/anvil/config_spec.rb
|
254
256
|
- spec/lib/anvil/extensions_manager_spec.rb
|
255
257
|
- spec/lib/anvil/parser_spec.rb
|
258
|
+
- spec/lib/anvil/task/callback_spec.rb
|
256
259
|
- spec/lib/anvil/task/naming_spec.rb
|
257
260
|
- spec/lib/anvil/task/options_spec.rb
|
258
261
|
- spec/lib/anvil/task/projects_spec.rb
|