gaman 0.9.1 → 0.9.2

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,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 40a768a67a7739110460fb58aa4c1d24cac884aa
4
- data.tar.gz: da2e0c0166ca96bdd4959704255d03e8535badc8
3
+ metadata.gz: c581bb32b307b6fbdb24c968574ce7fe11d17d21
4
+ data.tar.gz: b61a1645e5954e84f4088e707fded95ca48cd8d5
5
5
  SHA512:
6
- metadata.gz: 92e127fa721b6d534570000af39cb85e0a33d9276b9bc49cae078684406b8a3965724d1493fbea639afbe4c9b1c44e0d3ab304e18c9d6b6a031bce803d679fe7
7
- data.tar.gz: a91d174a923bbf6f39eec11b0812a19223c0d502030cf25d1fb41c19724683d47fea988cd594a0368ba6e18df0e31b06fc754aeba3123bb676fb6132c7fe41ee
6
+ metadata.gz: 67b8d2c74000cbad9c98ce945d8139f2ad939ebf7cb8227b411c8d766ec4ea4327d9152837ef149e80a0ae0d168d70a39df3072e1d52b920bc896c1beb5fff11
7
+ data.tar.gz: 1e8f89881d16ec8a0ebdb419c7b2ca521ba47f71948e0ac7f3f380ed8f90255a0233e4d81d177a986167b3835be5e17359259d8ca940160fbc291188d55dcdc8
data/README.md CHANGED
@@ -41,6 +41,12 @@ Install as you would any other ruby gem:
41
41
 
42
42
  And then follow the inline-instruction.
43
43
 
44
+ Or
45
+
46
+ $ gaman switch key_index
47
+
48
+ with key_index is a `number` shown in `list` method.
49
+
44
50
  ### Create new ssh key
45
51
 
46
52
  $ gaman new -e your_email@domain.com
@@ -49,16 +55,19 @@ And then follow the inline-instruction.
49
55
 
50
56
  $ gaman current_user
51
57
 
58
+ ### Check Gaman version
59
+
60
+ $ gaman -v (or `--version`)
52
61
 
53
62
  Params: `--server` (or `-s`): github/bitbucket
54
63
 
55
64
  If there is no param passed, github will be used as default
56
65
 
57
66
  ## Contributors
