gitswitch 0.1.1 → 0.1.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.
data/README.rdoc CHANGED
@@ -16,9 +16,9 @@ Simply run the script to establish a default ~/.gitswitch file using the git inf
16
16
  Add a new git user tag
17
17
  gitswitch -a
18
18
 
19
- Set specific user info to your current git repository
20
- gitswitch -r work
21
- gitswitch -r # Sets your 'default' tag if you don't specify a tag
19
+ 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
22
22
 
23
23
  List all the gitswitch user tags/info you have stored
24
24
  gitswitch -l
data/Rakefile CHANGED
@@ -1,5 +1,8 @@
1
1
  require 'rubygems'
2
2
  require 'rake'
3
+ # require 'rspec/core'
4
+ # require 'rspec/core/rake_task'
5
+
3
6
 
4
7
  begin
5
8
  require 'jeweler'
@@ -10,7 +13,8 @@ begin
10
13
  gem.email = "joe@joealba.com"
11
14
  gem.homepage = "http://github.com/joealba/gitswitch"
12
15
  gem.authors = ["Joe Alba"]
13
- gem.add_development_dependency "thoughtbot-shoulda", ">= 0"
16
+ # gem.add_development_dependency "thoughtbot-shoulda", ">= 0"
17
+ # gem.add_development_dependency "rspec", ">= 0"
14
18
  # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
15
19
  end
16
20
  Jeweler::GemcutterTasks.new
@@ -18,29 +22,6 @@ rescue LoadError
18
22
  puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
19
23
  end
20
24
 
21
- require 'rake/testtask'
22
- Rake::TestTask.new(:test) do |test|
23
- test.libs << 'lib' << 'test'
24
- test.pattern = 'test/**/test_*.rb'
25
- test.verbose = true
26
- end
27
-
28
- begin
29
- require 'rcov/rcovtask'
30
- Rcov::RcovTask.new do |test|
31
- test.libs << 'test'
32
- test.pattern = 'test/**/test_*.rb'
33
- test.verbose = true
34
- end
35
- rescue LoadError
36
- task :rcov do
37
- abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
38
- end
39
- end
40
-
41
- task :test => :check_dependencies
42
-
43
- task :default => :test
44
25
 
45
26
  require 'rake/rdoctask'
46
27
  Rake::RDocTask.new do |rdoc|
@@ -51,3 +32,14 @@ Rake::RDocTask.new do |rdoc|
51
32
  rdoc.rdoc_files.include('README*')
52
33
  rdoc.rdoc_files.include('lib/**/*.rb')
53
34
  end
35
+
36
+
37
+ # desc 'Default: Run specs'
38
+ # task :default => :spec
39
+ #
40
+ # desc 'Run specs'
41
+ # RSpec::Core::RakeTask.new(:spec) do |t|
42
+ # t.pattern = FileList["spec/**/*_spec.rb"]
43
+ # end
44
+
45
+
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.1
1
+ 0.1.2
data/gitswitch.gemspec CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{gitswitch}
8
- s.version = "0.1.1"
8
+ s.version = "0.1.2"
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"]
@@ -27,9 +27,7 @@ Gem::Specification.new do |s|
27
27
  "VERSION",
28
28
  "bin/gitswitch",
29
29
  "gitswitch.gemspec",
30
- "lib/gitswitch.rb",
31
- "test/helper.rb",
32
- "test/test_gitswitch.rb"
30
+ "lib/gitswitch.rb"
33
31
  ]
