git_multicast 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 +4 -4
- data/Gemfile.lock +17 -1
- data/README.md +1 -1
- data/git_multicast.gemspec +1 -0
- data/lib/git_multicast.rb +3 -8
- data/lib/git_multicast/adapter.rb +2 -0
- data/lib/git_multicast/{adapters → adapter}/bitbucket.rb +1 -1
- data/lib/git_multicast/{adapters → adapter}/github.rb +1 -1
- data/lib/git_multicast/cli.rb +38 -6
- data/lib/git_multicast/formatter.rb +6 -0
- data/lib/git_multicast/formatter/full.rb +18 -0
- data/lib/git_multicast/formatter/quiet.rb +13 -0
- data/lib/git_multicast/formatter/standard.rb +29 -0
- data/lib/git_multicast/formatter/status.rb +17 -0
- data/lib/git_multicast/multicaster.rb +31 -0
- data/lib/git_multicast/multicaster/clone.rb +35 -0
- data/lib/git_multicast/multicaster/pull.rb +30 -0
- data/lib/git_multicast/multicaster/status.rb +30 -0
- data/lib/git_multicast/repository_fetcher.rb +5 -2
- data/lib/git_multicast/task.rb +5 -3
- data/lib/git_multicast/task/result.rb +13 -0
- data/lib/git_multicast/task/runner.rb +38 -0
- data/lib/git_multicast/version.rb +1 -1
- data/spec/git_multicast/{adapters → adapter}/bitbucket_spec.rb +7 -3
- data/spec/git_multicast/cli_spec.rb +3 -3
- data/spec/git_multicast/formatter/full_spec.rb +32 -0
- data/spec/git_multicast/formatter/quiet_spec.rb +30 -0
- data/spec/git_multicast/formatter/standard_spec.rb +31 -0
- data/spec/git_multicast/formatter/status_spec.rb +32 -0
- data/spec/git_multicast/multicaster/clone_spec.rb +97 -0
- data/spec/git_multicast/multicaster/pull_spec.rb +41 -0
- data/spec/git_multicast/multicaster/status_spec.rb +41 -0
- data/spec/git_multicast/repository_fetcher_spec.rb +3 -3
- data/spec/git_multicast/task/runner_spec.rb +44 -0
- data/spec/git_multicast/task_spec.rb +8 -5
- metadata +39 -18
- data/lib/git_multicast/.rubocop.yml +0 -11
- data/lib/git_multicast/adapters.rb +0 -7
- data/lib/git_multicast/cloner.rb +0 -36
- data/lib/git_multicast/output_formatter.rb +0 -30
- data/lib/git_multicast/puller.rb +0 -28
- data/lib/git_multicast/statuser.rb +0 -28
- data/lib/git_multicast/task_result.rb +0 -7
- data/lib/git_multicast/task_runner.rb +0 -40
- data/spec/git_multicast/cloner_spec.rb +0 -94
- data/spec/git_multicast/output_formatter_spec.rb +0 -30
- data/spec/git_multicast/puller_spec.rb +0 -39
- data/spec/git_multicast/statuser_spec.rb +0 -39
- data/spec/git_multicast/task_runner_spec.rb +0 -53
@@ -1,30 +0,0 @@
|
|
1
|
-
module GitMulticast
|
2
|
-
describe OutputFormatter do
|
3
|
-
subject(:formatter) { described_class.new }
|
4
|
-
|
5
|
-
let(:name) { "some action" }
|
6
|
-
let(:exit_status) { 0 }
|
7
|
-
let(:result_string) { "stuff to be done" }
|
8
|
-
|
9
|
-
let(:result) { TaskResult.new(name, result_string, exit_status) }
|
10
|
-
|
11
|
-
describe '.single_format' do
|
12
|
-
subject(:single_format) { formatter.single_format(result) }
|
13
|
-
|
14
|
-
it do
|
15
|
-
is_expected.to match(/\[Success\]/)
|
16
|
-
.and match(/#{name}/)
|
17
|
-
end
|
18
|
-
|
19
|
-
context 'when exit_status is not 0' do
|
20
|
-
let(:exit_status) { 999 }
|
21
|
-
|
22
|
-
it do
|
23
|
-
is_expected.to match(/\[Error\]/)
|
24
|
-
.and match(/#{result}/)
|
25
|
-
.and match(/-+$/)
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
@@ -1,39 +0,0 @@
|
|
1
|
-
module GitMulticast
|
2
|
-
describe Puller do
|
3
|
-
subject(:puller) { described_class.new(dir) }
|
4
|
-
|
5
|
-
let(:dir) { '/home/' }
|
6
|
-
let(:entries) { %w(one two) }
|
7
|
-
|
8
|
-
let(:task) { instance_double(Task, call: result) }
|
9
|
-
let(:result) { TaskResult.new('fitas', 'success', 0) }
|
10
|
-
|
11
|
-
before do
|
12
|
-
allow(File).to receive(:directory?).and_return(true)
|
13
|
-
allow(Dir).to receive(:entries).and_return(entries)
|
14
|
-
|
15
|
-
allow(Task).to receive(:new)
|
16
|
-
.and_return(task)
|
17
|
-
end
|
18
|
-
|
19
|
-
describe '#pull!' do
|
20
|
-
subject(:pull!) { puller.pull! }
|
21
|
-
|
22
|
-
it 'creates a task for each repository' do
|
23
|
-
entries.each do |entry|
|
24
|
-
expect(Task).to receive(:new)
|
25
|
-
.with(entry, "git -C #{entry} pull -r origin")
|
26
|
-
end
|
27
|
-
|
28
|
-
pull!
|
29
|
-
end
|
30
|
-
|
31
|
-
it 'runs tasks using a runner' do
|
32
|
-
expect(TaskRunner).to receive(:new)
|
33
|
-
.with([task, task]).and_call_original
|
34
|
-
|
35
|
-
pull!
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
@@ -1,39 +0,0 @@
|
|
1
|
-
module GitMulticast
|
2
|
-
describe Statuser do
|
3
|
-
subject(:statuser) { described_class.new(dir) }
|
4
|
-
|
5
|
-
let(:dir) { '/ki/fita/' }
|
6
|
-
let(:entries) { ['fita1', 'fita2'] }
|
7
|
-
|
8
|
-
let(:task) { instance_double(Task, call: result) }
|
9
|
-
let(:result) { TaskResult.new('fitas', 'success', 0) }
|
10
|
-
|
11
|
-
before do
|
12
|
-
allow(File).to receive(:directory?).and_return(true)
|
13
|
-
allow(Dir).to receive(:entries).and_return(entries)
|
14
|
-
|
15
|
-
allow(Task).to receive(:new)
|
16
|
-
.and_return(task)
|
17
|
-
end
|
18
|
-
|
19
|
-
describe '#statuses!' do
|
20
|
-
subject(:statuses!) { statuser.statuses! }
|
21
|
-
|
22
|
-
it 'creates a task for each repository' do
|
23
|
-
entries.each do |entry|
|
24
|
-
expect(Task).to receive(:new)
|
25
|
-
.with(entry, "cd #{entry} && git status")
|
26
|
-
end
|
27
|
-
|
28
|
-
statuses!
|
29
|
-
end
|
30
|
-
|
31
|
-
it 'runs tasks using a runner' do
|
32
|
-
expect(TaskRunner).to receive(:new)
|
33
|
-
.with([task, task]).and_call_original
|
34
|
-
|
35
|
-
statuses!
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
@@ -1,53 +0,0 @@
|
|
1
|
-
module GitMulticast
|
2
|
-
describe TaskRunner do
|
3
|
-
subject(:runner) { described_class.new(tasks) }
|
4
|
-
|
5
|
-
let(:tasks) { [hey_task, ho_task] }
|
6
|
-
|
7
|
-
# Since tasks quack like lambdas, I will be using them here.
|
8
|
-
let(:hey_task) { ->() { first_result } }
|
9
|
-
let(:ho_task) { ->() { second_result } }
|
10
|
-
|
11
|
-
let!(:first_result) { TaskResult.new(:one, 'Hey!', 1) }
|
12
|
-
let!(:second_result) { TaskResult.new(:two, 'Ho!', 1) }
|
13
|
-
|
14
|
-
let(:formatter) { OutputFormatter.new }
|
15
|
-
|
16
|
-
before do
|
17
|
-
allow(OutputFormatter).to receive(:new)
|
18
|
-
.and_return(formatter)
|
19
|
-
end
|
20
|
-
|
21
|
-
describe '#run!' do
|
22
|
-
subject(:run!) { runner.run! }
|
23
|
-
|
24
|
-
it 'creates a thread for each task'do
|
25
|
-
expect(Thread).to receive(:new)
|
26
|
-
.exactly(tasks.size).times
|
27
|
-
.and_call_original
|
28
|
-
|
29
|
-
run!
|
30
|
-
end
|
31
|
-
|
32
|
-
it 'calls each task' do
|
33
|
-
expect(hey_task).to receive(:call)
|
34
|
-
.and_call_original
|
35
|
-
expect(ho_task).to receive(:call)
|
36
|
-
.and_call_original
|
37
|
-
|
38
|
-
run!
|
39
|
-
end
|
40
|
-
|
41
|
-
it 'formats each output' do
|
42
|
-
expect(formatter).to receive(:single_format)
|
43
|
-
.with(first_result)
|
44
|
-
.and_call_original
|
45
|
-
expect(formatter).to receive(:single_format)
|
46
|
-
.with(second_result)
|
47
|
-
.and_call_original
|
48
|
-
|
49
|
-
run!
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|