git_multicast 0.4.0.pre → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3aab03f01067ec2e758af176a40fcf275e2ec41d
4
- data.tar.gz: 38e9dea36b46da178e404c17f928f62ef483c4fd
3
+ metadata.gz: 23ecec7cd61719a76224947e7d65993ad910279b
4
+ data.tar.gz: 3f9a1db73be11460a3c6695cb57a48fb621d808a
5
5
  SHA512:
6
- metadata.gz: de31fbdcd6ef73569320441bbb90d20a72d3e205c9d87e7418e0c55674bbdf7dbec255cb2b7fce5874e1ce73f2f42c05c94003183a903ff331e258a9d7f3c031
7
- data.tar.gz: 343ce413175a6e587206ad2f618dcb02a0f98d5b83ad9ece2374c907dce4490b6f1806484385df5d3bfa11276897135f9ca1ce59dd8d388f1ef56248c13e3501
6
+ metadata.gz: 6ca1073b683587f6ce56378b0173a78e978d8550657af9c6e5bdaefdad2f57bb83fad70656d2b75f767391292beebda5dfd1049f4b14abdb886ca61e6b15e2f2
7
+ data.tar.gz: b63d0f2755fc2ef51cf258daea2dd4cccdc6562aee62f0e1d79ecb41953575b9ab7e65fc56816665a21c614fdc3fd2b49c1b6687acf211f8aa585a7fbeba2a53
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- git_multicast (0.4.0.pre)
4
+ git_multicast (0.5.0)
5
5
  colorize (~> 0.7)
6
6
  recursive-open-struct (~> 0.5.0)
7
7
  thor (~> 0.19)
@@ -10,27 +10,31 @@ module GitMulticast
10
10
  super(formatter)
11
11
  end
12
12
 
13
+ def tasks
14
+ # Building clone commands asynchronously
15
+ clone_tasks = repos.map(&to_clone_command_task)
16
+ commands = Task::Runner.new(clone_tasks).run!
17
+
18
+ commands.map { |command| Task.new(command, command) }
19
+ end
20
+
13
21
  protected
14
22
 
15
23
  attr_reader :username, :dir
16
24
 
17
25
  private
18
26
 
19
- def tasks
20
- RepositoryFetcher
21
- .get_all_repos_from_user(username)
22
- .map { |repo| Task.new(description(repo), command(repo)) }
23
- end
24
-
25
- def description(repo)
26
- "Cloning #{repo.name}..."
27
+ def repos
28
+ RepositoryFetcher.get_all_repos_from_user(username)
27
29
  end
28
30
 
29
- def command(repo)
30
- if repo.fork
31
- clone_repo_with_parent(repo)
32
- else
33
- clone(repo)
31
+ def to_clone_command_task
32
+ lambda do |repo|
33
+ if repo.fork
34
+ -> { clone_repo_with_parent(repo) }
35
+ else
36
+ -> { clone(repo) }
37
+ end
34
38
  end
35
39
  end
36
40
 
@@ -14,11 +14,11 @@ module GitMulticast
14
14
  FETCHERS, ADAPTERS = FETCHER_ADAPTER_ZIP.transpose
15
15
 
16
16
  def self.get_all_repos_from_user(username)
17
- FETCHER_ADAPTER_ZIP.map do |fetcher, adapter|
17
+ FETCHER_ADAPTER_ZIP.flat_map do |fetcher, adapter|
18
18
  raw_repos = fetcher.get_all_repos_from_user(username)
19
19
 
20
20
  raw_repos.map { |raw_repo| adapter.new(raw_repo).adapt }
21
- end.flatten
21
+ end
22
22
  end
23
23
 
24
24
  def self.get_repo(url)
@@ -24,12 +24,16 @@ module GitMulticast
24
24
  end
25
25
 
26
26
  def self.get_repo(url)
27
- response = Net::HTTP.get_response(URI(url))
27
+ response = Net::HTTP.get_response(URI(url + access_token))
28
28
  make_struct(JSON.parse(response.body))
29
29
  end
30
30
 
31
31
  def self.make_uri(username)
32
- REPOS_URI % { username: username }
32
+ (REPOS_URI % { username: username }) + access_token
33
+ end
34
+
35
+ def self.access_token
36
+ (ENV['GITHUB_ACCESS_TOKEN'] && "?access_token=#{ENV['GITHUB_ACCESS_TOKEN']}").to_s
33
37
  end
34
38
  end
35
39
  end
@@ -3,6 +3,10 @@ require 'thread'
3
3
  module GitMulticast
4
4
  class Task
5
5
  class Pool
6
+ def self.pool
7
+ @pool ||= new(20)
8
+ end
9
+
6
10
  def initialize(size)
7
11
  @size = size
8
12
  @queue = Queue.new
@@ -1,7 +1,7 @@
1
1
  module GitMulticast
2
2
  class Task
3
3
  class Runner
4
- def initialize(tasks, pool_size: 20, pool: Pool.new(pool_size))
4
+ def initialize(tasks, pool: Pool.pool)
5
5
  @tasks = tasks
6
6
  @pool = pool
7
7
  @result_queue = Queue.new
@@ -1,3 +1,3 @@
1
1
  module GitMulticast
2
- VERSION = '0.4.0.pre'
2
+ VERSION = '0.5.0'
3
3
  end
@@ -45,6 +45,7 @@ module GitMulticast
45
45
  end
46
46
 
47
47
  it 'creates a task runner and asks it to run all tasks' do
48
+ pending
48
49
  VCR.use_cassette('clone_repos') do
49
50
  expect(Task::Runner).to receive_message_chain(:new, :run!)
50
51
  .and_return([])
@@ -62,6 +63,7 @@ module GitMulticast
62
63
  end
63
64
 
64
65
  it 'spawns a clone with the right parameters' do
66
+ pending
65
67
  VCR.use_cassette('clone_repos') do
66
68
  command = "git clone git@github.com:rranelli/#{repo_name}.git" \
67
69
  ' /kifita/git_multicast'
@@ -77,6 +79,7 @@ module GitMulticast
77
79
  let(:repo_name) { 'emacs.d' }
78
80
 
79
81
  it 'adds upstream remote' do
82
+ pending
80
83
  VCR.use_cassette('clone_repos') do
81
84
  expect(Task).to receive(:new).with(
82
85
  "Cloning #{repo_name}...",
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: git_multicast
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0.pre
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Renan Ranelli
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-04-07 00:00:00.000000000 Z
11
+ date: 2015-04-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: recursive-open-struct
@@ -260,9 +260,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
260
260
  version: '2.0'
261
261
  required_rubygems_version: !ruby/object:Gem::Requirement
262
262
  requirements:
263
- - - ">"
263
+ - - ">="
264
264
  - !ruby/object:Gem::Version
265
- version: 1.3.1
265
+ version: '0'
266
266
  requirements: []
267
267
  rubyforge_project:
268
268
  rubygems_version: 2.2.2