alfred_git 0.1.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.
- checksums.yaml +7 -0
- data/.gitignore +4 -0
- data/Gemfile +4 -0
- data/LICENSE +21 -0
- data/README.md +102 -0
- data/Rakefile.rb +2 -0
- data/alfred.gemspec +26 -0
- data/bin/alfred_git +9 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/lib/alfred_git/version.rb +3 -0
- data/lib/alfred_git.rb +208 -0
- metadata +98 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 127a29a45aeb9d4c99b537dd79b6b54fa042c51c
|
4
|
+
data.tar.gz: 0d201b61f4e64c304331a8bb7318164bb9ab1b33
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: c873b2eeb4c41ef0acc08a33a862e6c64150dee0cc0a4f93799cc2e6e4cbb40ab580792c1d736b8a9b1a15376f2e842a5ddeead3dac380d6a4ac268f518f478e
|
7
|
+
data.tar.gz: 302ae66c3c6157cb4fc4692d9a6cf38c74358f2ee92a70fbfef4fd725f8a092580b055657d14b5c7674f39e117c5c7bdd96a9bcc8bc80006265f49301a0bcbf2
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2016 iamsellek
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,102 @@
|
|
1
|
+
# AlfredGit
|
2
|
+
Helps you handle multiple git repos more quickly and easily.
|
3
|
+
|
4
|
+
## Longer Description
|
5
|
+
Guys. We live in 2016. When Marty visited the future, he now visited *last
|
6
|
+
year.* Cars are now out there driving. *Themselves*. We are *half a
|
7
|
+
century* removed from sending a man to another celestial body and without even
|
8
|
+
blowing him up in the process. Why on Earth (heh), then, do I need to cd into
|
9
|
+
every single repo I'm working with on a project and type individual git commands
|
10
|
+
in every one of them?
|
11
|
+
|
12
|
+
You know, some guy back in the 20s had a similar question. Why did he have to
|
13
|
+
do all this stupid 'math' crap by hand? And do you know what he did? He punched
|
14
|
+
math in the face and invented freaking computers (I don't know my computer
|
15
|
+
history very well). I...well, to be honest, I'm doing something a tad less
|
16
|
+
monumental, but I am that man. A modern what's-his-name-you-know-the-guy-who-
|
17
|
+
hated-math-and-invented-computers-if-that-story-is-even-real(-it's-not).
|
18
|
+
|
19
|
+
Enter AlfredGit, named after a certain famous billionaire's butler. AlfredGit does
|
20
|
+
those stupid menial typing tasks for you. Why? Because you're freaking Batman
|
21
|
+
and Batman doesn't have time to sit there cd-ing into 12 different repo
|
22
|
+
directories and issuing a `git pull` in every single one of them. He's too
|
23
|
+
busy out there punching...uh...bugs and...feature requests. In the face (this
|
24
|
+
analogy is quickly falling apart). So grab AlfredGit and say goodbye to
|
25
|
+
spending 20% of your day typing git commands in 140 different repos like a
|
26
|
+
pleb. This, guys. This is the future.
|
27
|
+
|
28
|
+
# Installation
|
29
|
+
|
30
|
+
I'd recommend holding off on this for right now, as I'm planning on gem-ifying
|
31
|
+
this soon enough. Once that's done, an install will be as easy as typing `gem
|
32
|
+
install alfred` or something similar. Pretty sure someone already took that
|
33
|
+
gem name even though their app doesn't even compare and doesn't deserve the
|
34
|
+
moniker.
|
35
|
+
|
36
|
+
# Use
|
37
|
+
|
38
|
+
I've tried to make the command syntax as intuitive as possible. Essentially,
|
39
|
+
you'll send in a few parameters (the exact number of parameters required
|
40
|
+
changes based on what git command you need to run - you can't run a `git
|
41
|
+
checkout` without a branch name, for instance) separated by spaces; the repos
|
42
|
+
you want to work with *always* come last and will also be separated by spaces.
|
43
|
+
Want to do all of the repos, but don't want to type them all out? Of course
|
44
|
+
you do! Why else would you be using this app? Just run AlfredGit with the word
|
45
|
+
'all' as your last parameter.
|
46
|
+
|
47
|
+
AlfredGit comes packaged with the most common git commands built in, but also
|
48
|
+
allows you to send custom commands! If your first parameter doesn't match
|
49
|
+
any of the built-in commands, the first parameter itself will be the command
|
50
|
+
that is run! Simple! Think another command warrants being on this list?
|
51
|
+
Email me and I'll consider adding it!
|
52
|
+
|
53
|
+
And with that, we come to the built-in commands. Here are the AlfredGit commands
|
54
|
+
followed by a description of what they run. Most of these should be intuitive.
|
55
|
+
|
56
|
+
* `pull` - Runs a `git pull`
|
57
|
+
* `push` - Runs a `git push`
|
58
|
+
* `checkout second_parameter` - runs a `git checkout second_parameter`
|
59
|
+
* `commit second_parameter` - Runs a `git commit -m second_parameter`
|
60
|
+
* `status` - Runs a `git status`
|
61
|
+
* `branch` or `branches` - Lists the branches your repos currently have
|
62
|
+
checked out.
|
63
|
+
|
64
|
+
# Quick Example
|
65
|
+
Here's a quick example of how it works!
|
66
|
+
|
67
|
+
Want to pull repos 1, 2, and 3? Easy!
|
68
|
+
|
69
|
+
`> alfred_git pull repo_1 repo_2 repo_3`
|
70
|
+
|
71
|
+
What about pulling everything?
|
72
|
+
|
73
|
+
`> alfred_git pull all`
|
74
|
+
|
75
|
+
How about checking out a branch on multiple repos at once?
|
76
|
+
|
77
|
+
`> alfred_git checkout branch_name repo_1 repo_2`
|
78
|
+
|
79
|
+
See? Intuitive! Simple! Batman!
|
80
|
+
|
81
|
+
## License
|
82
|
+
The MIT License (MIT)
|
83
|
+
|
84
|
+
Copyright (c) 2016 Chris Sellek
|
85
|
+
|
86
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
87
|
+
of this software and associated documentation files (the "Software"), to deal
|
88
|
+
in the Software without restriction, including without limitation the rights
|
89
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
90
|
+
copies of the Software, and to permit persons to whom the Software is
|
91
|
+
furnished to do so, subject to the following conditions:
|
92
|
+
|
93
|
+
The above copyright notice and this permission notice shall be included in all
|
94
|
+
copies or substantial portions of the Software.
|
95
|
+
|
96
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
97
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
98
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
99
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
100
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
101
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
102
|
+
SOFTWARE.
|
data/Rakefile.rb
ADDED
data/alfred.gemspec
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'alfred_git/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = 'alfred_git'
|
8
|
+
spec.version = AlfredGit::VERSION
|
9
|
+
spec.authors = ['Chris Sellek']
|
10
|
+
spec.email = ['iamsellek@gmail.com']
|
11
|
+
|
12
|
+
spec.summary = 'Helps you handle multiple git repos more quickly and easily.'
|
13
|
+
spec.description = 'See GitHub page for longer description.'
|
14
|
+
spec.homepage = 'https://github.com/iamsellek/alfred_git'
|
15
|
+
spec.license = 'MIT'
|
16
|
+
|
17
|
+
spec.files = `git ls-files`.split($/)
|
18
|
+
spec.executables = ['alfred_git']
|
19
|
+
spec.test_files = []
|
20
|
+
spec.require_paths = ['lib']
|
21
|
+
|
22
|
+
spec.add_dependency 'rainbow'
|
23
|
+
|
24
|
+
spec.add_development_dependency 'bundler', '~> 1.12'
|
25
|
+
spec.add_development_dependency 'rake', '~> 10.0'
|
26
|
+
end
|
data/bin/alfred_git
ADDED
data/bin/console
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "bundler/setup"
|
4
|
+
require "alfred_git"
|
5
|
+
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
8
|
+
|
9
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
+
# require "pry"
|
11
|
+
# Pry.start
|
12
|
+
|
13
|
+
require "irb"
|
14
|
+
IRB.start
|
data/bin/setup
ADDED
data/lib/alfred_git.rb
ADDED
@@ -0,0 +1,208 @@
|
|
1
|
+
require 'YAML'
|
2
|
+
require 'rainbow'
|
3
|
+
|
4
|
+
module AlfredGit
|
5
|
+
class AlfredGit
|
6
|
+
|
7
|
+
def initialize
|
8
|
+
set_app_directory
|
9
|
+
config unless File.exists?("#{@app_directory}/lib/config.yaml")
|
10
|
+
config_yaml = YAML.load_file("#{@app_directory}/lib/config.yaml")
|
11
|
+
|
12
|
+
@repo_locations = config_yaml['repos']
|
13
|
+
@name = config_yaml['name'].nil? ? 'Wayne' : config_yaml['name']
|
14
|
+
@gender = config_yaml['gender'].nil? ? 'sir' : config_yaml['gender']
|
15
|
+
end
|
16
|
+
|
17
|
+
def alfred(arguments)
|
18
|
+
@arguments = arguments
|
19
|
+
command = command_to_git_command
|
20
|
+
repos = repos_string_to_array
|
21
|
+
|
22
|
+
repos.each do |repo|
|
23
|
+
lines_pretty_print Rainbow("Repo #{repo}:").yellow
|
24
|
+
bash(@repo_locations[repo], command)
|
25
|
+
|
26
|
+
single_space
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def command_to_git_command
|
31
|
+
command = ''
|
32
|
+
|
33
|
+
case @arguments[0]
|
34
|
+
when nil, ''
|
35
|
+
lines_pretty_print Rainbow('I need a command to run, Master Wayne.').red
|
36
|
+
|
37
|
+
abort
|
38
|
+
when 'pull'
|
39
|
+
command = 'git pull'
|
40
|
+
@arguments.delete_at(0)
|
41
|
+
when 'push'
|
42
|
+
command = 'git push'
|
43
|
+
@arguments.delete_at(0)
|
44
|
+
when 'checkout'
|
45
|
+
if second_argument_missing?
|
46
|
+
lines_pretty_print Rainbow('I need a branch name to execute the \'checkout\' command, Master '\
|
47
|
+
'Wayne.').red
|
48
|
+
|
49
|
+
abort
|
50
|
+
end
|
51
|
+
|
52
|
+
command = "git checkout #{@arguments[1]}"
|
53
|
+
|
54
|
+
@arguments.delete_at(0)
|
55
|
+
@arguments.delete_at(0)
|
56
|
+
when 'commit'
|
57
|
+
if second_argument_missing?
|
58
|
+
lines_pretty_print Rainbow('I need a commit message to execute the \'commit\' command, Master '\
|
59
|
+
'Wayne.').red
|
60
|
+
|
61
|
+
abort
|
62
|
+
end
|
63
|
+
|
64
|
+
command = %Q[git commit -m "#{@arguments[1]}"]
|
65
|
+
when 'status'
|
66
|
+
command = 'git status'
|
67
|
+
@arguments.delete_at(0)
|
68
|
+
when 'branches', 'branch'
|
69
|
+
command = 'git rev-parse --abbrev-ref HEAD'
|
70
|
+
@arguments.delete_at(0)
|
71
|
+
else
|
72
|
+
command = @arguments[0] # Allow users to send any command to all repos.
|
73
|
+
@arguments.delete_at(0)
|
74
|
+
end
|
75
|
+
|
76
|
+
command
|
77
|
+
end
|
78
|
+
|
79
|
+
# All other arguments are deleted before we get here, so this should be just the repo list.
|
80
|
+
def repos_string_to_array
|
81
|
+
if @arguments[0].nil?|| @arguments[0] == ''
|
82
|
+
lines_pretty_print Rainbow('I need at least one repository to work with, Master Wayne.').red
|
83
|
+
|
84
|
+
abort
|
85
|
+
elsif @arguments[0] == 'all'
|
86
|
+
return @repo_locations.keys
|
87
|
+
else
|
88
|
+
return @arguments
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
def config
|
93
|
+
config_file = File.open("#{@app_directory}/lib/config.yaml", 'w')
|
94
|
+
|
95
|
+
lines_pretty_print 'Good evening, Master Wayne. Thank you for utilizing my abilities. Please enter your '\
|
96
|
+
'last name if you\'d like me to address you as something other than Wayne.'
|
97
|
+
lines_pretty_print Rainbow('(Just hit enter to stick with \'Master Wayne\'.)').yellow
|
98
|
+
|
99
|
+
name = STDIN.gets.strip!
|
100
|
+
|
101
|
+
single_space
|
102
|
+
|
103
|
+
lines_pretty_print 'Thank you, sir. You...are a sir, correct?'
|
104
|
+
|
105
|
+
gender_set = false
|
106
|
+
|
107
|
+
until gender_set
|
108
|
+
gender = STDIN.gets.strip!
|
109
|
+
|
110
|
+
single_space
|
111
|
+
|
112
|
+
if gender == 'yes' || gender == 'y'
|
113
|
+
gender = 'sir'
|
114
|
+
gender_set = true
|
115
|
+
elsif gender == 'no' || gender == 'n'
|
116
|
+
gender = 'madam'
|
117
|
+
gender_set = true
|
118
|
+
else
|
119
|
+
lines_pretty_print "Very funny, Master #{name}."
|
120
|
+
lines_pretty_print Rainbow('Please input either \'yes\' or \'no\'.').yellow
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
lines_pretty_print "Yes, of course. My apologies. Please do not take offense, #{gender}. I am, after "\
|
125
|
+
'all, a simple computer program. Don\'t have eyes, you see. Now, let\'s gather a '\
|
126
|
+
'list of the code repositories you work with, shall we?'
|
127
|
+
|
128
|
+
single_space
|
129
|
+
|
130
|
+
repos = {}
|
131
|
+
done = false
|
132
|
+
repo_count = 0
|
133
|
+
|
134
|
+
until done do
|
135
|
+
first = repo_count > 0 ? 'next' : 'first'
|
136
|
+
|
137
|
+
lines_pretty_print "What is the 'friendly' name you'd like to give your #{first} repository? This is the "\
|
138
|
+
'name you will type when sending me commands. If you are done adding them, please '\
|
139
|
+
'enter \'x211\' as your input instead.'
|
140
|
+
|
141
|
+
repo_name = STDIN.gets.strip!
|
142
|
+
|
143
|
+
if repo_name == 'x211'
|
144
|
+
done = true
|
145
|
+
single_space
|
146
|
+
next
|
147
|
+
end
|
148
|
+
|
149
|
+
single_space
|
150
|
+
|
151
|
+
lines_pretty_print "Thank you, #{gender}. Now, where is that repository? Please paste the full path."
|
152
|
+
|
153
|
+
repo_path = STDIN.gets.strip!
|
154
|
+
|
155
|
+
single_space
|
156
|
+
|
157
|
+
repos[repo_name] = repo_path
|
158
|
+
repo_count += 1
|
159
|
+
|
160
|
+
lines_pretty_print Rainbow("I've added that repository successfully, #{gender}!").green
|
161
|
+
|
162
|
+
single_space
|
163
|
+
end
|
164
|
+
|
165
|
+
YAML.dump({ 'name' => name, 'gender' => gender, 'repos' => repos }, config_file)
|
166
|
+
config_file.close
|
167
|
+
|
168
|
+
lines_pretty_print "Thank you for helping me set things up, Master #{name}. Feel free to run me whenever "\
|
169
|
+
'you need.'
|
170
|
+
|
171
|
+
abort
|
172
|
+
end
|
173
|
+
|
174
|
+
def second_argument_missing?
|
175
|
+
@arguments[1].nil? || @arguments[1] == ''
|
176
|
+
end
|
177
|
+
|
178
|
+
def bash(directory, command)
|
179
|
+
# Dir.chdir ensures all bash commands are being run from the correct
|
180
|
+
# directory.
|
181
|
+
Dir.chdir(directory) { system "#{command}" }
|
182
|
+
end
|
183
|
+
|
184
|
+
def set_app_directory
|
185
|
+
@app_directory = File.expand_path(File.dirname(__FILE__)).chomp('/lib')
|
186
|
+
end
|
187
|
+
|
188
|
+
def lines_pretty_print(string)
|
189
|
+
lines = string.scan(/\S.{0,70}\S(?=\s|$)|\S+/)
|
190
|
+
|
191
|
+
lines.each { |line| puts line }
|
192
|
+
end
|
193
|
+
|
194
|
+
def single_space
|
195
|
+
puts ''
|
196
|
+
end
|
197
|
+
|
198
|
+
def double_space
|
199
|
+
puts "\n\n"
|
200
|
+
end
|
201
|
+
|
202
|
+
def surround_by_double_space(string)
|
203
|
+
double_space
|
204
|
+
lines_pretty_print(string)
|
205
|
+
double_space
|
206
|
+
end
|
207
|
+
end
|
208
|
+
end
|
metadata
ADDED
@@ -0,0 +1,98 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: alfred_git
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Chris Sellek
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-05-17 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rainbow
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: bundler
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.12'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.12'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '10.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '10.0'
|
55
|
+
description: See GitHub page for longer description.
|
56
|
+
email:
|
57
|
+
- iamsellek@gmail.com
|
58
|
+
executables:
|
59
|
+
- alfred_git
|
60
|
+
extensions: []
|
61
|
+
extra_rdoc_files: []
|
62
|
+
files:
|
63
|
+
- ".gitignore"
|
64
|
+
- Gemfile
|
65
|
+
- LICENSE
|
66
|
+
- README.md
|
67
|
+
- Rakefile.rb
|
68
|
+
- alfred.gemspec
|
69
|
+
- bin/alfred_git
|
70
|
+
- bin/console
|
71
|
+
- bin/setup
|
72
|
+
- lib/alfred_git.rb
|
73
|
+
- lib/alfred_git/version.rb
|
74
|
+
homepage: https://github.com/iamsellek/alfred_git
|
75
|
+
licenses:
|
76
|
+
- MIT
|
77
|
+
metadata: {}
|
78
|
+
post_install_message:
|
79
|
+
rdoc_options: []
|
80
|
+
require_paths:
|
81
|
+
- lib
|
82
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
83
|
+
requirements:
|
84
|
+
- - ">="
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
version: '0'
|
87
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
88
|
+
requirements:
|
89
|
+
- - ">="
|
90
|
+
- !ruby/object:Gem::Version
|
91
|
+
version: '0'
|
92
|
+
requirements: []
|
93
|
+
rubyforge_project:
|
94
|
+
rubygems_version: 2.0.14.1
|
95
|
+
signing_key:
|
96
|
+
specification_version: 4
|
97
|
+
summary: Helps you handle multiple git repos more quickly and easily.
|
98
|
+
test_files: []
|