34
32
  s.homepage = %q{http://github.com/joealba/gitswitch}
35
33
  s.rdoc_options = ["--charset=UTF-8"]
@@ -37,8 +35,8 @@ Gem::Specification.new do |s|
37
35
  s.rubygems_version = %q{1.3.7}
38
36
  s.summary = %q{Easy git user switching}
39
37
  s.test_files = [
40
- "test/helper.rb",
41
- "test/test_gitswitch.rb"
38
+ "spec/gitswitch_spec.rb",
39
+ "spec/spec_helper.rb"
42
40
  ]
43
41
 
44
42
  if s.respond_to? :specification_version then
@@ -46,12 +44,9 @@ Gem::Specification.new do |s|
46
44
  s.specification_version = 3
47
45
 
48
46
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
49
- s.add_development_dependency(%q<thoughtbot-shoulda>, [">= 0"])
50
47
  else
51
- s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
52
48
  end
53
49
  else
54
- s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
55
50
  end
56
51
  end
57
52
 
data/lib/gitswitch.rb CHANGED
@@ -1,5 +1,6 @@
1
- require "optparse"
2
- require "yaml"
1
+ require 'optparse'
2
+ require 'yaml'
3
+ #require 'escape'
3
4
 
4
5
  class GitSwitch
5
6
  VERSION_FILE = File.join File.dirname(__FILE__), "..", "VERSION.yml"
@@ -26,7 +27,6 @@ class GitSwitch
26
27
  puts "Ok, that's fine. Exiting." and exit
27
28
  end
28
29
  end
29
-
30
30
  end
31
31
 
32
32
 
@@ -63,7 +63,7 @@ class GitSwitch
63
63
  puts parser and exit
64
64
  end
65
65
 
66
- o.on "-o", "--overwrite", "Overwrite/create a .gitswitch file using your current git user info as default" do
66
+ o.on "-o", "--overwrite", "Overwrite/create a .gitswitch file using your global git user info as default" do
67
67
  create_gitswitch_file
68
68
  print_info and exit
69
69
  end
@@ -77,7 +77,6 @@ class GitSwitch
77
77
  end
78
78
  end
79
79
 
80
-
81
80
  begin
82
81
  parser.parse! args
83
82
  rescue OptionParser::InvalidOption => error
@@ -91,12 +90,12 @@ class GitSwitch
91
90
 
92
91
  # Create a .gitswitch file with the current user defaults
93
92
  def create_gitswitch_file
94
- current_git_user = get_current_git_user
95
- if current_git_user[:name].empty? && current_git_user[:email].empty?
93
+ user = get_global_git_user
94
+ if user[:name].empty? && user[:email].empty?
96
95
  puts "ERROR: You must set up a default git user.name and user.email first."
97
96
  else
98
- puts "Adding your current git user info to the \"default\" tag..."
99
- set_gitswitch_entry('default', current_git_user[:email], current_git_user[:name])
97
+ puts "Adding your global git user info to the \"default\" tag..."
98
+ set_gitswitch_entry('default', user[:email], user[:name])
100
99
  save_gitswitch_file
101
100
  end
102
101
  end
@@ -122,18 +121,32 @@ class GitSwitch
122
121
  save_gitswitch_file
123
122
  end
124
123
 
124
+
125
+ def get_user(tag)
126
+ if @users.empty? || @users[tag].empty? || @users[tag][:email].to_s.empty?
127
+ return false
128
+ end
129
+ @users[tag]
130
+ end
131
+
132
+
133
+ def git_config(user, args = {})
134
+ git_args = 'config --replace-all'
135
+ git_args += ' --global' if args[:global]
136
+
137
+ %x(#{GIT_BIN} #{git_args} user.email #{user[:email].to_s.shellescape})
138
+ %x(#{GIT_BIN} #{git_args} user.name #{user[:name].to_s.shellescape}) if !user[:name].to_s.empty?
139
+ end
140
+
125
141
 
126
142
  # Switch git user in your global .gitconfig file
127
143
  # ==== Parameters
128
144
  # * +tag+ - The tag associated with your desired git info in .gitswitch. Defaults to "default".
129
145
  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"
130
147
  puts "Switching git user to \"#{tag}\" tag..."
131
- if !@users[tag].empty? && !@users[tag][:email].to_s.empty?
132
- %x(#{GIT_BIN} config --replace-all --global user.name '#{@users[tag][:name]}') if !@users[tag][:name].to_s.empty?
133
- %x(#{GIT_BIN} config --replace-all --global user.email '#{@users[tag][:email]}')
134
- else
135
- puts "ERROR: Could not find info for tag #{tag} in your .gitswitch file"
136
- end
148
+ git_config(user, {:global => true})
149
+ # puts "ERROR: Could not find info for tag \"#{tag}\" in your .gitswitch file"
137
150
  end
138
151
 
139
152
 
@@ -141,28 +154,25 @@ class GitSwitch
141
154
  # ==== Parameters
142
155
  # * +tag+ - The tag associated with your desired git info in .gitswitch. Defaults to "default".
143
156
  def switch_repo_user tag = "default"
144
- puts "Switching git user to \"#{tag}\" tag..."
145
- if !@users[tag].empty? && !@users[tag][:email].to_s.empty?
146
- %x(#{GIT_BIN} config --replace-all user.name '#{@users[tag][:name]}') if !@users[tag][:name].to_s.empty?
147
- %x(#{GIT_BIN} config --replace-all user.email '#{@users[tag][:email]}')
148
- else
149
- puts "ERROR: Could not find info for tag #{tag} in your .gitswitch file"
150
- end
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"
151
161
  end
152
162
 
153
163
 
154
164
  # Add a user entry to your .gitswitch file
155
165
  def add_gitswitch_entry
156
166
  print "What tag would you like to set to this git user? "
157
- tag = gets.chomp
167
+ tag = gets.gsub(/\W+/,'')
158
168
 
159
169
  print "E-mail address: "
160
170
  email = gets.chomp
161
171
 
162
- print "Name: (ENTER to use \"" + get_current_git_user()[:name] + "\") "
172
+ print "Name: (ENTER to use \"" + get_global_git_user()[:name] + "\") "
163
173
  name = gets.chomp
164
174
  if name.empty?
165
- name = get_current_git_user()[:name]
175
+ name = get_global_git_user()[:name]
166
176
  end
167
177
  set_gitswitch_entry(tag, email, name)
168
178
  end
@@ -203,10 +213,19 @@ class GitSwitch
203
213
 
204
214
  # Show the current git user info
205
215
  def get_current_git_user
206
- user = {
216
+ {
207
217
  :name => %x(#{GIT_BIN} config --get user.name).to_s.chomp,
208
218
  :email => %x(#{GIT_BIN} config --get user.email).to_s.chomp
209
219
  }
210
220
  end
221
+
222
+ # Show the global config git user info
223
+ def get_global_git_user
224
+ {
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
227
+ }
228
+ end
229
+
211
230
 
212
231
  end
@@ -0,0 +1,7 @@
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
@@ -0,0 +1,5 @@
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'
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: 25
4
+ hash: 31
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 1
10
- version: 0.1.1
9
+ - 2
10
+ version: 0.1.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Joe Alba
@@ -17,21 +17,8 @@ cert_chain: []
17
17
 
18
18
  date: 2010-09-04 00:00:00 -04:00
19
19
  default_executable: gitswitch
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
22
- name: thoughtbot-shoulda
23
- prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
25
- none: false
26
- requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- hash: 3
30
- segments:
31
- - 0
32
- version: "0"
33
- type: :development
34
- version_requirements: *id001
20
+ dependencies: []
21
+
35
22
  description: 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.
36
23
  email: joe@joealba.com
37
24
  executables:
@@ -51,8 +38,8 @@ files:
51
38
  - bin/gitswitch
52
39
  - gitswitch.gemspec
53
40
  - lib/gitswitch.rb
54
- - test/helper.rb
55
- - test/test_gitswitch.rb
41
+ - spec/gitswitch_spec.rb
42
+ - spec/spec_helper.rb
56
43
  has_rdoc: true
57
44
  homepage: http://github.com/joealba/gitswitch
58
45
  licenses: []
@@ -88,5 +75,5 @@ signing_key:
88
75
  specification_version: 3
89
76
  summary: Easy git user switching
90
77
  test_files:
91
- - test/helper.rb
92
- - test/test_gitswitch.rb
78
+ - spec/gitswitch_spec.rb
79
+ - spec/spec_helper.rb
data/test/helper.rb DELETED
@@ -1,10 +0,0 @@
1
- require 'rubygems'
2
- require 'test/unit'
3
- require 'shoulda'
4
-
5
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
6
- $LOAD_PATH.unshift(File.dirname(__FILE__))
7
- require 'gitswitch'
8
-
9
- class Test::Unit::TestCase
10
- end
@@ -1,9 +0,0 @@
1
- require 'helper'
2
-
3
- class TestGitswitch < Test::Unit::TestCase
4
-
5
- # should "probably rename this file and start testing for real" do
6
- # flunk "hey buddy, you should probably rename this file and start testing for real"
7
- # end
8
-
9
- end