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.
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