vinz-clortho 0.1.1 → 0.2.0
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 +4 -4
- data/README.md +3 -3
- data/lib/vinz/clortho.rb +1 -1
- data/lib/vinz/clortho/github_key_uploader.rb +1 -1
- data/lib/vinz/clortho/ssh_key_path_manager.rb +62 -0
- data/lib/vinz/clortho/ssh_setup.rb +14 -9
- data/lib/vinz/clortho/version.rb +1 -1
- metadata +3 -3
- data/lib/vinz/clortho/git_authors_manager.rb +0 -40
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 1c7d1dc9a67cbe8dbb7fed2576a513dbbf1893a2
|
|
4
|
+
data.tar.gz: 0ae8f1d61cce96605e507ea754a29174c8ae0f2d
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 1c45a032491881e39f991ccc4c74d6c365fba9b73d31c28b23e7b13f18401e99010055758f5616a52486bb401e2216ecfeee2309a07cf195b355fd89ae190ab3
|
|
7
|
+
data.tar.gz: a94adbb62af2e8dc09556b71459631e2f662f8fcd02007b6ab86dc9740c2d02b698191b7c2084d2ac9344e1142ff7e1eb228ac51fc1d1927d09a14ea9a3fea3c
|
data/README.md
CHANGED
|
@@ -15,13 +15,13 @@ sshkey_paths:
|
|
|
15
15
|
```
|
|
16
16
|
See the [.git-authors](.git-authors) file in this repository as a full example.
|
|
17
17
|
|
|
18
|
-
Vinz Clortho also requires the [Octokit](https://github.com/octokit/octokit.rb) rubygem for communicating with GitHub. You can install this via `gem install octokit`.
|
|
19
18
|
|
|
20
19
|
## Usage
|
|
21
|
-
|
|
20
|
+
|
|
21
|
+
Run `git ssh-login [committer-initials]` to add the SSH key corresponding to the committer's initials. If no committer initials are included, then all available keys will be added. The key expiry is set to 12:30 PM if executed before 12:30 PM, 6:00 PM if executed after that but before 6:00 PM, or within 15 minutes if executed after 6:00 PM.
|
|
22
22
|
|
|
23
23
|
```
|
|
24
|
-
Usage: git ssh-login [options]
|
|
24
|
+
Usage: git ssh-login [options] [committer-initials]
|
|
25
25
|
|
|
26
26
|
-h, --help Shows help
|
|
27
27
|
-v, --version Returns version
|
data/lib/vinz/clortho.rb
CHANGED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
require 'yaml'
|
|
2
|
+
|
|
3
|
+
module Vinz
|
|
4
|
+
module Clortho
|
|
5
|
+
class UserNotFoundError < StandardError
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
class KeyPathEntry
|
|
9
|
+
attr_reader :initials, :path
|
|
10
|
+
def initialize(path, initials = nil)
|
|
11
|
+
@initials = initials
|
|
12
|
+
@path = path
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
class SSHKeyPathManager
|
|
17
|
+
attr_reader :key_paths
|
|
18
|
+
|
|
19
|
+
DEFAULT_KEY_PATH = '/Volumes/*/.ssh/id_rsa'
|
|
20
|
+
|
|
21
|
+
def initialize
|
|
22
|
+
@key_paths = if git_authors_file.nil?
|
|
23
|
+
Dir[DEFAULT_KEY_PATH].map { |path| KeyPathEntry.new(path) }
|
|
24
|
+
else
|
|
25
|
+
git_authors = YAML::load_file(git_authors_file)
|
|
26
|
+
git_authors['sshkey_paths'].map do |initials, path|
|
|
27
|
+
KeyPathEntry.new(path, initials)
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def key_path_for(initials)
|
|
33
|
+
raise ArgumentError.new('Committer initials are required') unless initials
|
|
34
|
+
key_path = @key_paths.detect { |kp| kp.initials == initials }
|
|
35
|
+
if key_path.nil?
|
|
36
|
+
raise UserNotFoundError.new(user_not_found_msg)
|
|
37
|
+
else
|
|
38
|
+
key_path.path
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
private
|
|
43
|
+
|
|
44
|
+
def git_authors_file(current_dir = Dir.pwd)
|
|
45
|
+
@git_authors_file ||= begin
|
|
46
|
+
git_authors_location = File.join(current_dir, '.git-authors')
|
|
47
|
+
if File.exist?(git_authors_location)
|
|
48
|
+
git_authors_location
|
|
49
|
+
elsif current_dir == '/'
|
|
50
|
+
nil
|
|
51
|
+
else
|
|
52
|
+
git_authors_file(File.expand_path('..', current_dir))
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def user_not_found_msg
|
|
58
|
+
"ERROR: Unable to find committer initials in .git-authors (check the \"sshkey_paths\" mapping for your initials)."
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
@@ -4,15 +4,19 @@ module Vinz
|
|
|
4
4
|
attr_reader :key_expiry
|
|
5
5
|
|
|
6
6
|
def initialize
|
|
7
|
-
@
|
|
7
|
+
@ssh_key_path_mgr = SSHKeyPathManager.new
|
|
8
8
|
end
|
|
9
9
|
|
|
10
|
-
def login(initials)
|
|
10
|
+
def login(initials = nil)
|
|
11
11
|
set_key_expiry
|
|
12
12
|
key_ttl = @key_expiry.to_i - Time.now.to_i
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
if initials.nil?
|
|
14
|
+
login_all key_ttl
|
|
15
|
+
else
|
|
16
|
+
key_path = @ssh_key_path_mgr.key_path_for initials
|
|
17
|
+
raise Errno::ENOENT.new unless File.exist? key_path
|
|
18
|
+
ssh_add(key_ttl, key_path)
|
|
19
|
+
end
|
|
16
20
|
end
|
|
17
21
|
|
|
18
22
|
def login_all(key_ttl = nil)
|
|
@@ -21,7 +25,8 @@ module Vinz
|
|
|
21
25
|
key_ttl = @key_expiry.to_i - Time.now.to_i
|
|
22
26
|
end
|
|
23
27
|
|
|
24
|
-
@
|
|
28
|
+
@ssh_key_path_mgr.key_paths.each do |key_path|
|
|
29
|
+
path = key_path.path
|
|
25
30
|
ssh_add(key_ttl, path) if File.exist?(path)
|
|
26
31
|
end
|
|
27
32
|
end
|
|
@@ -31,11 +36,11 @@ module Vinz
|
|
|
31
36
|
end
|
|
32
37
|
|
|
33
38
|
def usage_msg
|
|
34
|
-
committers_and_keypaths = @
|
|
35
|
-
"\t#{
|
|
39
|
+
committers_and_keypaths = @ssh_key_path_mgr.key_paths.map do |key_path|
|
|
40
|
+
"\t#{key_path.initials} : #{key_path.path}"
|
|
36
41
|
end
|
|
37
42
|
msg = <<-MSG
|
|
38
|
-
Usage: git ssh-login [options]
|
|
43
|
+
Usage: git ssh-login [options] [committer-initials]
|
|
39
44
|
|
|
40
45
|
known committers:
|
|
41
46
|
#{committers_and_keypaths.join("\n")}
|
data/lib/vinz/clortho/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: vinz-clortho
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Liam Morley
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: exe
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2015-10-
|
|
12
|
+
date: 2015-10-02 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: octokit
|
|
@@ -104,8 +104,8 @@ files:
|
|
|
104
104
|
- exe/git-ssh-login-all
|
|
105
105
|
- exe/git-ssh-login-install-hook
|
|
106
106
|
- lib/vinz/clortho.rb
|
|
107
|
-
- lib/vinz/clortho/git_authors_manager.rb
|
|
108
107
|
- lib/vinz/clortho/github_key_uploader.rb
|
|
108
|
+
- lib/vinz/clortho/ssh_key_path_manager.rb
|
|
109
109
|
- lib/vinz/clortho/ssh_setup.rb
|
|
110
110
|
- lib/vinz/clortho/version.rb
|
|
111
111
|
- vinz-clortho.gemspec
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
require 'yaml'
|
|
2
|
-
|
|
3
|
-
module Vinz
|
|
4
|
-
module Clortho
|
|
5
|
-
class UserNotFoundError < StandardError
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
class GitAuthorsManager
|
|
9
|
-
def initialize
|
|
10
|
-
@git_authors = YAML::load_file(git_authors_file)
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
def all_key_paths
|
|
14
|
-
@git_authors['sshkey_paths']
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def key_path_for(initials)
|
|
18
|
-
raise ArgumentError.new('Committer initials are required') unless initials
|
|
19
|
-
@git_authors['sshkey_paths'][initials] or raise UserNotFoundError.new(user_not_found_msg)
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
private
|
|
23
|
-
|
|
24
|
-
def git_authors_file(current_dir = Dir.pwd)
|
|
25
|
-
git_authors_location = File.join(current_dir, '.git-authors')
|
|
26
|
-
if File.exist?(git_authors_location)
|
|
27
|
-
git_authors_location
|
|
28
|
-
elsif current_dir == '/'
|
|
29
|
-
raise Errno::ENOENT.new
|
|
30
|
-
else
|
|
31
|
-
git_authors_file(File.expand_path('..', current_dir))
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
def user_not_found_msg
|
|
36
|
-
"ERROR: Unable to find committer initials in mapping (check the \"sshkey_paths\" mapping for your initials)."
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
end
|