gitswitch 0.1.2 → 0.1.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/README.rdoc CHANGED
@@ -1,35 +1,50 @@
1
1
  = gitswitch
2
2
 
3
- Easily switch your current git user info. Handy for work and personal repositories. Also might come in handy for switching between users while pair programming.
3
+ Easily set/switch your current git user info for a git repo .git/config or your global ~/.gitconfig file.
4
+
5
+ This gem should come in handy if you have work and personal repositories. It also might help with switching between users while pair programming.
4
6
 
5
7
  Would you rather type "git config user.email 'me@work.com'", etc. or type "gitswitch -r work"? If you answered the latter, check out this gem.
6
8
 
7
9
  == Install
8
10
 
9
- gem install gitswitch
11
+ # gem install gitswitch
10
12
 
11
13
  == Usage
12
14
 
13
15
  Simply run the script to establish a default ~/.gitswitch file using the git info you already have in your ~/.gitconfig file
14
- gitswitch
16
+ # gitswitch
17
+
18
+ Gitswitch users file ~/.gitswitch not found. Would you like to create one? (y/n): y
19
+ Adding your global .gitconfig user info to the "default" tag...
20
+ Current git user information:
21
+ Name: Joe Alba
22
+ E-mail: joe@home.com
15
23
 
16
24
  Add a new git user tag
17
- gitswitch -a
25
+ # gitswitch -a
26
+
27
+ Enter a tag to describe this git user entry: work
28
+ E-mail address: jalba@work.com
29
+ Name (ENTER to use "Joe Alba"): Joseph M. Alba
18
30
 
19
31
  Set specific user info to your current git repository by updating .git/config
20
- gitswitch -r work # Update .git/config with your 'work' git user info
21
- gitswitch -r # User info from your 'default' tag is used if you don't specify a tag
32
+ # gitswitch -r work # Update .git/config with your 'work' git user info
33
+ Switching git user to "work" tag for the current repository (Joseph M. Alba <jalba@work.com>).
34
+
35
+ # gitswitch -r # User info from your 'default' tag is used if you don't specify a tag
36
+ Switching git user to "default" tag for the current repository (Joe Alba <joe@home.com>).
22
37
 
23
38
  List all the gitswitch user tags/info you have stored
24
- gitswitch -l
39
+ # gitswitch -l
25
40
 
26
41
  Current git user options --
27
- default:
28
- Name: Joe Alba
29
- E-mail: joe@home.com
30
- work:
31
- Name: Joe Alba
32
- E-mail: jalba@work.com
42
+ default:
43
+ Name: Joe Alba
44
+ E-mail: joe@home.com
45
+ work:
46
+ Name: Joseph M. Alba
47
+ E-mail: jalba@work.com
33
48
 
34
49
  == Copyright
35
50
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.2
1
+ 0.1.3
data/gitswitch.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{gitswitch}
8
- s.version = "0.1.2"
8
+ s.version = "0.1.3"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Joe Alba"]
12
- s.date = %q{2010-09-04}
12
+ s.date = %q{2010-09-05}
13
13
  s.default_executable = %q{gitswitch}
14
14
  s.description = %q{Do you write code for your employer and for yourself? Want to easily change the e-mail address associated with your commits for work and home repos? This gem might help you out.}
15
15
  s.email = %q{joe@joealba.com}
@@ -34,10 +34,6 @@ Gem::Specification.new do |s|
34
34
  s.require_paths = ["lib"]
35
35
  s.rubygems_version = %q{1.3.7}
36
36
  s.summary = %q{Easy git user switching}
37
- s.test_files = [
38
- "spec/gitswitch_spec.rb",
39
- "spec/spec_helper.rb"
40
- ]
41
37
 
42
38
  if s.respond_to? :specification_version then
43
39
  current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
data/lib/gitswitch.rb CHANGED
@@ -1,6 +1,5 @@
1
1
  require 'optparse'
2
2
  require 'yaml'
3
- #require 'escape'
4
3
 
5
4
  class GitSwitch
6
5
  VERSION_FILE = File.join File.dirname(__FILE__), "..", "VERSION.yml"
