gitsu 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,9 @@
1
+ language: ruby
2
+ rvm:
3
+ - "1.8.7"
4
+ - "1.9.2"
5
+ - "1.9.3"
6
+ - jruby-18mode # JRuby in 1.8 mode
7
+ - jruby-19mode # JRuby in 1.9 mode
8
+ - rbx-18mode
9
+ - rbx-19mode
data/README.md CHANGED
@@ -1,6 +1,10 @@
1
- # GitSu
1
+ # Gitsu
2
2
 
3
- GitSu helps to manage your Git users, by making it easy to switch
3
+ [![Build Status](https://travis-ci.org/drrb/gitsu.png)](https://travis-ci.org/drrb/gitsu)
4
+ [![Coverage Status](https://coveralls.io/repos/drrb/gitsu/badge.png?branch=master)](https://coveralls.io/r/drrb/gitsu)
5
+ [![Code Climate](https://codeclimate.com/github/drrb/gitsu.png)](https://codeclimate.com/github/drrb/gitsu)
6
+
7
+ Gitsu helps to manage your Git users, by making it easy to switch
4
8
  between users.
5
9
 
6
10
  ## Installation
@@ -9,7 +13,7 @@ between users.
9
13
 
10
14
  ## Usage
11
15
 
12
- GitSu is intended to be used from the command line, through Git.
16
+ Gitsu is intended to be used from the command line, through Git.
13
17
 
14
18
  To switch the configured Git user:
15
19
 
@@ -17,7 +21,7 @@ To switch the configured Git user:
17
21
 
18
22
  Switched local user to John Galt <jgalt@tcmc.com>
19
23
 
20
- To make it easier to switch users, tell GitSu about some users.
24
+ To make it easier to switch users, tell Gitsu about some users.
21
25
 
22
26
  $ git su --add "John Galt <jgalt@tcmc.com>"
23
27
  $ git su --add "Raphe Rackstraw <rack@hp.royalnavy.mod.uk>"
data/Rakefile CHANGED
@@ -1,3 +1,31 @@
1
- require "bundler/gem_tasks"
1
+ lib_path = File.expand_path('../lib', __FILE__)
2
+ $LOAD_PATH.unshift lib_path unless $LOAD_PATH.include? lib_path
3
+ require 'gitsu'
4
+ require 'bundler/gem_tasks'
5
+ require 'rspec/core/rake_task'
6
+ require 'cucumber/rake/task'
2
7
 
3
- task :default => :install
8
+ Cucumber::Rake::Task.new(:features)
9
+ RSpec::Core::RakeTask.new(:spec)
10
+
11
+ task :default => [:spec, :features]
12
+
13
+ task :push_release => [:spec, :features] do
14
+ git = GitSu::Git.new(GitSu::Shell.new)
15
+ version = GitSu::Version.prompt($stdin, $stdout, "Enter the version to release", GitSu::Version.current)
16
+ next_version = GitSu::Version.prompt($stdin, $stdout, "Enter the next development version", version.next_minor)
17
+
18
+ puts "Releasing #{version} and preparing for #{next_version}"
19
+
20
+ update_version(version)
21
+ git.commit("lib/gitsu/version.rb", "Preparing for release #{version}")
22
+ # TODO: check if this works as a symbol, otherwise just use string
23
+ #Rake::Task["release"].invoke
24
+ Rake::Task[:release].invoke
25
+ update_version(next_version)
26
+ git.commit("lib/gitsu/version.rb", "Preparing for next development iteration")
27
+ end
28
+
29
+ def update_version(new_version)
30
+ system(%q[sed -i '' -E 's/VERSION = ".*"/VERSION = "] + new_version.to_s + %q["/' lib/gitsu/version.rb])
31
+ end
data/TODO CHANGED
@@ -3,8 +3,12 @@ Features
3
3
  Make colors configurable because people like that stuff
4
4
  Support multiple users at once for pairing
5
5
 
6
+ Tasks
7
+ --------
8
+ Check for changes (and abort if you find them) during release
9
+
6
10
  Bugs
7
- -------
11
+ --------
8
12
 
9
13
  Tests
10
- -------
14
+ --------
@@ -9,11 +9,20 @@ Gem::Specification.new do |gem|
9
9
  gem.authors = ["drrb"]
10
10
  gem.email = ["drrb@github.com"]
11
11
  gem.description = %q{Manage your Git users}
12
- gem.summary = %q{Gitsu allows you to quickly configure and switch between Git users}
12
+ gem.summary = <<-EOF
13
+ Gitsu allows you to quickly configure and switch between Git users, for
14
+ different projects and contexts
15
+ EOF
13
16
  gem.homepage = "http://drrb.github.com/gitsu"
14
17
 
15
18
  gem.files = `git ls-files`.split($/)
16
19
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
17
20
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
21
  gem.require_paths = ["lib"]
22
+
23
+ # Dependencies
24
+ gem.add_development_dependency('coveralls')
25
+ gem.add_development_dependency('rake')
26
+ gem.add_development_dependency('rspec')
27
+ gem.add_development_dependency('cucumber')
19
28
  end
@@ -7,3 +7,4 @@ require 'gitsu/switcher'
7
7
  require 'gitsu/user_file'
8
8
  require 'gitsu/user_list'
9
9
  require 'gitsu/user'
10
+ require 'gitsu/version'
@@ -108,11 +108,13 @@ module GitSu
108
108
  def render_user(scope)
109
109
  render selected_user(scope)
110
110
  end
111
-
111
+
112
+ def commit(file, message)
113
+ @shell.execute("git commit #{file} --message='#{message}'")
114
+ end
112
115
  end
113
116
 
114
117
  class CachingGit < Git
115
-
116
118
  def get_color(color_name)
117
119
  @colors ||= {}
118
120
  #TODO: what if it's an invalid color?
@@ -1,3 +1,50 @@
1
1
  module GitSu
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
+
4
+ class Version
5
+ class ParseError < StandardError
6
+ end
7
+
8
+ REGEX = /(\d+)\.(\d+).(\d+)/
9
+ def self.parse(string)
10
+ raise ParseError, "Couldn't parse string '#{string}' as version" unless REGEX =~ string
11
+ parts = REGEX.match(string)[1..3].map {|e| e.to_i }
12
+ Version.new(*parts)
13
+ end
14
+
15
+ def self.current
16
+ Version.parse(VERSION)
17
+ end
18
+
19
+ def self.prompt(input, output, prompt, default)
20
+ output.print "#{prompt} [#{default}]: "
21
+ value = input.gets.strip
22
+ if value.empty?
23
+ default
24
+ else
25
+ Version.parse value
26
+ end
27
+ end
28
+
29
+ attr_reader :major, :minor, :patch
30
+ def initialize(major, minor, patch)
31
+ @major, @minor, @patch = major, minor, patch
32
+ end
33
+
34
+ def next_minor
35
+ Version.new(@major, @minor + 1, @patch)
36
+ end
37
+
38
+ def ==(other)
39
+ eql? other
40
+ end
41
+
42
+ def eql?(other)
43
+ major = other.major && minor == other.minor && patch == other.patch
44
+ end
45
+
46
+ def to_s
47
+ "#{major}.#{minor}.#{patch}"
48
+ end
49
+ end
3
50
  end
@@ -185,5 +185,12 @@ module GitSu
185
185
  end
186
186
  end
187
187
  end
188
+
189
+ describe "#commit" do
190
+ it "commits a file to the repository with the specified message" do
191
+ shell.should_receive(:execute).with("git commit file.dat --message='Committing changes'")
192
+ git.commit("file.dat", "Committing changes")
193
+ end
194
+ end
188
195
  end
189
196
  end
@@ -0,0 +1,56 @@
1
+ require 'spec_helper'
2
+
3
+ module GitSu
4
+ describe Version do
5
+ describe "#parse" do
6
+ it "parses a version string" do
7
+ version = Version.parse("1.23.456")
8
+ version.major.should be 1
9
+ version.minor.should be 23
10
+ version.patch.should be 456
11
+ end
12
+ context "when the input is invalid" do
13
+ it "raises an exception" do
14
+ expect {Version.parse "x.x.x"}.to raise_error Version::ParseError
15
+ end
16
+ end
17
+ end
18
+
19
+ describe "#prompt" do
20
+ let(:input) { double('input') }
21
+ let(:output) { double('output') }
22
+ let(:default) { Version.parse("1.2.3") }
23
+
24
+ it "prompts the user to input a version" do
25
+ output.should_receive(:print).with "Enter version [1.2.3]: "
26
+ input.should_receive(:gets).and_return "4.5.6"
27
+ version = Version.prompt(input, output, "Enter version", default)
28
+ version.should == Version.parse("4.5.6")
29
+ end
30
+ context "when no version is provided by user" do
31
+ it "returns the default value" do
32
+ output.should_receive(:print).with "Enter version [1.2.3]: "
33
+ input.should_receive(:gets).and_return ""
34
+ version = Version.prompt(input, output, "Enter version", default)
35
+ version.should == Version.parse("1.2.3")
36
+ end
37
+ end
38
+ end
39
+
40
+ describe "#current" do
41
+ it "returns the current version" do
42
+ Version.parse(VERSION).should == Version.current
43
+ end
44
+ end
45
+
46
+ describe "#next_minor" do
47
+ it "increments the minor version by 1" do
48
+ version = Version.parse("1.2.3")
49
+ next_version = version.next_minor
50
+ next_version.major.should be 1
51
+ next_version.minor.should be 3
52
+ next_version.patch.should be 3
53
+ end
54
+ end
55
+ end
56
+ end
@@ -1 +1,3 @@
1
1
  require 'gitsu'
2
+ require 'coveralls'
3
+ Coveralls.wear!
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gitsu
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,8 +9,72 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-03-17 00:00:00.000000000 Z
13
- dependencies: []
12
+ date: 2013-03-18 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: coveralls
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: rake
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: rspec
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: cucumber
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
14
78
  description: Manage your Git users
15
79
  email:
16
80
  - drrb@github.com
@@ -21,6 +85,7 @@ extensions: []
21
85
  extra_rdoc_files: []
22
86
  files:
23
87
  - .gitignore
88
+ - .travis.yml
24
89
  - Gemfile
25
90
  - LICENSE.txt
26
91
  - README.md
@@ -59,6 +124,7 @@ files:
59
124
  - spec/gitsu/switcher_spec.rb
60
125
  - spec/gitsu/user_list_spec.rb
61
126
  - spec/gitsu/user_spec.rb
127
+ - spec/gitsu/version_spec.rb
62
128
  - spec/spec_helper.rb
63
129
  homepage: http://drrb.github.com/gitsu
64
130
  licenses: []
@@ -83,7 +149,8 @@ rubyforge_project:
83
149
  rubygems_version: 1.8.23
84
150
  signing_key:
85
151
  specification_version: 3
86
- summary: Gitsu allows you to quickly configure and switch between Git users
152
+ summary: Gitsu allows you to quickly configure and switch between Git users, for different
153
+ projects and contexts
87
154
  test_files:
88
155
  - features/add_user.feature
89
156
  - features/change_user_in_different_scopes.feature
@@ -103,4 +170,5 @@ test_files:
103
170
  - spec/gitsu/switcher_spec.rb
104
171
  - spec/gitsu/user_list_spec.rb
105
172
  - spec/gitsu/user_spec.rb
173
+ - spec/gitsu/version_spec.rb
106
174
  - spec/spec_helper.rb