github_cloner 0.3.2 → 0.4.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.
- data/README.rdoc +2 -0
- data/Rakefile +1 -0
- data/bin/github_cloner +22 -21
- data/github_cloner.gemspec +2 -6
- data/lib/github_cloner.rb +13 -11
- data/lib/github_cloner/github_helper.rb +31 -31
- data/lib/github_cloner/version.rb +9 -7
- metadata +3 -7
- data/pkg/github_cloner-0.1.gem +0 -0
- data/pkg/github_cloner-0.2.gem +0 -0
- data/pkg/github_cloner-0.3.0.gem +0 -0
- data/pkg/github_cloner-0.3.1.gem +0 -0
data/README.rdoc
CHANGED
@@ -20,6 +20,8 @@ Common options:
|
|
20
20
|
|
21
21
|
$ github_cloner --username nashby --method http --path ~/Desktop/github_projects
|
22
22
|
|
23
|
+
If you will not provide the username, `github_cloner` take it from `git config --global --get github.user`
|
24
|
+
|
23
25
|
== Contributing to github_cloner
|
24
26
|
|
25
27
|
* Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
|
data/Rakefile
CHANGED
data/bin/github_cloner
CHANGED
@@ -6,13 +6,13 @@ require 'ostruct'
|
|
6
6
|
require 'github_cloner'
|
7
7
|
|
8
8
|
class OptionParser
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
9
|
+
def self.parse(args)
|
10
|
+
options = OpenStruct.new
|
11
|
+
options.username = nil
|
12
|
+
options.git_method = 'http'
|
13
|
+
options.path = "."
|
14
|
+
options.timeout = ""
|
15
|
+
options.repos = []
|
16
16
|
|
17
17
|
opts = OptionParser.new do |opts|
|
18
18
|
opts.banner = "Usage: github_cloner [options]"
|
@@ -20,20 +20,18 @@ class OptionParser
|
|
20
20
|
opts.separator ""
|
21
21
|
opts.separator "Specific options:"
|
22
22
|
|
23
|
-
# Mandatory argument.
|
24
23
|
opts.on("-u", "--username GITHUB_USERNAME",
|
25
|
-
"Require the GITHUB_USERNAME before executing your script") do |username|
|
24
|
+
"Require the GITHUB_USERNAME before executing your script(default: username from git config --global --get github.user)") do |username|
|
26
25
|
options.username = username
|
27
26
|
end
|
28
27
|
|
29
|
-
# Optional argument
|
30
28
|
opts.on("-p", "--path [PATH]",
|
31
29
|
"PATH to the new repos collection (default: current directory)") do |path|
|
32
30
|
options.path = path
|
33
31
|
end
|
34
32
|
|
35
33
|
opts.on("-t", "--timeout [TIMEOUT]",
|
36
|
-
"Number of days from the last push
|
34
|
+
"Number of days from the last push before repos will be placed in the inactive folder (default: disabled)") do |timeout|
|
37
35
|
options.timeout = timeout
|
38
36
|
end
|
39
37
|
|
@@ -42,7 +40,6 @@ class OptionParser
|
|
42
40
|
options.git_method = git_method
|
43
41
|
end
|
44
42
|
|
45
|
-
# List of the repos.
|
46
43
|
opts.on("-r", "--repos x,y,z", Array, "List of needed repos (default: all)") do |repos|
|
47
44
|
options.repos = repos
|
48
45
|
end
|
@@ -57,19 +54,23 @@ class OptionParser
|
|
57
54
|
end
|
58
55
|
opts.parse!(args)
|
59
56
|
options
|
60
|
-
|
57
|
+
end
|
61
58
|
end
|
62
59
|
|
63
60
|
options = OptionParser.parse(ARGV)
|
64
61
|
|
62
|
+
if options.username.nil?
|
63
|
+
options.username = Github::git_config_name
|
64
|
+
end
|
65
|
+
|
65
66
|
unless options.username.nil?
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
67
|
+
opts = {:username => options.username.to_s.chomp,
|
68
|
+
:method => options.git_method.to_s,
|
69
|
+
:path => options.path.to_s,
|
70
|
+
:timeout => options.timeout.to_s,
|
71
|
+
:repos => options.repos}
|
72
|
+
cloner = Cloner.new opts
|
73
|
+
cloner.clone
|
73
74
|
else
|
74
|
-
|
75
|
+
puts 'Sorry, bro. I need to know your github name'
|
75
76
|
end
|
data/github_cloner.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{github_cloner}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.4.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Vasiliy Ermolovich"]
|
12
|
-
s.date = %q{2011-03-
|
12
|
+
s.date = %q{2011-03-10}
|
13
13
|
s.default_executable = %q{github_cloner}
|
14
14
|
s.description = %q{an easy way to clone all your projects from github}
|
15
15
|
s.email = %q{younash@gmail.com}
|
@@ -29,10 +29,6 @@ Gem::Specification.new do |s|
|
|
29
29
|
"lib/github_cloner.rb",
|
30
30
|
"lib/github_cloner/github_helper.rb",
|
31
31
|
"lib/github_cloner/version.rb",
|
32
|
-
"pkg/github_cloner-0.1.gem",
|
33
|
-
"pkg/github_cloner-0.2.gem",
|
34
|
-
"pkg/github_cloner-0.3.0.gem",
|
35
|
-
"pkg/github_cloner-0.3.1.gem",
|
36
32
|
"test/helper.rb",
|
37
33
|
"test/test_github_cloner.rb"
|
38
34
|
]
|
data/lib/github_cloner.rb
CHANGED
@@ -1,18 +1,20 @@
|
|
1
1
|
require 'github_cloner/github_helper'
|
2
2
|
|
3
3
|
class Cloner
|
4
|
-
|
4
|
+
|
5
|
+
include Github
|
5
6
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
7
|
+
def initialize(options)
|
8
|
+
@github_uname = options[:username]
|
9
|
+
@mode = options[:method]
|
10
|
+
@path = options[:path]
|
11
|
+
@timeout = options[:timeout]
|
12
|
+
@repos = options[:repos]
|
13
|
+
end
|
13
14
|
|
14
|
-
|
15
|
-
|
16
|
-
|
15
|
+
def clone
|
16
|
+
Github::get_repos(@github_uname, @mode, @timeout).each {|repo| system("git clone #{repo[:link]} #{@path}/#{repo[:inactive]}/#{repo[:name]}") if @repos.include? repo[:name] or @repos.empty? }
|
17
|
+
end
|
18
|
+
|
17
19
|
end
|
18
20
|
|
@@ -4,42 +4,42 @@ require 'time'
|
|
4
4
|
|
5
5
|
module Github
|
6
6
|
|
7
|
-
|
7
|
+
GITHUB_URL_API = 'http://github.com/api/v2/json/repos/show/'
|
8
8
|
|
9
|
-
|
9
|
+
class << self
|
10
10
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
11
|
+
def get_repos(username, mode, timeout)
|
12
|
+
repos_json = JSON.parse(open(GITHUB_URL_API+username).read)
|
13
|
+
repos = []
|
14
|
+
repos_json['repositories'].each do |repo|
|
15
|
+
if timeout != "" && inactive?(repo, timeout)
|
16
|
+
repos << make_git_url(repo['name'], mode, username, "_inactive")
|
17
|
+
else
|
18
|
+
repos << make_git_url(repo['name'], mode, username, "")
|
19
|
+
end
|
20
|
+
end
|
21
|
+
repos
|
22
|
+
end
|
23
|
+
|
24
|
+
def make_git_url(repo_name, mode, username, inactive)
|
25
|
+
case mode
|
26
|
+
when 'ssh'
|
27
|
+
{:link => "git@github.com:#{username}/#{repo_name}.git", :name => repo_name, :inactive => inactive}
|
28
|
+
when 'http'
|
29
|
+
{:link => "https://#{username}@github.com/#{username}/#{repo_name}.git", :name => repo_name, :inactive => inactive}
|
30
|
+
when 'git'
|
31
|
+
{:link => "git://github.com/#{username}/#{repo_name}.git", :name => repo_name, :inactive => inactive}
|
32
|
+
end
|
33
|
+
end
|
23
34
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
{:link => "git@github.com:#{username}/#{repo_name}.git", :name => repo_name, :inactive => inactive}
|
28
|
-
when 'http'
|
29
|
-
{:link => "https://#{username}@github.com/#{username}/#{repo_name}.git", :name => repo_name, :inactive => inactive}
|
30
|
-
when 'git'
|
31
|
-
{:link => "git://github.com/#{username}/#{repo_name}.git", :name => repo_name, :inactive => inactive}
|
32
|
-
end
|
33
|
-
end
|
35
|
+
def inactive?(repo, timeout)
|
36
|
+
((Time.now - Time.parse(repo["pushed_at"])).to_i / 86400) > timeout.to_i
|
37
|
+
end
|
34
38
|
|
35
|
-
def
|
36
|
-
|
37
|
-
true
|
38
|
-
else
|
39
|
-
false
|
40
|
-
end
|
39
|
+
def git_config_name
|
40
|
+
`git config --global --get github.user`
|
41
41
|
end
|
42
42
|
|
43
|
-
|
43
|
+
end
|
44
44
|
|
45
45
|
end
|
@@ -1,10 +1,12 @@
|
|
1
1
|
class Cloner
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
2
|
+
|
3
|
+
module Version
|
4
|
+
MAJOR = 0
|
5
|
+
MINOR = 4
|
6
|
+
PATCH = 0
|
7
|
+
BUILD = nil
|
7
8
|
|
8
|
-
|
9
|
-
|
9
|
+
STRING = [MAJOR, MINOR, PATCH, BUILD].compact.join('.')
|
10
|
+
end
|
11
|
+
|
10
12
|
end
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: github_cloner
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.
|
5
|
+
version: 0.4.0
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Vasiliy Ermolovich
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-03-
|
13
|
+
date: 2011-03-10 00:00:00 +02:00
|
14
14
|
default_executable: github_cloner
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -77,10 +77,6 @@ files:
|
|
77
77
|
- lib/github_cloner.rb
|
78
78
|
- lib/github_cloner/github_helper.rb
|
79
79
|
- lib/github_cloner/version.rb
|
80
|
-
- pkg/github_cloner-0.1.gem
|
81
|
-
- pkg/github_cloner-0.2.gem
|
82
|
-
- pkg/github_cloner-0.3.0.gem
|
83
|
-
- pkg/github_cloner-0.3.1.gem
|
84
80
|
- test/helper.rb
|
85
81
|
- test/test_github_cloner.rb
|
86
82
|
has_rdoc: true
|
@@ -97,7 +93,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
97
93
|
requirements:
|
98
94
|
- - ">="
|
99
95
|
- !ruby/object:Gem::Version
|
100
|
-
hash:
|
96
|
+
hash: -881534509
|
101
97
|
segments:
|
102
98
|
- 0
|
103
99
|
version: "0"
|
data/pkg/github_cloner-0.1.gem
DELETED
Binary file
|
data/pkg/github_cloner-0.2.gem
DELETED
Binary file
|
data/pkg/github_cloner-0.3.0.gem
DELETED
Binary file
|
data/pkg/github_cloner-0.3.1.gem
DELETED
Binary file
|