grb 0.2.3
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/Manifest +5 -0
- data/Rakefile +14 -0
- data/bin/grb +28 -0
- data/grb.gemspec +32 -0
- data/lib/grb.rb +110 -0
- data/lib/version.rb +3 -0
- metadata +67 -0
data/Manifest
ADDED
data/Rakefile
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rake'
|
3
|
+
require 'echoe'
|
4
|
+
require File.dirname(__FILE__) + '/lib/version'
|
5
|
+
|
6
|
+
Echoe.new('grb', Version::VERSION) do |p|
|
7
|
+
p.description = "grb"
|
8
|
+
p.url = "http://www.zhangjinzhu.com"
|
9
|
+
p.author = "Jinzhu Zhang"
|
10
|
+
p.email = "wosmvp@gmail.com"
|
11
|
+
p.ignore_pattern = ["TODO"]
|
12
|
+
p.rubyforge_name = "grb"
|
13
|
+
end
|
14
|
+
|
data/bin/grb
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# Copyright (c) 2009. GPL3.
|
4
|
+
# Author: Zhang Jinzhu
|
5
|
+
|
6
|
+
$LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__) + "/../lib"))
|
7
|
+
|
8
|
+
# easy debug
|
9
|
+
if ARGV.delete('--debug')
|
10
|
+
['rubygems','ruby-debug'].each {|x| require x}
|
11
|
+
else
|
12
|
+
def debugger;end
|
13
|
+
end
|
14
|
+
|
15
|
+
require "version"
|
16
|
+
require "grb"
|
17
|
+
|
18
|
+
abort('Version: ' + Version::VERSION) if ARGV.delete('--version') || ARGV.delete('-v')
|
19
|
+
|
20
|
+
EXPLAIN = ARGV.delete('--explain') || ARGV.delete('-e')
|
21
|
+
|
22
|
+
opt = {
|
23
|
+
:command => ARGV[0] || 'push',
|
24
|
+
:branch => branch = (ARGV[1] || Grb.get_current_branch),
|
25
|
+
:branch_ => ARGV[2] || branch,
|
26
|
+
}
|
27
|
+
|
28
|
+
Grb.parse(opt)
|
data/grb.gemspec
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
Gem::Specification.new do |s|
|
4
|
+
s.name = %q{grb}
|
5
|
+
s.version = "0.2.3"
|
6
|
+
|
7
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
8
|
+
s.authors = ["Jinzhu Zhang"]
|
9
|
+
s.date = %q{2009-10-07}
|
10
|
+
s.default_executable = %q{grb}
|
11
|
+
s.description = %q{grb}
|
12
|
+
s.email = %q{wosmvp@gmail.com}
|
13
|
+
s.executables = ["grb"]
|
14
|
+
s.extra_rdoc_files = ["bin/grb", "lib/version.rb", "lib/grb.rb"]
|
15
|
+
s.files = ["bin/grb", "Rakefile", "lib/version.rb", "lib/grb.rb", "Manifest", "grb.gemspec"]
|
16
|
+
s.homepage = %q{http://www.zhangjinzhu.com}
|
17
|
+
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Grb", "--main", "README.rdoc"]
|
18
|
+
s.require_paths = ["lib"]
|
19
|
+
s.rubyforge_project = %q{grb}
|
20
|
+
s.rubygems_version = %q{1.3.3}
|
21
|
+
s.summary = %q{grb}
|
22
|
+
|
23
|
+
if s.respond_to? :specification_version then
|
24
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
25
|
+
s.specification_version = 3
|
26
|
+
|
27
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
28
|
+
else
|
29
|
+
end
|
30
|
+
else
|
31
|
+
end
|
32
|
+
end
|
data/lib/grb.rb
ADDED
@@ -0,0 +1,110 @@
|
|
1
|
+
class Grb
|
2
|
+
GIT = ENV['GRB_GIT'] || 'git'
|
3
|
+
ORIGIN = ENV['GRB_ORIGIN'] || 'origin'
|
4
|
+
|
5
|
+
COMMANDS = {
|
6
|
+
:new => {
|
7
|
+
:desc => "=> create new branch `branch`\ngrb new [branch] [--explain]",
|
8
|
+
:commands => [
|
9
|
+
'"#{GIT} push #{origin} #{current_branch}:refs/heads/#{branch}"',
|
10
|
+
'"#{GIT} fetch #{origin}"',
|
11
|
+
'"#{GIT} branch --track #{branch} #{origin}/#{branch}"',
|
12
|
+
'"#{GIT} checkout #{branch}"'
|
13
|
+
]
|
14
|
+
},
|
15
|
+
|
16
|
+
:push => {
|
17
|
+
:desc => "=> push branch `branch`, default current_branch\ngrb push [branch] [--explain]",
|
18
|
+
:commands => [
|
19
|
+
'"#{GIT} push #{origin} #{branch}:refs/heads/#{branch}"',
|
20
|
+
'"#{GIT} fetch #{origin}"',
|
21
|
+
'"#{GIT} config branch.#{branch}.remote #{origin}"',
|
22
|
+
'"#{GIT} config branch.#{branch}.merge refs/heads/#{branch}"',
|
23
|
+
'"#{GIT} checkout #{branch}"'
|
24
|
+
]
|
25
|
+
},
|
26
|
+
|
27
|
+
:mv => {
|
28
|
+
:desc => "=> rename `branch1` to `branch2`\ngrb mv [branch1] [branch2] [--explain]\n=> rename current branch to `branch`\ngrb mv branch [--explain]",
|
29
|
+
:commands => [
|
30
|
+
' if(branch != branch_)
|
31
|
+
"#{GIT} push #{origin} #{branch}:refs/heads/#{branch_}
|
32
|
+
#{GIT} fetch #{origin}
|
33
|
+
#{GIT} branch --track #{branch_} #{origin}/#{branch_}
|
34
|
+
#{GIT} checkout #{branch_}
|
35
|
+
#{GIT} branch -d #{branch}
|
36
|
+
#{GIT} push #{origin} :refs/heads/#{branch}"
|
37
|
+
else
|
38
|
+
"#{GIT} push #{origin} #{current_branch}:refs/heads/#{branch}
|
39
|
+
#{GIT} fetch #{origin}
|
40
|
+
#{GIT} branch --track #{branch} #{origin}/#{branch}
|
41
|
+
#{GIT} checkout #{branch}
|
42
|
+
#{GIT} push #{origin} :refs/heads/#{current_branch}
|
43
|
+
#{GIT} branch -d #{current_branch}"
|
44
|
+
end'
|
45
|
+
]
|
46
|
+
},
|
47
|
+
|
48
|
+
:rm => {
|
49
|
+
:desc => "=> delete branch `branch`,default current_branch\ngrb rm [branch] [--explain]",
|
50
|
+
:commands => [
|
51
|
+
'"#{GIT} push #{origin} :refs/heads/#{branch}"',
|
52
|
+
'"#{GIT} checkout master" if current_branch == branch',
|
53
|
+
'"#{GIT} branch -d #{branch}"'
|
54
|
+
]
|
55
|
+
},
|
56
|
+
|
57
|
+
:pull => {
|
58
|
+
:desc => "=> pull branch `branch`,default current_branch\ngrb pull [branch] [--explain]",
|
59
|
+
:commands => [
|
60
|
+
'"#{GIT} fetch #{origin}"',
|
61
|
+
'if local_branches.include?(branch)
|
62
|
+
"#{GIT} config branch.#{branch}.remote #{origin}\n" +
|
63
|
+
"#{GIT} config branch.#{branch}.merge refs/heads/#{branch}"
|
64
|
+
else
|
65
|
+
"#{GIT} branch --track #{branch} #{origin}/#{branch}"
|
66
|
+
end',
|
67
|
+
'"#{GIT} checkout #{branch}" if current_branch != branch',
|
68
|
+
'"#{GIT} merge #{origin}/#{branch}"',
|
69
|
+
]
|
70
|
+
},
|
71
|
+
|
72
|
+
:track => {
|
73
|
+
:desc => "=> track branch\ngit track `branch` [--explain]",
|
74
|
+
:commands => [
|
75
|
+
'"#{GIT} fetch #{origin}"',
|
76
|
+
'"#{GIT} branch --track #{branch} origin/#{branch}"',
|
77
|
+
'"#{GIT} checkout #{branch}"'
|
78
|
+
]
|
79
|
+
}
|
80
|
+
}
|
81
|
+
|
82
|
+
def self.parse(opt)
|
83
|
+
if COMMANDS.keys.include?(opt[:command].to_sym)
|
84
|
+
current_branch,branch,branch_,origin = get_current_branch,opt[:branch],opt[:branch_],ORIGIN
|
85
|
+
|
86
|
+
COMMANDS[opt[:command].to_sym][:commands].map {|x| exec_cmd(eval(x))}
|
87
|
+
else
|
88
|
+
help
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
def self.exec_cmd(str)
|
93
|
+
return true unless str
|
94
|
+
puts("\e[031m" + str.gsub(/^\s*/,'') + "\e[0m")
|
95
|
+
system("#{str}") unless EXPLAIN
|
96
|
+
end
|
97
|
+
|
98
|
+
def self.get_current_branch
|
99
|
+
(`git branch 2> /dev/null | grep '^\*'`).gsub(/\W/,'')
|
100
|
+
end
|
101
|
+
|
102
|
+
def self.local_branches
|
103
|
+
(`git branch -l`).split(/\n/).map{|x| x.gsub(/\W/,'')}
|
104
|
+
end
|
105
|
+
|
106
|
+
def self.help(*args)
|
107
|
+
puts "USAGE:"
|
108
|
+
COMMANDS.values.map {|x| puts x[:desc].gsub(/^(\W.*)$/,"\e[31m" + '\1' + "\e[0m").gsub(/^(\w.*)$/,' $ \1')}
|
109
|
+
end
|
110
|
+
end
|
data/lib/version.rb
ADDED
metadata
ADDED
@@ -0,0 +1,67 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: grb
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.2.3
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Jinzhu Zhang
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2009-10-07 00:00:00 +08:00
|
13
|
+
default_executable: grb
|
14
|
+
dependencies: []
|
15
|
+
|
16
|
+
description: grb
|
17
|
+
email: wosmvp@gmail.com
|
18
|
+
executables:
|
19
|
+
- grb
|
20
|
+
extensions: []
|
21
|
+
|
22
|
+
extra_rdoc_files:
|
23
|
+
- bin/grb
|
24
|
+
- lib/version.rb
|
25
|
+
- lib/grb.rb
|
26
|
+
files:
|
27
|
+
- bin/grb
|
28
|
+
- Rakefile
|
29
|
+
- lib/version.rb
|
30
|
+
- lib/grb.rb
|
31
|
+
- Manifest
|
32
|
+
- grb.gemspec
|
33
|
+
has_rdoc: true
|
34
|
+
homepage: http://www.zhangjinzhu.com
|
35
|
+
licenses: []
|
36
|
+
|
37
|
+
post_install_message:
|
38
|
+
rdoc_options:
|
39
|
+
- --line-numbers
|
40
|
+
- --inline-source
|
41
|
+
- --title
|
42
|
+
- Grb
|
43
|
+
- --main
|
44
|
+
- README.rdoc
|
45
|
+
require_paths:
|
46
|
+
- lib
|
47
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
48
|
+
requirements:
|
49
|
+
- - ">="
|
50
|
+
- !ruby/object:Gem::Version
|
51
|
+
version: "0"
|
52
|
+
version:
|
53
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
54
|
+
requirements:
|
55
|
+
- - ">="
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
version: "1.2"
|
58
|
+
version:
|
59
|
+
requirements: []
|
60
|
+
|
61
|
+
rubyforge_project: grb
|
62
|
+
rubygems_version: 1.3.5
|
63
|
+
signing_key:
|
64
|
+
specification_version: 3
|
65
|
+
summary: grb
|
66
|
+
test_files: []
|
67
|
+
|