git-pairing 0.2.5 → 0.3.1

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 CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NDE5NjgwZTdiNjYwNDU2ZTMxMTQyNWZkM2MxODNjMWRiZTdmMTZhMQ==
4
+ ZDI5NGIxODQxZWYxMzYyZjI2NDYxNTVhNzRmMGZjODUzZWM1ZjI4Zg==
5
5
  data.tar.gz: !binary |-
6
- OTUzMDg1ZTEwZTU2NTUyZWUyYjI5MzI2N2IzYTEyNDZmZTQyMDg5Zg==
6
+ YTQ1MmU4NmM0YmY1Njg4MTE5OWQxZTFmYmEyMDU4YTk0ZTU3ODNmNw==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- ZTJjODQ4MTk0YjdmNWZiNmZhNDg2ZjBkZTg0ZTI0ZDBiNDE3ZGQ5M2VhYmIy
10
- MjU2YzUxMjcxZGM4MGFlZTY3OTNhY2ZhMTEwOTY2MmM3N2MyYzgwNmUyZWNl
11
- MjIyZWY4MjU2NzJlZWVhODQ4N2ZjZjAyYjA5YTQ3MzZmZmVhZjQ=
9
+ N2IwNGFmOGMwMzhjMDc4MDg1YjY3NjgwMmE4OGZiM2YzZWRhNTcyMzZlNjky
10
+ Zjk2ODBlZjExNTAwNjY1NDdhMjk2NTY1YmZlNTEyNmU0ZmM4YWM4M2EyNDM4
11
+ MjBhYzgxZGQzOTQ5Zjk1MDU4ODdiNzM2NTNhOWRiMTQyZTkxYmQ=
12
12
  data.tar.gz: !binary |-
