ppgit 0.6.0 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +7 -1
- data/VERSION +1 -1
- data/bin/git-pp +17 -6
- data/bin/ppgit +17 -6
- data/lib/ppgit.rb +8 -0
- data/lib/ppgit/commands.rb +23 -20
- data/lib/ppgit/gem_version_utils.rb +40 -0
- data/lib/ppgit/github_utils.rb +32 -0
- data/lib/ppgit/ppgit_utils.rb +16 -0
- data/lib/ppgit/usage.txt +3 -3
- data/ppgit.gemspec +7 -5
- data/spec/ppgit_email_root_spec.rb +8 -3
- data/spec/{ppgit_info_spec.rb → ppgit_info_spec.rb.disabled} +7 -1
- data/spec/ppgit_names_separator_spec.rb +68 -0
- data/spec/ppgit_spec.rb +12 -3
- data/spec/spec_helper.rb +0 -13
- metadata +9 -7
- data/lib/ppgit/version_utils.rb +0 -34
data/CHANGELOG
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
0.7.0
|
2
|
+
- added a --names_separator option, if you don't like the default '+'
|
3
|
+
* `ppgit ara nva` ==> user.name = 'ara+nva'
|
4
|
+
* `ppgit ara nva --names_separator _and` ==> user.name = 'ara_and_nva'
|
5
|
+
- improved (coloured) the result of `ppgit info`
|
6
|
+
- when a new version is available, display the changelog.
|
1
7
|
0.6.0
|
2
8
|
- use '+' in the pair name, instead of '_'
|
3
9
|
0.5.0
|
@@ -6,7 +12,7 @@
|
|
6
12
|
0.4.0
|
7
13
|
- use a bash & platform-agnostic ruby location
|
8
14
|
- fixed that ppgit.emailroot would be stored in the local config file, instead of ~/.gitconfig.
|
9
|
-
-
|
15
|
+
- `ppgit clear` does not restore user.email/user.name values if they are already present in ~/.gitconfig.
|
10
16
|
- print Usage text when user enters invalid command
|
11
17
|
0.3.0
|
12
18
|
- display the info message after each command
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.7.0
|
data/bin/git-pp
CHANGED
@@ -15,12 +15,20 @@ else
|
|
15
15
|
LOCAL_CONFIG_FILE = in_test_mode ? config_file_part('--file' ) : '--file .git/config'
|
16
16
|
GLOBAL_CONFIG_FILE = in_test_mode ? config_file_part('--global_file') : '--global'
|
17
17
|
|
18
|
+
if names_separator = argv_value_of('--names_separator')
|
19
|
+
set_global_git_value 'ppgit.namesseparator', names_separator
|
20
|
+
end
|
21
|
+
|
22
|
+
if get_global_git_value('ppgit.namesseparator').blank? && !ARGV.include?('clear')
|
23
|
+
# write the default value in the config file, as hint/documentation
|
24
|
+
set_global_git_value 'ppgit.namesseparator', Ppgit::DEFAULT_PAIR_NAME_SEPARATOR
|
25
|
+
end
|
26
|
+
|
18
27
|
if emailroot = argv_value_of('--email_root')
|
19
|
-
|
20
|
-
do_ppgit_info() if ARGV.empty?
|
28
|
+
set_global_git_value 'ppgit.emailroot', emailroot
|
21
29
|
end
|
22
30
|
|
23
|
-
if ARGV == %w(info)
|
31
|
+
if ARGV.empty? || ARGV == %w(info)
|
24
32
|
do_ppgit_info()
|
25
33
|
|
26
34
|
elsif ARGV == %w(clear)
|
@@ -28,7 +36,7 @@ else
|
|
28
36
|
do_ppgit_info()
|
29
37
|
|
30
38
|
elsif [2, 3].include?(ARGV.length)
|
31
|
-
do_ppgit_set_pair_as_a_user(user_1=ARGV[0], user_2=ARGV[1], pair_email=ARGV[2])
|
39
|
+
do_ppgit_set_pair_as_a_user(user_1=ARGV[0], user_2=ARGV[1], pair_email=ARGV[2], names_separator=get_global_git_value('ppgit.namesseparator'))
|
32
40
|
do_ppgit_info()
|
33
41
|
|
34
42
|
elsif 0 != ARGV.length
|
@@ -39,7 +47,10 @@ else
|
|
39
47
|
puts "\n----------------------------\n\n"
|
40
48
|
end
|
41
49
|
|
42
|
-
unless in_test_mode
|
43
|
-
print_message_if_new_version_available
|
50
|
+
unless in_test_mode || 'true' == ENV['PPGIT_NO_VERSION_CHECK']
|
51
|
+
print_message_if_new_version_available
|
52
|
+
puts "Note: you can prevent the version check with :"
|
53
|
+
puts " PPGIT_NO_VERSION_CHECK=true ppgit <command>"
|
54
|
+
puts ''
|
44
55
|
end
|
45
56
|
end
|
data/bin/ppgit
CHANGED
@@ -15,12 +15,20 @@ else
|
|
15
15
|
LOCAL_CONFIG_FILE = in_test_mode ? config_file_part('--file' ) : '--file .git/config'
|
16
16
|
GLOBAL_CONFIG_FILE = in_test_mode ? config_file_part('--global_file') : '--global'
|
17
17
|
|
18
|
+
if names_separator = argv_value_of('--names_separator')
|
19
|
+
set_global_git_value 'ppgit.namesseparator', names_separator
|
20
|
+
end
|
21
|
+
|
22
|
+
if get_global_git_value('ppgit.namesseparator').blank? && !ARGV.include?('clear')
|
23
|
+
# write the default value in the config file, as hint/documentation
|
24
|
+
set_global_git_value 'ppgit.namesseparator', Ppgit::DEFAULT_PAIR_NAME_SEPARATOR
|
25
|
+
end
|
26
|
+
|
18
27
|
if emailroot = argv_value_of('--email_root')
|
19
|
-
|
20
|
-
do_ppgit_info() if ARGV.empty?
|
28
|
+
set_global_git_value 'ppgit.emailroot', emailroot
|
21
29
|
end
|
22
30
|
|
23
|
-
if ARGV == %w(info)
|
31
|
+
if ARGV.empty? || ARGV == %w(info)
|
24
32
|
do_ppgit_info()
|
25
33
|
|
26
34
|
elsif ARGV == %w(clear)
|
@@ -28,7 +36,7 @@ else
|
|
28
36
|
do_ppgit_info()
|
29
37
|
|
30
38
|
elsif [2, 3].include?(ARGV.length)
|
31
|
-
do_ppgit_set_pair_as_a_user(user_1=ARGV[0], user_2=ARGV[1], pair_email=ARGV[2])
|
39
|
+
do_ppgit_set_pair_as_a_user(user_1=ARGV[0], user_2=ARGV[1], pair_email=ARGV[2], names_separator=get_global_git_value('ppgit.namesseparator'))
|
32
40
|
do_ppgit_info()
|
33
41
|
|
34
42
|
elsif 0 != ARGV.length
|
@@ -39,7 +47,10 @@ else
|
|
39
47
|
puts "\n----------------------------\n\n"
|
40
48
|
end
|
41
49
|
|
42
|
-
unless in_test_mode
|
43
|
-
print_message_if_new_version_available
|
50
|
+
unless in_test_mode || 'true' == ENV['PPGIT_NO_VERSION_CHECK']
|
51
|
+
print_message_if_new_version_available
|
52
|
+
puts "Note: you can prevent the version check with :"
|
53
|
+
puts " PPGIT_NO_VERSION_CHECK=true ppgit <command>"
|
54
|
+
puts ''
|
44
55
|
end
|
45
56
|
end
|
data/lib/ppgit.rb
CHANGED
data/lib/ppgit/commands.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
require 'ppgit/git_utils'
|
2
2
|
require 'ppgit/ppgit_utils'
|
3
|
-
require 'ppgit/
|
4
|
-
|
3
|
+
require 'ppgit/gem_version_utils'
|
5
4
|
|
6
5
|
def do_ppgit_clear
|
7
6
|
backup_is_same_as_global?('name') ?
|
@@ -17,29 +16,23 @@ def do_ppgit_clear
|
|
17
16
|
end
|
18
17
|
|
19
18
|
|
20
|
-
def
|
21
|
-
set_global_git_value 'ppgit.emailroot', emailroot
|
22
|
-
end
|
23
|
-
|
24
|
-
|
25
|
-
def do_ppgit_set_pair_as_a_user(user_1, user_2, pair_email)
|
19
|
+
def do_ppgit_set_pair_as_a_user(user_1, user_2, pair_email, names_separator)
|
26
20
|
backup_git_value :from => 'user.name' , :to => 'user-before-ppgit.name'
|
27
21
|
backup_git_value :from => 'user.email', :to => 'user-before-ppgit.email'
|
28
22
|
|
29
|
-
|
30
|
-
pair_email ||= make_email_from_email_root_and_user(two_users.sort.join('_'))
|
23
|
+
pair_email ||= make_email_from_email_root_and_user(user_1, user_2)
|
31
24
|
|
32
|
-
set_local_git_value 'user.name',
|
25
|
+
set_local_git_value 'user.name', assemble_pair_name(user_1, user_2, names_separator)
|
33
26
|
if pair_email
|
34
27
|
set_local_git_value 'user.email', pair_email
|
35
28
|
end
|
36
29
|
end
|
37
30
|
|
38
|
-
def make_email_from_email_root_and_user(
|
31
|
+
def make_email_from_email_root_and_user(user_1, user_2)
|
39
32
|
emailroot = get_global_git_value('ppgit.emailroot')
|
40
33
|
emailroot.blank? ?
|
41
34
|
nil :
|
42
|
-
emailroot.gsub('*',
|
35
|
+
emailroot.gsub('*', assemble_email_user(user_1, user_2))
|
43
36
|
end
|
44
37
|
|
45
38
|
|
@@ -60,8 +53,9 @@ def do_ppgit_info
|
|
60
53
|
end
|
61
54
|
|
62
55
|
def ppgit_info(file)
|
63
|
-
name, email
|
64
|
-
|
56
|
+
name, email = get_value('user.name', file), get_value('user.email', file)
|
57
|
+
names_separator = get_value('ppgit.namesseparator', file)
|
58
|
+
email_root = get_value('ppgit.emailroot' , file)
|
65
59
|
s = []
|
66
60
|
s << "-------------------------------------------------------"
|
67
61
|
s << "file = " + ((file == '--global') ? '~/.gitconfig' : file.gsub('--file ',''))
|
@@ -70,18 +64,27 @@ def ppgit_info(file)
|
|
70
64
|
# s << ' [user] is empty (user.email and user.name are not set)'
|
71
65
|
# else
|
72
66
|
s << ' [user]'
|
73
|
-
s << " name = #{name }" unless name.blank?
|
74
|
-
s << " email = #{email}" unless email.blank?
|
67
|
+
s << red(" name = #{name }") unless name.blank?
|
68
|
+
s << red(" email = #{email}") unless email.blank?
|
75
69
|
s << ' -------------------------------------------------------'
|
76
70
|
end
|
77
|
-
|
71
|
+
|
72
|
+
unless email_root.blank? && names_separator.blank?
|
78
73
|
s << ' [ppgit]'
|
79
|
-
|
74
|
+
unless email_root.blank?
|
75
|
+
sample_email = make_email_from_email_root_and_user('ann', 'bob')
|
76
|
+
s << " emailroot = #{yellow(email_root)} # -> `ppgit ann bob` -> user.email = #{yellow(sample_email)}"
|
77
|
+
end
|
78
|
+
unless names_separator.blank?
|
79
|
+
sample_name = assemble_pair_name('ann', 'bob', names_separator)
|
80
|
+
s << " namesseparator = #{yellow(names_separator)} # -> `ppgit ann bob` -> user.name = #{yellow(sample_name)}"
|
81
|
+
end
|
80
82
|
s << ' -------------------------------------------------------'
|
81
83
|
end
|
84
|
+
|
82
85
|
name, email = get_value('user-before-ppgit.name', file), get_value('user-before-ppgit.email', file)
|
83
86
|
unless name.blank? && email.blank?
|
84
|
-
s << ' [user-before-ppgit]'
|
87
|
+
s << ' [user-before-ppgit] # values restored by `ppgit clear`'
|
85
88
|
s << " name = #{name }" unless name.blank?
|
86
89
|
s << " email = #{email}" unless email.blank?
|
87
90
|
s << ' -------------------------------------------------------'
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'ppgit/github_utils'
|
2
|
+
|
3
|
+
def this_version
|
4
|
+
version_file = File.join(File.expand_path(File.dirname(__FILE__)), '..', '..', 'VERSION')
|
5
|
+
File.open(version_file).read.chomp
|
6
|
+
end
|
7
|
+
|
8
|
+
def new_version_available?(user, project)
|
9
|
+
latest_version = latest_github_version(user, project)
|
10
|
+
# latest_version.nil? if the info cannot be retrieved from github.com
|
11
|
+
latest_version && this_version != latest_version
|
12
|
+
end
|
13
|
+
|
14
|
+
def print_message_if_new_version_available
|
15
|
+
user = Ppgit::Github::USER
|
16
|
+
project = Ppgit::Github::PROJECT
|
17
|
+
changelog = latest_github_changelog(user, project, 'master', 'CHANGELOG', this_version)
|
18
|
+
|
19
|
+
if new_version_available?(user, project)
|
20
|
+
s = ["\033[1;33m"] # yellow
|
21
|
+
s << '------------------------------------------------------'
|
22
|
+
s << " There is a new version of #{project} (#{latest_github_version(user, project)})."
|
23
|
+
s << " You are using version #{this_version}"
|
24
|
+
s << ' To update :'
|
25
|
+
s << " #{red("gem update " + project)}"
|
26
|
+
s << '------------------------------------------------------'
|
27
|
+
s << "\033[0m" # no color
|
28
|
+
s << '------------------------------------------------------'
|
29
|
+
unless changelog.empty?
|
30
|
+
s << " CHANGELOG :"
|
31
|
+
s << '------------------------------------------------------'
|
32
|
+
s << changelog.map{|l| l.chomp}
|
33
|
+
s << this_version
|
34
|
+
s << ' ...'
|
35
|
+
s << '------------------------------------------------------'
|
36
|
+
end
|
37
|
+
msg = s.join("\n")
|
38
|
+
puts msg
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'open-uri'
|
2
|
+
|
3
|
+
def latest_github_version(user, project, branch='master', file='VERSION')
|
4
|
+
@@latest_github_version ||= read_file_from_github(user, project, branch, file)
|
5
|
+
end
|
6
|
+
|
7
|
+
def latest_github_changelog(user, project, branch='master', file='CHANGELOG', old_version=nil)
|
8
|
+
all_lines = read_file_lines_from_github(user, project, branch, file)
|
9
|
+
(all_lines || []).map{|line| line.chomp}.take_while{|line| line != old_version}
|
10
|
+
end
|
11
|
+
|
12
|
+
|
13
|
+
def read_file_from_github(user, project, branch, file)
|
14
|
+
file_path = "http://github.com/#{user}/#{project}/raw/#{branch}/#{file}"
|
15
|
+
begin
|
16
|
+
contents = open(file_path).read.chomp # ex: '1.2.3'
|
17
|
+
rescue => e #SocketError, OpenURI::HTTPError
|
18
|
+
puts file_path
|
19
|
+
puts e.inspect
|
20
|
+
nil # unable to read the file
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def read_file_lines_from_github(user, project, branch, file)
|
25
|
+
file_path = "http://github.com/#{user}/#{project}/raw/#{branch}/#{file}"
|
26
|
+
begin
|
27
|
+
open(file_path).readlines
|
28
|
+
rescue SocketError, OpenURI::HTTPError
|
29
|
+
nil # unable to read the file
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
data/lib/ppgit/ppgit_utils.rb
CHANGED
@@ -1,6 +1,22 @@
|
|
1
1
|
require 'ppgit/utils'
|
2
2
|
require 'ppgit/git_utils'
|
3
3
|
|
4
|
+
# ------------------------------------------------------------------------
|
5
|
+
|
6
|
+
# 'ann', 'bob' => ''ann+bob'
|
7
|
+
def assemble_pair_name(user_1, user_2, names_separator)
|
8
|
+
names_separator = Ppgit::DEFAULT_PAIR_NAME_SEPARATOR if names_separator.blank?
|
9
|
+
[user_1, user_2].sort.join(names_separator)
|
10
|
+
end
|
11
|
+
|
12
|
+
# 'ann', ''bob' => ''ann+bob'
|
13
|
+
|
14
|
+
def assemble_email_user(user_1, user_2)
|
15
|
+
[user_1, user_2].sort.join(Ppgit::DEFAULT_PAIR_EMAIL_USER_SEPARATOR)
|
16
|
+
end
|
17
|
+
|
18
|
+
# ------------------------------------------------------------------------
|
19
|
+
|
4
20
|
# separator = --file, or --global_file
|
5
21
|
# Returns :
|
6
22
|
# nil
|
data/lib/ppgit/usage.txt
CHANGED
@@ -6,12 +6,12 @@ ppgit : quickly update ~/.gitconfig for pair-programming sessions.
|
|
6
6
|
|
7
7
|
Quick Usage:
|
8
8
|
|
9
|
-
$ ppgit john andy
|
9
|
+
$ ppgit john andy
|
10
10
|
$ ppgit clear
|
11
11
|
$ ppgit info
|
12
12
|
|
13
|
-
$ ppgit
|
14
|
-
$ ppgit
|
13
|
+
$ ppgit john andy andy_john@acme.com
|
14
|
+
$ ppgit --email_root *@acme.com --names_separator _and_
|
15
15
|
|
16
16
|
remark : 'ppgit' is a synonym of 'git pp' => you can write
|
17
17
|
|
data/ppgit.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{ppgit}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.7.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Alain Ravet"]
|
12
|
-
s.date = %q{2010-10-
|
12
|
+
s.date = %q{2010-10-10}
|
13
13
|
s.description = %q{git users' pairs switcher}
|
14
14
|
s.email = %q{alain.ravet+git@gmail.com}
|
15
15
|
s.executables = ["git-pp", "ppgit"]
|
@@ -32,16 +32,18 @@ Gem::Specification.new do |s|
|
|
32
32
|
"doc/ppgit-img3.png",
|
33
33
|
"lib/ppgit.rb",
|
34
34
|
"lib/ppgit/commands.rb",
|
35
|
+
"lib/ppgit/gem_version_utils.rb",
|
35
36
|
"lib/ppgit/git_utils.rb",
|
37
|
+
"lib/ppgit/github_utils.rb",
|
36
38
|
"lib/ppgit/ppgit_utils.rb",
|
37
39
|
"lib/ppgit/quick_usage.txt",
|
38
40
|
"lib/ppgit/usage.txt",
|
39
41
|
"lib/ppgit/utils.rb",
|
40
|
-
"lib/ppgit/version_utils.rb",
|
41
42
|
"ppgit.gemspec",
|
42
43
|
"spec/ppgit_clear_spec.rb",
|
43
44
|
"spec/ppgit_email_root_spec.rb",
|
44
|
-
"spec/ppgit_info_spec.rb",
|
45
|
+
"spec/ppgit_info_spec.rb.disabled",
|
46
|
+
"spec/ppgit_names_separator_spec.rb",
|
45
47
|
"spec/ppgit_spec.rb",
|
46
48
|
"spec/ppgit_usage_spec.rb",
|
47
49
|
"spec/spec.opts",
|
@@ -55,7 +57,7 @@ Gem::Specification.new do |s|
|
|
55
57
|
s.test_files = [
|
56
58
|
"spec/ppgit_clear_spec.rb",
|
57
59
|
"spec/ppgit_email_root_spec.rb",
|
58
|
-
"spec/
|
60
|
+
"spec/ppgit_names_separator_spec.rb",
|
59
61
|
"spec/ppgit_spec.rb",
|
60
62
|
"spec/ppgit_usage_spec.rb",
|
61
63
|
"spec/spec_helper.rb"
|
@@ -16,7 +16,8 @@ describe "simple: `ppgit --email_root acme+*@gmail.com`" do
|
|
16
16
|
|
17
17
|
it 'stores the emailroot in --global (~/.gitconfig)' do
|
18
18
|
expected_global= ['[ppgit]' ,
|
19
|
-
'
|
19
|
+
' namesseparator = +' ,
|
20
|
+
' emailroot = acme+*@gmail.com' ,
|
20
21
|
]
|
21
22
|
@actual_global.should == expected_global.join("\n")
|
22
23
|
end
|
@@ -27,7 +28,8 @@ describe "simple: `ppgit --email_root acme+*@gmail.com`" do
|
|
27
28
|
before(:all) do
|
28
29
|
@before_local = [ ]
|
29
30
|
@before_global = ['[ppgit]' ,
|
30
|
-
|
31
|
+
' namesseparator = +' ,
|
32
|
+
' emailroot = old+*@gmail.com', # <= the old value to replace
|
31
33
|
]
|
32
34
|
@actual_local, @actual_global = execute_command_g(@cmd, @before_local, @before_global)
|
33
35
|
end
|
@@ -36,7 +38,8 @@ describe "simple: `ppgit --email_root acme+*@gmail.com`" do
|
|
36
38
|
|
37
39
|
it 'stores the new emailroot in --global (~/.gitconfig)' do
|
38
40
|
expected_global= ['[ppgit]' ,
|
39
|
-
'
|
41
|
+
' namesseparator = +' ,
|
42
|
+
' emailroot = acme+*@gmail.com' ,
|
40
43
|
]
|
41
44
|
@actual_global.should == expected_global.join("\n")
|
42
45
|
end
|
@@ -60,6 +63,7 @@ describe "medium: `ppgit john andy --email_root acme+*@gmail.com`" do
|
|
60
63
|
end
|
61
64
|
it 'stores the emailroot in --global (~/.gitconfig)' do
|
62
65
|
expected_global= ['[ppgit]' ,
|
66
|
+
' namesseparator = +' ,
|
63
67
|
' emailroot = acme+*@gmail.com'
|
64
68
|
].join("\n")
|
65
69
|
@actual_global.should == expected_global
|
@@ -85,6 +89,7 @@ describe "complex: `ppgit john andy andy_john@test.com --email_root acme+*@gmail
|
|
85
89
|
|
86
90
|
it 'stores the emailroot in --global (~/.gitconfig)' do
|
87
91
|
expected_global= ['[ppgit]' ,
|
92
|
+
' namesseparator = +' ,
|
88
93
|
' emailroot = acme+*@gmail.com'
|
89
94
|
].join("\n")
|
90
95
|
@actual_global.should == expected_global
|
@@ -13,6 +13,7 @@ describe "`ppgit info`" do
|
|
13
13
|
' email = johnuser@gmail.be' ]
|
14
14
|
|
15
15
|
before_global = [ '[ppgit]' ,
|
16
|
+
'namesseparator = ZEP' ,
|
16
17
|
' emailroot = acme+*@gmail.com' ]
|
17
18
|
ignore, ignore, @output = execute_command_g( ppgit("info"), before_local, before_global)
|
18
19
|
end
|
@@ -22,6 +23,9 @@ describe "`ppgit info`" do
|
|
22
23
|
it('should display the [ppgit].emailroot info' ) {
|
23
24
|
@output.should match(/\[ppgit\].+emailroot\s+=\s+acme\+\*@gmail.com/mi)
|
24
25
|
}
|
26
|
+
it('should display the [ppgit].namesseparator info' ) {
|
27
|
+
@output.should match(/\[ppgit\].+namesseparator\s+=\s+ZEP/mi)
|
28
|
+
}
|
25
29
|
end
|
26
30
|
|
27
31
|
context "when NONE of the [user] and the ppgit variables are stored in the config file" do
|
@@ -35,6 +39,8 @@ describe "`ppgit info`" do
|
|
35
39
|
it('should not display the empty [user] section' ) { @output.should_not match(/\[user\]/mi) }
|
36
40
|
|
37
41
|
it('should NOT display the empty [user-before-ppgit] section') { @output.should_not match(/\[user-before-ppgit\]/mi) }
|
38
|
-
it('should
|
42
|
+
it('should insert and display the default [ppgit].namesseparator info' ) {
|
43
|
+
@output.should match(/\[ppgit\].+namesseparator\s+=\s+\+/mi)
|
44
|
+
}
|
39
45
|
end
|
40
46
|
end
|
@@ -0,0 +1,68 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
|
+
|
3
|
+
describe "simple: `ppgit --names_separator _SEP_`" do
|
4
|
+
|
5
|
+
before(:all) do
|
6
|
+
@cmd = "#{PPGIT_CMD} --names_separator _SEP_"
|
7
|
+
end
|
8
|
+
|
9
|
+
context 'when there is no namesseparator yet' do
|
10
|
+
before(:all) do
|
11
|
+
@before_local = [ ]
|
12
|
+
@before_global = [ ] # no pair_separator here.
|
13
|
+
@actual_local, @actual_global = execute_command_g(@cmd, @before_local, @before_global)
|
14
|
+
end
|
15
|
+
|
16
|
+
it("doesn't change .git/config") { @actual_local.should == @before_local.join("\n") }
|
17
|
+
|
18
|
+
it 'stores the names separator in --global (~/.gitconfig)' do
|
19
|
+
expected_global= ['[ppgit]' ,
|
20
|
+
' namesseparator = _SEP_'
|
21
|
+
]
|
22
|
+
@actual_global.should == expected_global.join("\n")
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
context 'when there is already an namesseparator' do
|
27
|
+
before(:all) do
|
28
|
+
@before_local = [ ]
|
29
|
+
@before_global = ['[ppgit]' ,
|
30
|
+
' namesseparator = OLD_SEP' # <= the old value to replace
|
31
|
+
]
|
32
|
+
@actual_local, @actual_global = execute_command_g(@cmd, @before_local, @before_global)
|
33
|
+
end
|
34
|
+
|
35
|
+
it("doesn't change .git/config") { @actual_local.should == @before_local.join("\n") }
|
36
|
+
|
37
|
+
it 'stores the new names separator in --global (~/.gitconfig)' do
|
38
|
+
expected_global= ['[ppgit]' ,
|
39
|
+
' namesseparator = _SEP_'
|
40
|
+
]
|
41
|
+
@actual_global.should == expected_global.join("\n")
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
describe "medium: `ppgit john andy --names_separator _SEP_`" do
|
47
|
+
before(:all) do
|
48
|
+
@cmd = "#{PPGIT_CMD} john andy --names_separator _SEP_"
|
49
|
+
before_local = [ ]
|
50
|
+
before_global = [ ]
|
51
|
+
@actual_local, @actual_global = execute_command_g(@cmd, before_local, before_global)
|
52
|
+
end
|
53
|
+
|
54
|
+
it 'stores the user in local (.git/config)' do
|
55
|
+
expected_local = [ '[user]' ,
|
56
|
+
' name = andy_SEP_john' ,
|
57
|
+
].join("\n")
|
58
|
+
@actual_local.should == expected_local
|
59
|
+
end
|
60
|
+
it 'stores the names separator in --global (~/.gitconfig)' do
|
61
|
+
expected_global= ['[ppgit]' ,
|
62
|
+
' namesseparator = _SEP_'
|
63
|
+
].join("\n")
|
64
|
+
@actual_global.should == expected_global
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
|
data/spec/ppgit_spec.rb
CHANGED
@@ -18,7 +18,10 @@ context "with empty git config files" do
|
|
18
18
|
' name = andy+john' ]
|
19
19
|
@actual_local.should == expected_local.join("\n")
|
20
20
|
end
|
21
|
-
it("
|
21
|
+
it("adds the default names separator to the global config (~/.gitconfig)") do
|
22
|
+
augmented_global = @before_global + ['[ppgit]', " namesseparator = #{Ppgit::DEFAULT_PAIR_NAME_SEPARATOR}"]
|
23
|
+
@actual_global.should == (augmented_global).join("\n")
|
24
|
+
end
|
22
25
|
end
|
23
26
|
|
24
27
|
|
@@ -34,7 +37,10 @@ context "with empty git config files" do
|
|
34
37
|
|
35
38
|
@actual_local.should == expected_local.join("\n")
|
36
39
|
end
|
37
|
-
it("
|
40
|
+
it("adds the default names separator to the global config (~/.gitconfig)") do
|
41
|
+
augmented_global = @before_global + ['[ppgit]', " namesseparator = #{Ppgit::DEFAULT_PAIR_NAME_SEPARATOR}"]
|
42
|
+
@actual_global.should == (augmented_global).join("\n")
|
43
|
+
end
|
38
44
|
end
|
39
45
|
end
|
40
46
|
|
@@ -56,7 +62,10 @@ context 'when there is only a ppgit.emailroot' do
|
|
56
62
|
' email = pp+andy_john@gmail.com' ]
|
57
63
|
@actual_local.should == expected_local.join("\n")
|
58
64
|
end
|
59
|
-
it("
|
65
|
+
it("adds the default names separtor to the global config (~/.gitconfig)") do
|
66
|
+
augmented_global = @before_global + [" namesseparator = #{Ppgit::DEFAULT_PAIR_NAME_SEPARATOR}"]
|
67
|
+
@actual_global.should == (augmented_global).join("\n")
|
68
|
+
end
|
60
69
|
end
|
61
70
|
end
|
62
71
|
|
data/spec/spec_helper.rb
CHANGED
@@ -10,14 +10,6 @@ Spec::Runner.configure do |config|
|
|
10
10
|
end
|
11
11
|
|
12
12
|
require 'tempfile'
|
13
|
-
require 'ftools'
|
14
|
-
|
15
|
-
def temp_from_model(model, file_basename=nil)
|
16
|
-
newfile = Tempfile.new(file_basename)
|
17
|
-
source_path = File.expand_path(File.dirname(__FILE__) + "/fixtures/#{model}")
|
18
|
-
File.copy(source_path, newfile.path)
|
19
|
-
newfile
|
20
|
-
end
|
21
13
|
|
22
14
|
def temp_from_string(string, file_basename=nil)
|
23
15
|
f = Tempfile.new(file_basename)
|
@@ -26,11 +18,6 @@ def temp_from_string(string, file_basename=nil)
|
|
26
18
|
f
|
27
19
|
end
|
28
20
|
|
29
|
-
def expected_contents(file_name)
|
30
|
-
f = File.expand_path(File.dirname(__FILE__) + "/fixtures/#{file_name}")
|
31
|
-
File.open(f).read
|
32
|
-
end
|
33
|
-
|
34
21
|
|
35
22
|
PPGIT_CMD = File.expand_path(File.dirname(__FILE__)) + '/../bin/ppgit'
|
36
23
|
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ppgit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 3
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
8
|
+
- 7
|
9
9
|
- 0
|
10
|
-
version: 0.
|
10
|
+
version: 0.7.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Alain Ravet
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-10-
|
18
|
+
date: 2010-10-10 00:00:00 +02:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -59,16 +59,18 @@ files:
|
|
59
59
|
- doc/ppgit-img3.png
|
60
60
|
- lib/ppgit.rb
|
61
61
|
- lib/ppgit/commands.rb
|
62
|
+
- lib/ppgit/gem_version_utils.rb
|
62
63
|
- lib/ppgit/git_utils.rb
|
64
|
+
- lib/ppgit/github_utils.rb
|
63
65
|
- lib/ppgit/ppgit_utils.rb
|
64
66
|
- lib/ppgit/quick_usage.txt
|
65
67
|
- lib/ppgit/usage.txt
|
66
68
|
- lib/ppgit/utils.rb
|
67
|
-
- lib/ppgit/version_utils.rb
|
68
69
|
- ppgit.gemspec
|
69
70
|
- spec/ppgit_clear_spec.rb
|
70
71
|
- spec/ppgit_email_root_spec.rb
|
71
|
-
- spec/ppgit_info_spec.rb
|
72
|
+
- spec/ppgit_info_spec.rb.disabled
|
73
|
+
- spec/ppgit_names_separator_spec.rb
|
72
74
|
- spec/ppgit_spec.rb
|
73
75
|
- spec/ppgit_usage_spec.rb
|
74
76
|
- spec/spec.opts
|
@@ -110,7 +112,7 @@ summary: git users' pairs switcher
|
|
110
112
|
test_files:
|
111
113
|
- spec/ppgit_clear_spec.rb
|
112
114
|
- spec/ppgit_email_root_spec.rb
|
113
|
-
- spec/
|
115
|
+
- spec/ppgit_names_separator_spec.rb
|
114
116
|
- spec/ppgit_spec.rb
|
115
117
|
- spec/ppgit_usage_spec.rb
|
116
118
|
- spec/spec_helper.rb
|
data/lib/ppgit/version_utils.rb
DELETED
@@ -1,34 +0,0 @@
|
|
1
|
-
require 'open-uri'
|
2
|
-
|
3
|
-
def latest_github_version(user, project)
|
4
|
-
version_path = "http://github.com/#{user}/#{project}/raw/master/VERSION"
|
5
|
-
begin
|
6
|
-
version = open(version_path).read.chomp # ex: '1.2.3'
|
7
|
-
rescue SocketError
|
8
|
-
# unable to fetch the version
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
def this_version
|
13
|
-
version_file = File.join(File.expand_path(File.dirname(__FILE__)), '..', '..', 'VERSION')
|
14
|
-
File.open(version_file).read.chomp
|
15
|
-
end
|
16
|
-
|
17
|
-
def new_version_available?(project, user)
|
18
|
-
this_version != latest_github_version(user, project)
|
19
|
-
end
|
20
|
-
|
21
|
-
def print_message_if_new_version_available(user, project)
|
22
|
-
if new_version_available?(project, user)
|
23
|
-
s = ["\033[1;33m"] # yellow
|
24
|
-
s << '------------------------------------------------------'
|
25
|
-
s << " There is a new version of #{project} (#{latest_github_version(user, project)})."
|
26
|
-
s << " You are using version #{this_version}"
|
27
|
-
s << ' To update :'
|
28
|
-
s << " gem update #{project}"
|
29
|
-
s << '------------------------------------------------------'
|
30
|
-
s << "\033[0m" # no color
|
31
|
-
msg = s.join("\n")
|
32
|
-
puts msg
|
33
|
-
end
|
34
|
-
end
|