gaman 0.9.1 → 0.9.2

Sign up to get free protection for your applications and to get access to all the features.
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