git-iam 0.0.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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: fa4f81429874fb8e7f81e81ae814493fe48b2132
4
+ data.tar.gz: 73a64286cedaaf7cb6b2e979bf4c5cc1f28f3920
5
+ SHA512:
6
+ metadata.gz: b2b53dbb1991e59c13963691ef141cacac5450db69c7925901d67f48a1a064841dfedccf17b209320fe3f5ab2985c68a8ae4ac0b0171cc2691221bd90ea27bc4
7
+ data.tar.gz: ab9dce3e88c803fe50533d8e1eee34b3d22125cb2cb62057d682d1345d3d4449ad0a737786e242a82e939b71404a032747cce09c6bad1a079c405cd62a07eed1
data/.gitignore ADDED
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2014 tgolson
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,72 @@
1
+ # git_iam
2
+
3
+ Command line tool for easily switching git authors, remotes, and other configs on shared computers.
4
+
5
+ **Currently in development**
6
+
7
+ References
8
+
9
+ * [Great ruby gem cli guide](https://github.com/radar/guides/blob/master/gem-development.md)
10
+ * [Nice ruby executable resource](http://robdodson.me/blog/2012/06/14/how-to-write-a-command-line-ruby-gem/)
11
+ * Major props to [git pair](https://github.com/chrisk/git-pair)
12
+ * Inspiration from [pivotal git scripts](https://github.com/pivotal/git_scripts)
13
+
14
+ ## Installation
15
+
16
+ ```
17
+ $ gem install git_iam
18
+ ```
19
+
20
+ ## Usage
21
+
22
+ Run via the command line using the command `iam`.
23
+
24
+ Set current user name and remote origin url
25
+
26
+ ```
27
+ $ iam [user_name]
28
+ ```
29
+
30
+ Check current user name, email and remote origin url
31
+
32
+ ```
33
+ $ iam who
34
+ ```
35
+
36
+ Reset to global git config values
37
+
38
+ ```
39
+ $ iam reset
40
+ ```
41
+
42
+ ## Available commands
43
+
44
+ Find all available commands
45
+
46
+ ```
47
+ $ iam
48
+ ```
49
+
50
+ Find details about a command
51
+
52
+ ```
53
+ $ iam help [command]
54
+ ```
55
+
56
+ ## TODO
57
+
58
+ * Create pairing module - consider command `iam also [username]`
59
+ * Add options to `iam [username]` commands, such as `--nameonly` or `--remoteonly`.
60
+ * Create helpers for changing options on remote urls `--branch`, `--remote`, etc.
61
+ * Create helper for viewing current configs.
62
+ * Consider integrating `git-pair` for pairing config.
63
+ * Implement a `--force` for `iam [username]` incase the username conflicts with any reserved keywords.
64
+ * Throw error if `remote.origin.url` not set.
65
+
66
+ ## Contributing
67
+
68
+ 1. Fork it ( git shttp://github.com/<my-github-username>/git_iam/fork )
69
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
70
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
71
+ 4. Push to the branch (`git push origin my-new-feature`)
72
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
data/bin/git-iam ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require 'git-iam/cli'
3
+ GitIam::CLI.start
@@ -0,0 +1,18 @@
1
+ Feature: Iam
2
+ In order to quickly change git settings
3
+ As a user
4
+ I want to have a clean interface
5
+
6
+ Scenario: Find out who I am
7
+ When I run "git iam who"
8
+ Then the output should contain "user.name"
9
+
10
+ Scenario: Set current user
11
+ When I run "git iam tyler"
12
+ Then the output should contain "tyler"
13
+
14
+ # Not a very good test
15
+ # Mainly used to reset previous test
16
+ Scenario: Reset settings
17
+ When I run "git iam reset"
18
+ Then the output should contain "user.name"
data/git-iam.gemspec ADDED
@@ -0,0 +1,40 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'git-iam/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "git-iam"
8
+ spec.version = GitIam::VERSION
9
+ spec.authors = ["tgolson"]
10
+ spec.email = ["tydotg@gmail.com"]
11
+ spec.summary = %q{Command line tool for easily switching git authors, remotes, and other configs on shared computers.}
12
+ spec.description = %q{Command line tool for easily switching git authors, remotes, and other configs on shared computers.}
13
+ spec.homepage = "https://github.com/TGOlson/git_iam"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = [
17
+ ".gitignore",
18
+ "LICENSE.txt",
19
+ "README.md",
20
+ "Rakefile",
21
+ "bin/git-iam",
22
+ "features/iam.feature",
23
+ "git-iam.gemspec",
24
+ "lib/git-iam.rb",
25
+ "lib/git-iam/version.rb",
26
+ "lib/git-iam/iam.rb",
27
+ "lib/git-iam/cli.rb"
28
+ ]
29
+
30
+ spec.executables = ['git-iam']
31
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
32
+ spec.require_paths = ["lib"]
33
+
34
+ spec.add_development_dependency "bundler", "~> 1.5"
35
+ spec.add_development_dependency "rake"
36
+ spec.add_development_dependency "rspec", "~> 2.14"
37
+ spec.add_development_dependency "cucumber"
38
+ spec.add_development_dependency "aruba"
39
+ spec.add_dependency "thor"
40
+ end
@@ -0,0 +1,51 @@
1
+ require 'thor'
2
+ require 'git-iam'
3
+
4
+ module GitIam
5
+ class CLI < Thor
6
+
7
+ desc "who", "Returns current user name and email from config."
8
+ def who
9
+ Helpers.pretty_print GitIam::Iam.who
10
+ end
11
+
12
+ desc "reset", "Reset the current local git settings to the global config."
13
+ def reset
14
+ Helpers.pretty_print GitIam::Iam.reset
15
+ end
16
+
17
+ # Not implemented
18
+ # Will later be used for pairing
19
+ # desc "aka [USERNAME]", "Sets current user name and remote account name."
20
+ # def aka(user_name)
21
+ # Helpers.pretty_print GitIam::Iam.set_user_name(user_name)
22
+ # end
23
+
24
+ desc "[USERNAME]", "Sets current user name and remote origin account."
25
+ def set_user(user, *args)
26
+ Helpers.pretty_print GitIam::Iam.set_user(user)
27
+ end
28
+
29
+ # allows user to be set without special flags
30
+ def method_missing(method, *args)
31
+ # might be useful for taking in more information with default iam
32
+ # such as email
33
+ # args = [method.to_s] + args
34
+
35
+ set_user method.to_s
36
+ end
37
+ end
38
+
39
+ class Helpers
40
+ def self.pretty_print(statement)
41
+ if statement.is_a?(Array)
42
+ return statement.each{ |s| pretty_print s }
43
+ end
44
+
45
+ statement.each do |key, value|
46
+ print key.ljust(20)
47
+ print value + "\n"
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,75 @@
1
+ MESSAGES = {
2
+ remote_origin: 'remote.origin.url',
3
+ user_name: 'user.name',
4
+ user_email: 'user.email'
5
+ }
6
+
7
+ module GitIam
8
+ class Iam
9
+
10
+ def self.set_user(user)
11
+ self.set_user_name(user)
12
+ # self.set_user_email
13
+ self.set_origin_account(user)
14
+ who
15
+ end
16
+
17
+ def self.set_user_name(user_name)
18
+ `git config --local user.name #{user_name}`
19
+ end
20
+
21
+ def self.set_user_email
22
+ # TODO - implement setting user email
23
+ end
24
+
25
+ def self.set_origin_account(account)
26
+ segments = remote_origin.split('/')
27
+ segments[-2] = account
28
+
29
+ origin_url = segments.join('/')
30
+
31
+ `git remote set-url origin #{origin_url}`
32
+ end
33
+
34
+ def self.who
35
+ [
36
+ msg(:user_name, user_name),
37
+ msg(:user_email, user_email),
38
+ msg(:remote_origin, remote_origin)
39
+ ]
40
+ end
41
+
42
+ def self.msg(key, value)
43
+ { MESSAGES[key] => value }
44
+ end
45
+
46
+ def self.reset
47
+ `git config --local --unset user.name`
48
+ `git config --local --unset user.email`
49
+ set_origin_account user_name
50
+ who
51
+ end
52
+
53
+ def self.user_name
54
+ local_or_remote 'user.name'
55
+ end
56
+
57
+ def self.user_email
58
+ local_or_remote 'user.email'
59
+ end
60
+
61
+ def self.remote_origin
62
+ local_or_remote 'remote.origin.url'
63
+ end
64
+
65
+ def self.local_or_remote(setting)
66
+ value = `git config --local #{setting}`.chomp
67
+
68
+ if value.empty?
69
+ value = `git config --global #{setting}`.chomp # + ' (global)' # interferes when reseting origin
70
+ end
71
+
72
+ value
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,3 @@
1
+ module GitIam
2
+ VERSION = "0.0.3"
3
+ end
data/lib/git-iam.rb ADDED
@@ -0,0 +1,6 @@
1
+ require "git-iam/version"
2
+ require "git-iam/iam"
3
+
4
+ module GitIam
5
+ # Your code goes here...
6
+ end
metadata ADDED
@@ -0,0 +1,143 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: git-iam
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.3
5
+ platform: ruby
6
+ authors:
7
+ - tgolson
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-06-21 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.5'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.5'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '2.14'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '2.14'
55
+ - !ruby/object:Gem::Dependency
56
+ name: cucumber
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: aruba
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: thor
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ description: Command line tool for easily switching git authors, remotes, and other
98
+ configs on shared computers.
99
+ email:
100
+ - tydotg@gmail.com
101
+ executables:
102
+ - git-iam
103
+ extensions: []
104
+ extra_rdoc_files: []
105
+ files:
106
+ - ".gitignore"
107
+ - LICENSE.txt
108
+ - README.md
109
+ - Rakefile
110
+ - bin/git-iam
111
+ - features/iam.feature
112
+ - git-iam.gemspec
113
+ - lib/git-iam.rb
114
+ - lib/git-iam/cli.rb
115
+ - lib/git-iam/iam.rb
116
+ - lib/git-iam/version.rb
117
+ homepage: https://github.com/TGOlson/git_iam
118
+ licenses:
119
+ - MIT
120
+ metadata: {}
121
+ post_install_message:
122
+ rdoc_options: []
123
+ require_paths:
124
+ - lib
125
+ required_ruby_version: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - ">="
128
+ - !ruby/object:Gem::Version
129
+ version: '0'
130
+ required_rubygems_version: !ruby/object:Gem::Requirement
131
+ requirements:
132
+ - - ">="
133
+ - !ruby/object:Gem::Version
134
+ version: '0'
135
+ requirements: []
136
+ rubyforge_project:
137
+ rubygems_version: 2.2.2
138
+ signing_key:
139
+ specification_version: 4
140
+ summary: Command line tool for easily switching git authors, remotes, and other configs
141
+ on shared computers.
142
+ test_files:
143
+ - features/iam.feature