13
- OWY0NDg2YzVhM2ZkM2VkMTgyZjY2YTJhY2U3MDhlYTQ2NTdiZTIyOTZiZjUw
14
- ZWVmZDgxYTY2Y2M4YjBiNjBmNGE0NWU5OGNjOWVkNTgxODU1OGYwMWY3YTNh
15
- MGZlNTllYzMyNmIwMWJjYzE5NjRlMmQ2YzRmMWYyNTMwNTQ3MmU=
13
+ NDlmOTY0MGRiN2NiODljNzNmZTdhYjdjOGIwNGU4ZGMwZjE1NDc0MDhjNTBl
14
+ YTU3OWZhNDcxZjZiZTg3ZDdhMGZhNTEyZjFkOGNjZTUwZDBmOTc4ODU5ZDIx
15
+ N2JlNDMxZjVlMjU3YzA5MmFhYzY3NGYzZmU2ZDM5ZmI3ZDExNmM=
data/README.md ADDED
@@ -0,0 +1,82 @@
1
+ # INTRO
2
+
3
+ Share code authorship when pairing and using git/github.
4
+ Works well with my fork of promptula to show which git pair is currently
5
+ configured in a git repo.
6
+
7
+ # Features
8
+
9
+ * adds new commands to git, `git pair`, `git whoami`, and `git solo`
10
+ * changes the git config `[user] name` to list multiple commit authors, and remembers partners per repository
11
+ * maintains a list of pairing partners, so that you can specify multiple commit authors by their initials
12
+ * prompts to configure new partners as needed
13
+ * reverts back to original global settings
14
+ * compliments [promptula](http://github.com/wballard/promptula)
15
+
16
+ See help for more details and available options on the commands
17
+
18
+ ```
19
+ $ git pair -h
20
+ $ git whoami -h
21
+ $ git solo -h
22
+ ```
23
+
24
+ # Installing
25
+
26
+ To grab the latest stable release `gem install git-pairing`
27
+
28
+ Or, clone this repo and execute the following command in your
29
+ terminal/console of choice
30
+
31
+ ```
32
+ $ gem install git-pairing
33
+ ```
34
+
35
+ # Customizing
36
+
37
+ ### Tweaking Promptula Command Prompt
38
+
39
+ When promptula is installed along side git-pairing, it will display the
40
+ pairing partners configured in a repo on the command line. Installing
41
+ promptula `promptula --install` adds a line to your
42
+ .bash_profile/.bashrc `export PROMPT_COMMAND='echo -ne $(promptula)'`.
43
+ This allows users to keep whatever prompt they have already in place,
44
+ but augments it with additional info when you are in a git repo. By
45
+ default, the promptula info is at the beginning of your prompt.
46
+
47
+ I prefer to have the path to my cwd in my prompt with promptula info at
48
+ the end. To do that, I simply replaced the export command created by
49
+ promptula in the .bash_profile/.bashrc with
50
+
51
+ ```
52
+ export PS1="\$(pwd) \$(promoptula) "
53
+ ```
54
+
55
+ ### Configuration
56
+
57
+ The first time that `git pair` is executed, it will create a config file
58
+ in the user's home directory `~/.pairs`
59
+
60
+ This is just a yaml file that you can edit manually or update via the
61
+ available commands (e.g., `git pair --add sq`). Included in the config is
62
+ the default delimiters used when setting the pair names, email
63
+ addresses, and partner initials
64
+ into the git config. Feel free to update these as well if the defaults
65
+ do not suit your fancy.
66
+
67
+ # Known Issues
68
+
69
+ * Does not currently work on Windows... Ubuntu and Mac OS X seem fine
70
+ * May not play entirely nicely with github since they use the commiter's
71
+ name and email address to generate statistics and links
72
+ * Will not play nice with [Chris Kampmeier's
73
+ git-pair](https://github.com/chrisk/git-pair) gem since it uses similar
74
+ git command syntax (namely `git pair`)
75
+
76
+ # Building
77
+
78
+ The included Rakefile will build the git-pairing gem, e.g.,
79
+
80
+ ```
81
+ $ rake
82
+ ```
data/bin/git-pair CHANGED
@@ -1,60 +1,63 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require 'gli'
4
- require 'git-pair'
3
+ require 'trollop'
4
+ require 'yaml/store'
5
+ require 'helper.rb'
6
+ require 'commands.rb'
7
+ require 'highline/import'
8
+ require 'paint'
9
+ require 'pp'
5
10
 
6
- include GLI::App
11
+ # config file is put into the user's home directory
12
+ path_to_conf = File.join(File.expand_path(ENV['HOME']),'.pairs')
13
+ pairs_conf = GitPairs::Helper.init(path_to_conf)
7
14
 
8
- program_desc 'Keeps track of co-authors of git commits'
9
- preserve_argv
10
- wrap_help_text :verbatim
15
+ # Check if we are in a git repo
16
+ Trollop::die "Not in a git repo" unless system 'git status > /dev/null 2>/dev/null'
11
17
 
12
- # config file is put into the user's home directory
13
- CFG_FILE = File.join(File.expand_path(ENV['HOME']),'.pairs')
14
-
15
- pre do |global,command,options,args|
16
- # Pre logic here
17
- # Return true to proceed; false to abort and not call the chosen command
18
- # Use skips_pre before a command to skip this block
19
- # on that command only
20
-
21
- # Create config if it doesn't already exist
22
- unless File.exists?(CFG_FILE)
23
- name = `git config --global --get user.name`
24
- initials = ""
25
- name.strip.downcase.split(/ /).each { |n| initials << n.split(//)[0] }
26
- email = `git config --get user.email`
27
- username = email.split("@")[0]
28
- default_conf = YAML::Store.new(CFG_FILE)
29
- default_conf.transaction do
30
- default_conf["pairs"] = {"#{initials}" => {'name'=>"#{name.strip}", 'username'=>"#{username}", 'email'=>"#{email.strip}"} }
31
- default_conf["delimiters"] = {"name" => " / ", "initials" => " "}
32
- end
33
- end
34
-
35
- # Load .pairs config
36
- if (File.exist?(CFG_FILE))
37
- $pairs_conf = YAML::load(File.open(CFG_FILE, 'r'))
38
- else
39
- exit_now!("No ~/.pairs config file found")
40
- end
41
-
42
- true
43
- end
18
+ opts = Trollop::options do
19
+ banner <<-EOS
44
20
 
45
- post do |global,command,options,args|
46
- # Post logic here
47
- # Use skips_post before a command to skip this
48
- # block on that command only
49
- end
21
+ Enables you to attribute git code commits to multiple authors
50
22
 
51
- on_error do |exception|
52
- # Error logic here
53
- # return false to skip default error handling
54
- true
23
+ Usage:
24
+ git pair <user-initials-1> <user-initials-2> [<user-initials-3> ...]
25
+ git pair [-a | --add] <user-initials-1> [<user-initials-2> ...]
26
+ git pair [-d | --delete] <user-initials-1> [<user-initials-2> ...]
27
+ git pair [-s | --show]
28
+ git pair -h
29
+
30
+ Options are mutually exclusive:
31
+
32
+ EOS
33
+ opt :add, "Configures new pairing partners without modifying the existing git config", :type=>:strings
34
+ opt :delete, "Delete pairing partners from the ~/.pairs config without modifying the existing git config", :type=>:strings
35
+ opt :show, "Display the current ~/.pairs config"
55
36
  end
56
37
 
57
- # put command rb files into ./../lib/commands/
58
- commands_from './../lib/commands'
38
+ too_many = (opts[:show_given] && opts[:add_given]) || (opts[:show_given] && opts[:delete_given]) || (opts[:add_given] && opts[:delete_given])
39
+ Trollop::die "Options are mutually exclusive - please enter only one" if too_many
40
+
41
+ if opts[:show_given]
42
+ GitPairs::Helper.whoami
43
+ puts "Pairs Config >"
44
+ puts ""
45
+ pp pairs_conf
46
+ puts ""
47
+ elsif opts[:add_given]
48
+ GitPairs::Commands.add(pairs_conf, path_to_conf, opts[:add])
49
+ puts "Pairs Config >"
50
+ puts ""
51
+ pp pairs_conf
52
+ puts ""
53
+ elsif opts[:delete_given]
54
+ GitPairs::Commands.rm(pairs_conf, path_to_conf, opts[:delete])
55
+ puts "Pairs Config >"
56
+ puts ""
57
+ pp pairs_conf
58
+ puts ""
59
+ else
60
+ GitPairs::Commands.set(pairs_conf, path_to_conf, ARGV.uniq)
61
+ GitPairs::Helper.whoami
62
+ end
59
63
 
60
- exit run(ARGV)
data/bin/git-solo ADDED
@@ -0,0 +1,44 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'trollop'
4
+ require 'helper.rb'
5
+ require 'paint'
6
+
7
+ opts = Trollop::options do
8
+ banner <<-EOS
9
+
10
+ Attribute git code commits to a single author
11
+
12
+ Usage:
13
+ git solo [<user-initials>]
14
+
15
+ With no initials - removes user info from local git repo's config, global user config settings will be used
16
+ With initials - replaces local git repo config with info for that user
17
+
18
+ EOS
19
+ end
20
+
21
+ # config file is put into the user's home directory
22
+ initials = ARGV
23
+ pairs_conf = GitPairs::Helper.init(File.join(File.expand_path(ENV['HOME']),'.pairs'))
24
+
25
+ Trollop::die "Not in a git repo" unless system 'git status > /dev/null 2>/dev/null'
26
+
27
+ if initials.nil? || initials.empty?
28
+ # revert to global git config
29
+ `git config --unset-all user.name > /dev/null 2>/dev/null`
30
+ `git config --unset-all user.email > /dev/null 2>/dev/null`
31
+ `git config --unset-all user.initials > /dev/null 2>/dev/null`
32
+ `git config --remove-section user > /dev/null 2>/dev/null`
33
+ elsif GitPairs::Helper.exists?(pairs_conf, initials[0])
34
+ # set local git config to single configured partner
35
+ author = GitPairs::Helper.fetch(pairs_conf, initials[0])
36
+ `git config user.name "#{author['name']}"`
37
+ `git config user.email "#{author['email']}"`
38
+ `git config user.initials "#{initials[0]}"`
39
+ else
40
+ puts ""
41
+ puts Paint["There is no pairing partner configured for: #{initials[0]}", :red]
42
+ end
43
+
44
+ GitPairs::Helper.whoami
data/bin/git-whoami ADDED
@@ -0,0 +1,18 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'trollop'
4
+ require 'helper.rb'
5
+
6
+ opts = Trollop::options do
7
+ banner <<-EOS
8
+
9
+ Displays user info if it exists for the local git repo, otherwise displays global git config user info
10
+
11
+ Usage:
12
+ git whoami
13
+
14
+ EOS
15
+ end
16
+
17
+ Trollop::die "Please ensure that git is installed before using 'git whoami'" unless system 'git --version > /dev/null 2>/dev/null'
18
+ GitPairs::Helper.whoami
data/lib/commands.rb ADDED
@@ -0,0 +1,37 @@
1
+ require 'paint'
2
+
3
+ module GitPairs
4
+ class Commands
5
+ def self.add(conf, path_to_conf, partners)
6
+ partners.uniq.each do |partner|
7
+ GitPairs::Helper.add(conf, path_to_conf, partner)
8
+ end
9
+ end
10
+
11
+ def self.rm(conf, path_to_conf, partners)
12
+ partners.uniq.each do |partner|
13
+ GitPairs::Helper.delete(conf, path_to_conf, partner)
14
+ end
15
+ end
16
+
17
+ def self.set(conf, path_to_conf, partners)
18
+ if partners.size < 2
19
+ puts ""
20
+ puts Paint["Please supply at least 2 sets of initials", :red]
21
+ Trollop::die "Wrong number of arguments"
22
+ end
23
+ authors = []
24
+ partners.uniq.each do |partner|
25
+ unless GitPairs::Helper.exists?(conf, partner)
26
+ GitPairs::Helper.add(conf, path_to_conf, partner)
27
+ end
28
+ #concatenate each partner's info into delimited strings
29
+ author = GitPairs::Helper.fetch(conf, partner)
30
+ name = author["username"]
31
+ email = author["email"]
32
+ authors << ["#{name}","#{partner}", "#{email}"]
33
+ end
34
+ GitPairs::Helper.set(conf, authors)
35
+ end
36
+ end
37
+ end
data/lib/helper.rb ADDED
@@ -0,0 +1,111 @@
1
+ require 'yaml/store'
2
+ require 'paint'
3
+ require 'highline/import'
4
+
5
+ module GitPairs
6
+ class Helper
7
+ # Functions for manipulating the .pairs config file
8
+
9
+ def self.init(path_to_conf)
10
+ # Create config if it doesn't already exist
11
+ unless File.exists?(path_to_conf)
12
+ Trollop::die "Please ensure that git is installed before proceeding" unless system 'git --version > /dev/null 2>/dev/null'
13
+ puts Paint["initializing git-pairing for the first time...", :yellow]
14
+ name = `git config --global --get user.name`
15
+ initials = ""
16
+ name.strip.downcase.split(/ /).each { |n| initials << n.split(//)[0] }
17
+ email = `git config --global --get user.email`
18
+ username = email.split("@")[0]
19
+ default_conf = YAML::Store.new(path_to_conf)
20
+ default_conf.transaction do
21
+ default_conf["pairs"] = {"#{initials}" => {'name'=>"#{name.strip}", 'username'=>"#{username}", 'email'=>"#{email.strip}"} }
22
+ default_conf["delimiters"] = {"name" => " / ", "initials" => " ", "email" => " , "}
23
+ end
24
+ end
25
+
26
+ # Update older confs with recently added settings
27
+ tmp_conf = YAML::load(File.open(path_to_conf))
28
+ update_conf = YAML::Store.new(path_to_conf)
29
+ update_conf.transaction do
30
+ update_conf["delimiters"] = tmp_conf["delimiters"] || {}
31
+ update_conf["delimiters"]["name"] = (tmp_conf["delimiters"] && tmp_conf["delimiters"]["name"]) || " / "
32
+ update_conf["delimiters"]["initials"] = (tmp_conf["delimiters"] && tmp_conf["delimiters"]["initials"]) || " "
33
+ update_conf["delimiters"]["email"] = (tmp_conf["delimiters"] && tmp_conf["delimiters"]["email"]) || " , "
34
+ end
35
+
36
+ return YAML::load(File.open(path_to_conf))
37
+ end
38
+
39
+ def self.whoami
40
+ user = `git config --get user.name`.strip
41
+ email = `git config --get user.email`.strip
42
+ puts ""
43
+ puts "current git config >"
44
+ puts Paint["Name: #{user}", :yellow]
45
+ puts Paint["Email: #{email}", :yellow]
46
+ puts ""
47
+ end
48
+
49
+ def self.add(conf, path_to_conf, initials)
50
+ if self.exists?(conf, initials)
51
+ puts ""
52
+ puts Paint["Pairing Partner '#{initials}' already exists", :red]
53
+ puts Paint["To replace '#{initials}', first execute: git pair -d #{initials}", :yellow]
54
+ else
55
+ puts ""
56
+ puts Paint["Please provide info for: #{initials}", :yellow]
57
+ name = ask("Full Name: ")
58
+ user = ask("Git Username: ")
59
+ #just in case they supply email address
60
+ user = user.split('@')[0]
61
+ email = ask("Email: ")
62
+ partner = {initials => {'name' => name, 'username' => user, 'email' => email}}
63
+ conf["pairs"].update(partner)
64
+ temp_conf = YAML::Store.new(path_to_conf)
65
+ temp_conf.transaction do
66
+ temp_conf["pairs"] = conf["pairs"]
67
+ end
68
+ puts ""
69
+ puts Paint["Added '#{initials}' to list of available pairs", :yellow]
70
+ end
71
+ end
72
+
73
+ def self.set(conf, authors)
74
+ authors.sort!
75
+ sorted_authors = ""
76
+ sorted_initials = ""
77
+ sorted_emails = ""
78
+ authors.each do |a|
79
+ sorted_authors << a[0]
80
+ sorted_initials << a[1]
81
+ sorted_emails << a[2]
82
+ if authors.index(a) < authors.size-1
83
+ sorted_authors << conf['delimiters']['name']
84
+ sorted_initials << conf['delimiters']['initials']
85
+ sorted_emails << conf['delimiters']['email']
86
+ end
87
+ cmd_git = `git config user.name "#{sorted_authors}"`
88
+ cmd_git = `git config user.initials "#{sorted_initials}"`
89
+ cmd_git = `git config user.email "#{sorted_emails}"`
90
+ end
91
+ end
92
+
93
+ def self.exists?(conf, initials)
94
+ return conf["pairs"].include?(initials)
95
+ end
96
+
97
+ def self.fetch(conf, initials)
98
+ return conf["pairs"][initials]
99
+ end
100
+
101
+ def self.delete(conf, path_to_conf, initials)
102
+ if conf["pairs"].include?(initials)
103
+ conf["pairs"].delete(initials)
104
+ temp_conf = YAML::Store.new(path_to_conf)
105
+ temp_conf.transaction do
106
+ temp_conf["pairs"] = conf["pairs"]
107
+ end
108
+ end
109
+ end
110
+ end
111
+ end
metadata CHANGED
@@ -1,15 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: git-pairing
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.5
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Steve Quince
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-04-05 00:00:00.000000000 Z
11
+ date: 2013-04-10 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: trollop
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: paint
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ! '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
13
41
  - !ruby/object:Gem::Dependency
14
42
  name: awesome_print
15
43
  requirement: !ruby/object:Gem::Requirement
@@ -53,39 +81,44 @@ dependencies:
53
81
  - !ruby/object:Gem::Version
54
82
  version: '0'
55
83
  - !ruby/object:Gem::Dependency
56
- name: gli
84
+ name: rdoc
57
85
  requirement: !ruby/object:Gem::Requirement
58
86
  requirements:
59
- - - '='
87
+ - - ! '>='
60
88
  - !ruby/object:Gem::Version
61
- version: 2.5.4
62
- type: :runtime
89
+ version: '0'
90
+ type: :development
63
91
  prerelease: false
64
92
  version_requirements: !ruby/object:Gem::Requirement
65
93
  requirements:
66
- - - '='
94
+ - - ! '>='
67
95
  - !ruby/object:Gem::Version
68
- version: 2.5.4
69
- description: Keeps track of co-authors of git commits
96
+ version: '0'
97
+ description: Allows you to attribute code commits to multiple authors
70
98
  email: steve.quince@gmail.com
71
99
  executables:
72
100
  - git-pair
101
+ - git-solo
102
+ - git-whoami
73
103
  extensions: []
74
- extra_rdoc_files: []
104
+ extra_rdoc_files:
105
+ - README.md
75
106
  files:
76
107
  - bin/git-pair
77
- - lib/commands/add.rb
78
- - lib/commands/rm.rb
79
- - lib/commands/set.rb
80
- - lib/commands/show.rb
81
- - lib/commands/solo.rb
82
- - lib/git-pair.rb
83
- - lib/pairs.rb
108
+ - bin/git-solo
109
+ - bin/git-whoami
110
+ - lib/commands.rb
111
+ - lib/helper.rb
112
+ - README.md
84
113
  homepage: https://github.com/squince/git-pairing
85
114
  licenses: []
86
115
  metadata: {}
87
116
  post_install_message:
88
- rdoc_options: []
117
+ rdoc_options:
118
+ - --title
119
+ - git-pairing
120
+ - --main
121
+ - README.md
89
122
  require_paths:
90
123
  - lib
91
124
  - lib
@@ -104,5 +137,5 @@ rubyforge_project:
104
137
  rubygems_version: 2.0.2
105
138
  signing_key:
106
139
  specification_version: 4
107
- summary: Configures git to attribute code commits to multiple authors.
140
+ summary: ''
108
141
  test_files: []
data/lib/commands/add.rb DELETED
@@ -1,20 +0,0 @@
1
- desc 'adds new pairing partners: $git pair add <user-initials-1> [<user-initials-2> ...]'
2
- command :add do |c|
3
- c.action do |global_options,options,args|
4
- partners = ""
5
- if args.empty?
6
- list = ask("Please enter a space separated list of partner initials to configure")
7
- partners = list.strip.split(/ /)
8
- else
9
- partners = args
10
- end
11
- partners.uniq.each do |partner|
12
- unless GitPairs::Pairs.exists?(partner)
13
- GitPairs::Pairs.add(partner)
14
- else
15
- puts "Pairing Partner '#{partner}' already exists"
16
- puts"To replace '#{partner}', first execute: git pair rm #{partner}"
17
- end
18
- end
19
- end
20
- end
data/lib/commands/rm.rb DELETED
@@ -1,17 +0,0 @@
1
- desc 'removes one or more pairing partners: $git pair rm <user-initials-1> [<user-initials-2> ...]'
2
- command :rm do |c|
3
- c.action do |global_options,options,args|
4
- unless args.empty?
5
- args.uniq.each do |partner|
6
- unless GitPairs::Pairs.exists?(partner)
7
- puts"There is no pairing partner configured for: #{partner}"
8
- else
9
- GitPairs::Pairs.delete(partner)
10
- end
11
- end
12
- else
13
- exit_now!("Wrong Number of Arguments - please provide at least one partner to remove")
14
- end
15
- end
16
- end
17
-
data/lib/commands/set.rb DELETED
@@ -1,64 +0,0 @@
1
- desc 'switches pairing partners: $git pair set <user-initials-1> [<user-initials-2> ...]'
2
- command :set do |c|
3
- c.action do |global_options,options,args|
4
- # Check if we are in a git repo
5
- unless system 'git status > /dev/null 2>/dev/null'
6
- puts"Not in a git repo"
7
- else
8
- #puts "in set"
9
- unless !args.empty?
10
- exit_now!("Wrong Number of Arguments - please provide pairing partners")
11
- else
12
- #puts "args not empty"
13
- #add pair to conf
14
- authors = []
15
- solo_author = ""
16
- solo_email = ""
17
- solo_initials = ""
18
- size = args.uniq.size
19
- args.uniq.each do |partner|
20
- unless GitPairs::Pairs.exists?(partner)
21
- GitPairs::Pairs.add(partner)
22
- end
23
- #puts "in concat"
24
- if size > 1
25
- #concatenate each partner's username into git config "author"
26
- @author = GitPairs::Pairs.fetch(partner)["username"]
27
- authors << ["#{@author}","#{partner}"]
28
- else # exactly one author provided
29
- solo = GitPairs::Pairs.fetch(partner)
30
- solo_author = solo["name"]
31
- solo_email = solo["email"]
32
- solo_initials = partner
33
- end
34
- end
35
- unless authors.empty?
36
- authors.sort!
37
- #puts"authors: #{authors}"
38
- sorted_authors = ""
39
- sorted_initials = ""
40
- authors.each do |a|
41
- sorted_authors << a[0]
42
- sorted_initials << a[1]
43
- if size > 1 && authors.index(a) < size-1
44
- sorted_authors << $pairs_conf['delimiters']['name'] #" / "
45
- sorted_initials << $pairs_conf['delimiters']['initials'] #" "
46
- end
47
- end
48
- #puts"sorted authors: #{sorted_authors}"
49
- cmd_git = `git config user.name "#{sorted_authors}"`
50
- cmd_git = `git config user.initials "#{sorted_initials}"`
51
- #puts"cmdout: " + cmd_git
52
- else
53
- #puts"in else"
54
- #puts"git config user.name #{solo_author}"
55
- #puts"git config user.email #{solo_email}"
56
- `git config user.name "#{solo_author}"`
57
- `git config user.email "#{solo_email}"`
58
- `git config user.initials "#{solo_initials}"`
59
- end
60
- end
61
- end
62
- end
63
- end
64
-
data/lib/commands/show.rb DELETED
@@ -1,27 +0,0 @@
1
- desc 'displays currently set pairing partners: $git pair show [-a | --all]'
2
- command :show do |c|
3
- c.desc 'list all available configured partners'
4
- c.default_value false
5
- c.switch :all, :a
6
-
7
- c.action do |global_options,options,args|
8
- # Check if we are in a git repo
9
- unless system 'git status > /dev/null 2>/dev/null'
10
- puts"Not in a git repo"
11
- else
12
- user = `git config --get user.name`.strip
13
- email = `git config --get user.email`.strip
14
- puts " "
15
- puts "Git Config >"
16
- puts "Name: #{user}"
17
- puts "Email: #{email}"
18
- end
19
- # display list of configured partners
20
- if options[:all]
21
- puts " "
22
- puts "Pairs Config >"
23
- ap $pairs_conf
24
- end
25
- end
26
- end
27
-
data/lib/commands/solo.rb DELETED
@@ -1,10 +0,0 @@
1
- desc 'resets git author to single global user: $git pair solo'
2
- command :solo do |c|
3
- c.action do |global_options,options,args|
4
- `git config --unset-all user.name > /dev/null 2>/dev/null`
5
- `git config --unset-all user.email > /dev/null 2>/dev/null`
6
- `git config --unset-all user.initials > /dev/null 2>/dev/null`
7
- `git config --remove-section user > /dev/null 2>/dev/null`
8
- end
9
- end
10
-
data/lib/git-pair.rb DELETED
@@ -1,7 +0,0 @@
1
- require 'awesome_print'
2
- require 'yaml/store'
3
- require 'pairs.rb'
4
- require 'highline/import'
5
-
6
- # Add requires for other files you add to your project here, so
7
- # you just need to require this one file in your bin file
data/lib/pairs.rb DELETED
@@ -1,55 +0,0 @@
1
- module GitPairs
2
- class Pairs
3
- # Functions for manipulating the .pairs config file
4
- def self.add(initials)
5
- #if $pairs_conf["pairs"].include?(initials)
6
- if self.exists?(initials)
7
- puts"Pairing Partner '#{initials}' already exists"
8
- else
9
- #puts "In Add"
10
- #ap $pairs_conf
11
- unless GitPairs::Pairs.exists?(initials)
12
- puts"Please provide info for: #{initials}"
13
- name = ask("Full Name: ")
14
- user = ask("Git Username: ")
15
- #just in case they supply email address
16
- user = user.split('@')[0]
17
- email = ask("Email: ")
18
- partner = {initials => {'name' => name, 'username' => user, 'email' => email}}
19
- $pairs_conf["pairs"].update(partner)
20
- temp_conf = YAML::Store.new(CFG_FILE)
21
- temp_conf.transaction do
22
- temp_conf["pairs"] = $pairs_conf["pairs"]
23
- end
24
- puts"Added '#{initials}' to list of available pairs"
25
- end
26
- end
27
- end
28
-
29
- def self.exists?(initials)
30
- #puts "in exists?"
31
- #ap $pairs_conf
32
- #puts$pairs_conf["pairs"].include?(initials)
33
- return $pairs_conf["pairs"].include?(initials)
34
- end
35
-
36
- def self.fetch(initials)
37
- return $pairs_conf["pairs"][initials]
38
- end
39
-
40
- def self.delete(initials)
41
- #puts "in delete"
42
- #puts"before:"
43
- #ap $pairs_conf
44
- if $pairs_conf["pairs"].include?(initials)
45
- $pairs_conf["pairs"].delete(initials)
46
- temp_conf = YAML::Store.new(CFG_FILE)
47
- temp_conf.transaction do
48
- temp_conf["pairs"] = $pairs_conf["pairs"]
49
- end
50
- end
51
- #puts"after:"
52
- #ap $pairs_conf
53
- end
54
- end
55
- end