@@ -18,13 +17,17 @@ class GitSwitch
18
17
  @users = {}
19
18
  if File.exists? GITSWITCH_CONFIG_FILE
20
19
  @users = YAML::load_file GITSWITCH_CONFIG_FILE
21
- raise "Error loading .gitswitch file" if @users.nil?
20
+ if @users.nil?
21
+ puts "Error loading .gitswitch file"
22
+ exit
23
+ end
22
24
  else
23
25
  print "Gitswitch users file ~/.gitswitch not found. Would you like to create one? (y/n): "
24
26
  if gets.chomp =~ /^y/i
25
27
  create_gitswitch_file
26
28
  else
27
- puts "Ok, that's fine. Exiting." and exit
29
+ puts "Ok, that's fine. Exiting."
30
+ exit
28
31
  end
29
32
  end
30
33
  end
@@ -90,11 +93,11 @@ class GitSwitch
90
93
 
91
94
  # Create a .gitswitch file with the current user defaults
92
95
  def create_gitswitch_file
93
- user = get_global_git_user
96
+ user = get_git_user_info({:global => true})
94
97
  if user[:name].empty? && user[:email].empty?
95
98
  puts "ERROR: You must set up a default git user.name and user.email first."
96
99
  else
97
- puts "Adding your global git user info to the \"default\" tag..."
100
+ puts "Adding your global .gitconfig user info to the \"default\" tag..."
98
101
  set_gitswitch_entry('default', user[:email], user[:name])
99
102
  save_gitswitch_file
100
103
  end
@@ -123,10 +126,9 @@ class GitSwitch
123
126
 
124
127
 
125
128
  def get_user(tag)
126
- if @users.empty? || @users[tag].empty? || @users[tag][:email].to_s.empty?
127
- return false
129
+ if !@users.empty? && @users[tag] && !@users[tag].empty?
130
+ @users[tag]
128
131
  end
129
- @users[tag]
130
132
  end
131
133
 
132
134
 
@@ -143,10 +145,12 @@ class GitSwitch
143
145
  # ==== Parameters
144
146
  # * +tag+ - The tag associated with your desired git info in .gitswitch. Defaults to "default".
145
147
  def switch_global_user tag = "default"
146
- user = get_user(tag) or raise "ERROR: Could not find info for tag \"#{tag}\" in your .gitswitch file"
147
- puts "Switching git user to \"#{tag}\" tag..."
148
- git_config(user, {:global => true})
149
- # puts "ERROR: Could not find info for tag \"#{tag}\" in your .gitswitch file"
148
+ if user = get_user(tag)
149
+ puts "Switching your .gitconfig user info to \"#{tag}\" tag (#{user[:name]} <#{user[:email]}>)."
150
+ git_config(user, {:global => true})
151
+ else
152
+ puts "ERROR: Could not find info for tag \"#{tag}\" in your .gitswitch file"
153
+ end
150
154
  end
151
155
 
152
156
 
@@ -154,26 +158,33 @@ class GitSwitch
154
158
  # ==== Parameters
155
159
  # * +tag+ - The tag associated with your desired git info in .gitswitch. Defaults to "default".
156
160
  def switch_repo_user tag = "default"
157
- user = get_user(tag) or raise "ERROR: Could not find info for tag \"#{tag}\" in your .gitswitch file"
158
- puts "Switching git user to \"#{tag}\" tag for the current repository..."
159
- git_config(user) or raise "Could not set your repo"
160
- # puts "ERROR: Could not find info for tag \"#{tag}\" in your .gitswitch file"
161
+ ## TODO: See if we're actually in a git repo
162
+ if user = get_user(tag)
163
+ puts "Switching git user to \"#{tag}\" tag for the current repository (#{user[:name]} <#{user[:email]}>)."
164
+ git_config(user) or raise "Could not change the git user settings to your repository."
165
+ else
166
+ puts "ERROR: Could not find info for tag \"#{tag}\" in your .gitswitch file"
167
+ end
161
168
  end
162
169
 
163
170
 
164
171
  # Add a user entry to your .gitswitch file
165
172
  def add_gitswitch_entry
