git_multicast 0.1.0 → 0.2.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/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
|