58
- [@at-binhcq](https://github.com/CQBinh) from [AsianTech](http://asiantech.vn) with love.
67
+ [@CQBinh](https://github.com/CQBinh) from [AsianTech](http://asiantech.vn) with love.
59
68
  ## Contributing
60
69
 
61
- 1. Fork [the project](https://github.com/CQBinh/gaman)
70
+ 1. Fork [https://github.com/CQBinh/gaman](https://github.com/CQBinh/gaman)
62
71
  2. Create your feature branch (`git checkout -b my-awesome-feature`)
63
72
  3. Commit your changes (`git commit -m 'Add some feature'`)
64
73
  4. Push to the branch (`git push origin my-new-feature`)
data/bin/gaman CHANGED
@@ -1,4 +1,4 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  require 'gaman'
4
- Gaman::GithubAccountManager.start(ARGV)
4
+ Gaman::GitAccountManager.start(ARGV)
@@ -6,11 +6,13 @@ require 'gaman/version'
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = 'gaman'
8
8
  spec.version = Gaman::VERSION
9
+ spec.platform = Gem::Platform::RUBY
9
10
  spec.authors = ['CAO Quang Binh']
10
- spec.email = ['binhcq@asiantech.vn']
11
+ spec.email = ['binh.cao@appconus.com']
11
12
 
12
- spec.summary = 'Github account manager.'
13
- spec.description = 'Switch ssh github'
13
+ spec.summary = 'Git Account MANager.'
14
+ spec.description = 'Switch git ssh connection'
15
+ spec.homepage = 'https://github.com/CQBinh/gaman'
14
16
  spec.license = 'MIT'
15
17
 
16
18
  spec.files = `git ls-files -z`.split("\x0")
@@ -23,7 +25,6 @@ Gem::Specification.new do |spec|
23
25
  spec.add_development_dependency 'bundler', '~> 1.11.2'
24
26
  spec.add_development_dependency 'rake', '~> 10.0'
25
27
  spec.add_development_dependency 'rspec'
26
- spec.add_development_dependency 'pry'
27
28
  spec.add_development_dependency 'rubocop'
28
29
 
29
30
  # comment linter directly on pull request
@@ -32,4 +33,5 @@ Gem::Specification.new do |spec|
32
33
  spec.add_development_dependency 'rubocop-checkstyle_formatter'
33
34
 
34
35
  spec.add_dependency 'thor'
36
+ spec.add_dependency 'pry'
35
37
  end
@@ -4,10 +4,17 @@ require_relative 'messenger'
4
4
  require_relative 'file_helper'
5
5
 
6
6
  module Gaman
7
- class GithubAccountManager < Thor
7
+ class GitAccountManager < Thor
8
8
  include Gaman::Messenger
9
9
  include Gaman::FileHelper
10
10
 
11
+ desc 'version', 'Show the Gaman version'
12
+ map %w(-v --version) => :version
13
+
14
+ def version
15
+ puts "Gaman version #{::Gaman::VERSION} on Ruby #{RUBY_VERSION}"
16
+ end
17
+
11
18
  desc 'current_user', 'Show current github account that ssh connects to'
12
19
  long_desc <<-current_user
13
20
 
@@ -18,33 +25,22 @@ module Gaman
18
25
  current_user
19
26
  method_option :server, aliases: '-s'
20
27
  def current_user
21
- server = options[:server]
22
- case server
23
- when 'github'
24
- check_current_user_github
25
- when 'bitbucket'
26
- check_current_user_bitbucket
27
- else
28
- check_current_user_github
29
- end
28
+ check_current_user options.fetch('server', 'github')
30
29
  end
31
30
 
32
31
  desc 'show', 'Show public key so you can copy to clipboard'
33
32
  def show
34
- system('eval "$(ssh-agent -s)"')
35
- ssh_keys = all_public_ssh_file
36
- if ssh_keys.nil?
37
- error_message('There is no ssh key to show. Exiting...')
38
- else
39
- get_user_input_number_and_then_show(ssh_keys)
33
+ eval_ssh_agent_s
34
+
35
+ get_user_input_number(all_public_ssh_file) do |number, ssh_keys|
36
+ show_ssh_key(number, ssh_keys)
40
37
  end
41
38
  end
42
39
 
43
40
  desc 'list', 'Check list ssh keys on machine'
44
41
  def list
45
42
  notice_message('Checking ssh keys in your machine...')
46
- ssh_keys = all_public_ssh_file
47
- display_ssh_keys(ssh_keys)
43
+ display_ssh_keys(all_public_ssh_file)
48
44
  end
49
45
 
50
46
  desc 'new', 'Generate new ssh key'
@@ -53,37 +49,81 @@ module Gaman
53
49
  system("ssh-keygen -t rsa -b 4096 -C #{options[:email]}")
54
50
  end
55
51
 
56
- desc 'switch', 'Switch to another ssh key'
57
- def switch
58
- system('eval "$(ssh-agent -s)"')
59
- ssh_keys = all_public_ssh_file
60
- if ssh_keys.nil?
61
- error_message('There is no ssh key to switch. Exiting...')
52
+ desc 'switch', 'Switch to another ssh key (pass key_index to directly switch)'
53
+ long_desc <<-switch
54
+
55
+ Params: key_index: key index from "list" method
56
+
57
+ switch
58
+ def switch(key_index = nil)
59
+ if key_index.nil?
60
+ switch_by_showing_list_keys
62
61
  else
63
- get_user_input_number_and_then_check_switch(ssh_keys)
62
+ switch_by_key_index(key_index.to_i)
64
63
  end
65
64
  end
66
65
 
66
+ no_commands{
67
+ def display_ssh_keys(ssh_keys)
68
+ fail ArgumentError, 'ssh_keys must be an Array' unless ssh_keys.is_a? Array
69
+
70
+ notice_message('You have no ssh key.') if ssh_keys.empty?
71
+
72
+ ssh_keys.each_with_index do |key, index|
73
+ puts "[#{Rainbow(index).underline.bright.cyan}] - #{key}"
74
+ end
75
+ end
76
+ }
77
+
67
78
  private
68
79
 
80
+ def switch_by_key_index(key_index)
81
+ ssh_keys = all_public_ssh_file
82
+ return error_message('There are no ssh keys. Exiting...') if ssh_keys.empty?
83
+ check_number_and_yield_if_valid(key_index, ssh_keys) do |number, ssh_keys|
84
+ switch_ssh_key(number, ssh_keys)
85
+ end
86
+ end
87
+
88
+ def switch_by_showing_list_keys
89
+ eval_ssh_agent_s
90
+
91
+ get_user_input_number(all_public_ssh_file) do |number, ssh_keys|
92
+ switch_ssh_key(number, ssh_keys)
93
+ end
94
+ end
95
+
96
+ def eval_ssh_agent_s
97
+ system('eval "$(ssh-agent -s)"')
98
+ end
99
+
69
100
  def all_public_ssh_file
70
101
  if File.exist?(ssh_path)
71
- files = Dir.entries(ssh_path)
72
- files = files.select { |f| f.include?('.pub') && files.include?(f[0..-5]) }
73
- files
102
+ Dir["#{ssh_path}/*.pub"]
74
103
  else
75
104
  notice_message('You have no ssh key. To create new one, run this command:')
76
105
  puts Rainbow('$ gaman new -e your_email@domain.com').blue
77
- nil
106
+ []
78
107
  end
79
108
  end
80
109
 
81
- def get_user_input_number_and_then_check_switch(ssh_keys)
82
- notice_message('Current ssh keyson your system:')
110
+ def get_user_input_number(ssh_keys)
111
+ return error_message('There are no ssh keys. Exiting...') if ssh_keys.empty?
112
+
113
+ notice_message('Current ssh keys on your system:')
83
114
  message = 'Which key do you want to switch? [Input number]'
84
115
  number = input_number(ssh_keys, message)
85
116
  if number_valid?(number, ssh_keys)
86
- perform_switch_ssh_key(number, ssh_keys)
117
+ block_given? ? yield(number, ssh_keys) : [number, ssh_keys]
118
+ else
119
+ error_message('Wrong value. Exiting...')
120
+ end
121
+ # check_number_and_yield_if_valid(number, ssh_keys)
122
+ end
123
+
124
+ def check_number_and_yield_if_valid(number, ssh_keys)
125
+ if number_valid?(number, ssh_keys)
126
+ block_given? ? yield(number, ssh_keys) : [number, ssh_keys]
87
127
  else
88
128
  error_message('Wrong value. Exiting...')
89
129
  end
@@ -103,42 +143,23 @@ module Gaman
103
143
  !number.nil? && number >= 0 && number <= ssh_keys.size - 1
104
144
  end
105
145
 
106
- def perform_switch_ssh_key(number, ssh_keys)
107
- key = ssh_keys[number]
108
- key_path = "#{ssh_path}/#{key[0..-5]}"
146
+ def switch_ssh_key(number, ssh_keys)
147
+ key = ssh_keys[number][0..-5]
109
148
  system('ssh-add -D')
110
- notice_message("Adding #{key_path}")
111
- system("ssh-add #{key_path}")
149
+ notice_message("Adding #{key}")
150
+ system("ssh-add #{key}")
112
151
  current_user
113
152
  end
114
153
 
115
- def check_current_user_github
116
- notice_message('Checking ssh conection to github...')
117
- check_ssh_github = 'ssh -T git@github.com'
118
- system(check_ssh_github)
119
- end
120
-
121
- def check_current_user_bitbucket
122
- notice_message('Checking ssh conection to bitbucket...')
123
- check_ssh_github = 'ssh -T git@bitbucket.org'
124
- system(check_ssh_github)
125
- end
126
-
127
- def get_user_input_number_and_then_show(ssh_keys)
128
- notice_message('Current ssh keyson your system:')
129
- message = 'Which key do you want to show? [Input number]'
130
- number = input_number(ssh_keys, message)
131
- if number_valid?(number, ssh_keys)
132
- perform_show_ssh_key(number, ssh_keys)
133
- else
134
- error_message('Wrong value. Exiting...')
135
- end
154
+ def check_current_user(server)
155
+ servers = { 'github' => 'github.com', 'bitbucket' => 'bitbucket.org' }
156
+ notice_message("Checking ssh conection to #{server}...")
157
+ system("ssh -T git@#{servers[server]}")
136
158
  end
137
159
 
138
- def perform_show_ssh_key(number, ssh_keys)
160
+ def show_ssh_key(number, ssh_keys)
139
161
  key = ssh_keys[number]
140
- key_path = "#{ssh_path}/#{key}"
141
- system("cat #{key_path}")
162
+ system("cat #{key}")
142
163
  end
143
164
  end
144
165
  end
@@ -7,16 +7,5 @@ module Gaman
7
7
  def error_message(message)
8
8
  puts Rainbow(message).red
9
9
  end
10
-
11
- def display_ssh_keys(ssh_keys)
12
- if ssh_keys.nil?
13
- notice_message('You have no ssh key.')
14
- else
15
- fail ArgumentError, 'ssh_keys must be an Array' unless ssh_keys.class.eql? Array
16
- ssh_keys.each_with_index do |key, index|
17
- puts "[#{Rainbow(index).underline.bright.cyan}] - #{key}"
18
- end
19
- end
20
- end
21
10
  end
22
11
  end
@@ -1,3 +1,3 @@
1
1
  module Gaman
2
- VERSION = '0.9.1'
2
+ VERSION = '0.9.2'.freeze
3
3
  end
@@ -2,7 +2,7 @@ require 'spec_helper'
2
2
  require 'gaman/file_helper'
3
3
 
4
4
  RSpec.describe 'FileHelper' do
5
- let(:gaman) { Gaman::GithubAccountManager.new }
5
+ let(:gaman) { Gaman::GitAccountManager.new }
6
6
 
7
7
  context 'ssh_path' do
8
8
  it 'right ssh path' do
@@ -2,11 +2,11 @@ require 'spec_helper'
2
2
  require 'gaman/messenger'
3
3
 
4
4
  RSpec.describe 'Messenger' do
5
- let(:gaman) { Gaman::GithubAccountManager.new }
5
+ let(:gaman) { Gaman::GitAccountManager.new }
6
6
 
7
7
  context 'display_ssh_keys' do
8
- it 'notice when nil ssh_keys passed' do
9
- expect { gaman.display_ssh_keys(nil) }.to output(/no ssh key/).to_stdout
8
+ it 'notice when empty array passed' do
9
+ expect { gaman.display_ssh_keys([]) }.to output(/no ssh key/).to_stdout
10
10
  end
11
11
 
12
12
  it 'raise ArgumentError when ssh_keys are not Array' do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gaman
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.1
4
+ version: 0.9.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - CAO Quang Binh
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-15 00:00:00.000000000 Z
11
+ date: 2016-02-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rainbow
@@ -67,7 +67,7 @@ dependencies:
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
- name: pry
70
+ name: rubocop
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - ">="
@@ -81,7 +81,7 @@ dependencies:
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
- name: rubocop
84
+ name: saddler
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - ">="
@@ -95,7 +95,7 @@ dependencies:
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
- name: saddler
98
+ name: saddler-reporter-github
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - ">="
@@ -109,7 +109,7 @@ dependencies:
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
111
  - !ruby/object:Gem::Dependency
112
- name: saddler-reporter-github
112
+ name: rubocop-checkstyle_formatter
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - ">="
@@ -123,13 +123,13 @@ dependencies:
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
125
  - !ruby/object:Gem::Dependency
126
- name: rubocop-checkstyle_formatter
126
+ name: thor
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
129
  - - ">="
130
130
  - !ruby/object:Gem::Version
131
131
  version: '0'
132
- type: :development
132
+ type: :runtime
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
@@ -137,7 +137,7 @@ dependencies:
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
139
  - !ruby/object:Gem::Dependency
140
- name: thor
140
+ name: pry
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
143
  - - ">="
@@ -150,9 +150,9 @@ dependencies:
150
150
  - - ">="
151
151
  - !ruby/object:Gem::Version
152
152
  version: '0'
153
- description: Switch ssh github
153
+ description: Switch git ssh connection
154
154
  email:
155
- - binhcq@asiantech.vn
155
+ - binh.cao@appconus.com
156
156
  executables:
157
157
  - checker.sh
158
158
  - console
@@ -187,7 +187,7 @@ files:
187
187
  - spec/gaman_spec.rb
188
188
  - spec/messenger_spec.rb
189
189
  - spec/spec_helper.rb
190
- homepage:
190
+ homepage: https://github.com/CQBinh/gaman
191
191
  licenses:
192
192
  - MIT
193
193
  metadata: {}
@@ -207,10 +207,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
207
207
  version: '0'
208
208
  requirements: []
209
209
  rubyforge_project:
210
- rubygems_version: 2.4.5.1
210
+ rubygems_version: 2.4.5
211
211
  signing_key:
212
212
  specification_version: 4
213
- summary: Github account manager.
213
+ summary: Git Account MANager.
214
214
  test_files:
215
215
  - spec/file_helper_spec.rb
216
216
  - spec/gaman_spec.rb