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.
Files changed (49) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +17 -1
  3. data/README.md +1 -1
  4. data/git_multicast.gemspec +1 -0
  5. data/lib/git_multicast.rb +3 -8
  6. data/lib/git_multicast/adapter.rb +2 -0
  7. data/lib/git_multicast/{adapters → adapter}/bitbucket.rb +1 -1
  8. data/lib/git_multicast/{adapters → adapter}/github.rb +1 -1
  9. data/lib/git_multicast/cli.rb +38 -6
  10. data/lib/git_multicast/formatter.rb +6 -0
  11. data/lib/git_multicast/formatter/full.rb +18 -0
  12. data/lib/git_multicast/formatter/quiet.rb +13 -0
  13. data/lib/git_multicast/formatter/standard.rb +29 -0
  14. data/lib/git_multicast/formatter/status.rb +17 -0
  15. data/lib/git_multicast/multicaster.rb +31 -0
  16. data/lib/git_multicast/multicaster/clone.rb +35 -0
  17. data/lib/git_multicast/multicaster/pull.rb +30 -0
  18. data/lib/git_multicast/multicaster/status.rb +30 -0
  19. data/lib/git_multicast/repository_fetcher.rb +5 -2
  20. data/lib/git_multicast/task.rb +5 -3
  21. data/lib/git_multicast/task/result.rb +13 -0
  22. data/lib/git_multicast/task/runner.rb +38 -0
  23. data/lib/git_multicast/version.rb +1 -1
  24. data/spec/git_multicast/{adapters → adapter}/bitbucket_spec.rb +7 -3
  25. data/spec/git_multicast/cli_spec.rb +3 -3
  26. data/spec/git_multicast/formatter/full_spec.rb +32 -0
  27. data/spec/git_multicast/formatter/quiet_spec.rb +30 -0
  28. data/spec/git_multicast/formatter/standard_spec.rb +31 -0
  29. data/spec/git_multicast/formatter/status_spec.rb +32 -0
  30. data/spec/git_multicast/multicaster/clone_spec.rb +97 -0
  31. data/spec/git_multicast/multicaster/pull_spec.rb +41 -0
  32. data/spec/git_multicast/multicaster/status_spec.rb +41 -0
  33. data/spec/git_multicast/repository_fetcher_spec.rb +3 -3
  34. data/spec/git_multicast/task/runner_spec.rb +44 -0
  35. data/spec/git_multicast/task_spec.rb +8 -5
  36. metadata +39 -18
  37. data/lib/git_multicast/.rubocop.yml +0 -11
  38. data/lib/git_multicast/adapters.rb +0 -7
  39. data/lib/git_multicast/cloner.rb +0 -36
  40. data/lib/git_multicast/output_formatter.rb +0 -30
  41. data/lib/git_multicast/puller.rb +0 -28
  42. data/lib/git_multicast/statuser.rb +0 -28
  43. data/lib/git_multicast/task_result.rb +0 -7
  44. data/lib/git_multicast/task_runner.rb +0 -40
  45. data/spec/git_multicast/cloner_spec.rb +0 -94
  46. data/spec/git_multicast/output_formatter_spec.rb +0 -30
  47. data/spec/git_multicast/puller_spec.rb +0 -39
  48. data/spec/git_multicast/statuser_spec.rb +0 -39
  49. 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