GitFlone 0.0.2

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 (4) hide show
  1. checksums.yaml +7 -0
  2. data/bin/gitFlone +2 -0
  3. data/lib/gitFlone.rb +49 -0
  4. metadata +46 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: fa82c1cba7ab4d31a6226af89b167365f387d195
4
+ data.tar.gz: 1c19b6ad04d384413177df0b1db4fd99838aef8c
5
+ SHA512:
6
+ metadata.gz: d863493660fcb0e689cb472e0cdfdf99fd779a7b9e6254e2cfd6d2bb72f56c29595f58965241ab25ef953ff5338cd559013c059ae58b6949151591648f99b54a
7
+ data.tar.gz: 1641145da8c6c635d3d2215a0d1e610312829aef79dc954a9d4368b4360058d8fa96441b2fd8f2b133a4411eca118ad706a75a7e5a0f7e0316fda89266f1c51a
data/bin/gitFlone ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env ruby
2
+ require 'gitFlone'
data/lib/gitFlone.rb ADDED
@@ -0,0 +1,49 @@
1
+ def fork(user, source,repoName)
2
+ shell %Q[curl -u '#{user}' https://api.github.com/repos/#{source}/#{repoName}/forks -d '{}']
3
+ end
4
+
5
+ def clone (user,repoName, branch="Feature")
6
+ shell"git clone git@github.com:#{user}/#{repoName}.git"
7
+ Dir.chdir("#{repoName}")
8
+ shell %Q[git checkout -b #{branch}]
9
+ shell %Q[git push origin #{branch}]
10
+ end
11
+
12
+ def pull (dummycommit="")
13
+ if dummycommit.length > 0
14
+ shell %Q[touch #{dummycommit}]
15
+ shell %Q[git add #{dummycommit}]
16
+ shell %Q[git commit -am "Initial #{@branch} commit"]
17
+ shell %Q[git push origin #{@branch}]
18
+ end
19
+ shell %Q[open https://github.com/#{@user}/#{@repoName}/compare/#{@branch}?expand=1]
20
+ end
21
+
22
+ def shell (command)
23
+ puts `#{command}`
24
+ end
25
+
26
+ def checkArg (pattern, string)
27
+ values = string.scan(pattern).flatten.uniq
28
+ raise ArgumentError, "Argument is invalid: #{string}" unless values.length==1
29
+ #puts "Found #{values.first}"
30
+ return values.first
31
+ end
32
+
33
+ def run
34
+ @user = ARGV[0]
35
+ @gitdirectory = ARGV[1].split(":").last
36
+ @branch = ARGV[2].nil? ? "Feature" : ARGV[2]
37
+ @source = checkArg(%r[(?<=:)(\S+)(?=\/)], ARGV[1])
38
+ @repoName = checkArg(%r[(?<=\/)(\S+)(?=\.)],ARGV[1])
39
+
40
+ fork(@user,@source,@repoName)
41
+ clone(@user,@repoName,@branch)
42
+
43
+ puts "Create an initial commit for pull request?"
44
+ puts "If so, provide a value for dummy pull request or leave blank to skip:"
45
+ dummy = STDIN.gets.chomp
46
+ pull(dummy)
47
+ end
48
+
49
+ run
metadata ADDED
@@ -0,0 +1,46 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: GitFlone
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Kevin Chang
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-02-14 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Fork a github repository, the clone it locally with a new branch
14
+ email: kevin.w.chang@gmail.com
15
+ executables:
16
+ - gitFlone
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - bin/gitFlone
21
+ - lib/gitFlone.rb
22
+ homepage: http://rubygems.org/gems/GitFlone
23
+ licenses:
24
+ - MIT
25
+ metadata: {}
26
+ post_install_message:
27
+ rdoc_options: []
28
+ require_paths:
29
+ - lib
30
+ required_ruby_version: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - '>='
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ required_rubygems_version: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - '>='
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ requirements: []
41
+ rubyforge_project:
42
+ rubygems_version: 2.2.1
43
+ signing_key:
44
+ specification_version: 4
45
+ summary: Fork & clone a repository from the Terminal
46
+ test_files: []