166
- print "What tag would you like to set to this git user? "
173
+ print "Enter a tag to describe this git user entry: "
167
174
  tag = gets.gsub(/\W+/,'')
175
+
176
+ if tag.empty?
177
+ puts "You must enter a short tag to describe the git user entry you would like to save."
178
+ exit
179
+ end
168
180
 
169
181
  print "E-mail address: "
170
182
  email = gets.chomp
171
183
 
172
- print "Name: (ENTER to use \"" + get_global_git_user()[:name] + "\") "
184
+ print "Name: (ENTER to use \"" + get_git_user_info({:global => true})[:name] + "\") "
173
185
  name = gets.chomp
174
- if name.empty?
175
- name = get_global_git_user()[:name]
176
- end
186
+ name = get_git_user_info({:global => true})[:name] if name.empty?
187
+
177
188
  set_gitswitch_entry(tag, email, name)
178
189
  end
179
190
 
@@ -190,7 +201,7 @@ class GitSwitch
190
201
 
191
202
  # Print active account information.
192
203
  def print_info
193
- current_git_user = get_current_git_user
204
+ current_git_user = get_git_user_info
194
205
  puts "Current git user information:\n"
195
206
  puts "Name: #{current_git_user[:name]}"
196
207
  puts "E-mail: #{current_git_user[:email]}"
@@ -212,20 +223,14 @@ class GitSwitch
212
223
  private
213
224
 
214
225
  # Show the current git user info
215
- def get_current_git_user
216
- {
217
- :name => %x(#{GIT_BIN} config --get user.name).to_s.chomp,
218
- :email => %x(#{GIT_BIN} config --get user.email).to_s.chomp
219
- }
220
- end
221
-
222
- # Show the global config git user info
223
- def get_global_git_user
226
+ def get_git_user_info(args = {})
227
+ git_args = 'config --get'
228
+ git_args += ' --global' if args[:global]
229
+
224
230
  {
225
- :name => %x(#{GIT_BIN} config --global --get user.name).to_s.chomp,
226
- :email => %x(#{GIT_BIN} config --global --get user.email).to_s.chomp
231
+ :name => %x(#{GIT_BIN} #{git_args} user.name).to_s.chomp,
232
+ :email => %x(#{GIT_BIN} #{git_args} user.email).to_s.chomp
227
233
  }
228
234
  end
229
-
230
235
 
231
236
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gitswitch
3
3
  version: !ruby/object:Gem::Version
4
- hash: 31
4
+ hash: 29
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 2
10
- version: 0.1.2
9
+ - 3
10
+ version: 0.1.3
11
11
  platform: ruby
12
12
  authors:
13
13
  - Joe Alba
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-09-04 00:00:00 -04:00
18
+ date: 2010-09-05 00:00:00 -04:00
19
19
  default_executable: gitswitch
20
20
  dependencies: []
21
21
 
@@ -38,8 +38,6 @@ files:
38
38
  - bin/gitswitch
39
39
  - gitswitch.gemspec
40
40
  - lib/gitswitch.rb
41
- - spec/gitswitch_spec.rb
42
- - spec/spec_helper.rb
43
41
  has_rdoc: true
44
42
  homepage: http://github.com/joealba/gitswitch
45
43
  licenses: []
@@ -74,6 +72,5 @@ rubygems_version: 1.3.7
74
72
  signing_key:
75
73
  specification_version: 3
76
74
  summary: Easy git user switching
77
- test_files:
78
- - spec/gitswitch_spec.rb
79
- - spec/spec_helper.rb
75
+ test_files: []
76
+
@@ -1,7 +0,0 @@
1
- require File.join(File.dirname(__FILE__), 'spec_helper')
2
-
3
- describe "somegem" do
4
- it "should have tests" do
5
- pending "write tests or I will kneecap you"
6
- end
7
- end
data/spec/spec_helper.rb DELETED
@@ -1,5 +0,0 @@
1
- SPEC_DIR = File.dirname(__FILE__)
2
- lib_path = File.expand_path("#{SPEC_DIR}/../lib")
3
- $LOAD_PATH.unshift lib_path unless $LOAD_PATH.include?(lib_path)
4
-
5
- require 'gitswitch'