gaman 0.9.0 → 0.9.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +57 -6
- data/bin/checker.sh +31 -0
- data/bin/run-rubocop.sh +35 -0
- data/circle.yml +14 -0
- data/gaman.gemspec +6 -1
- data/lib/gaman/cli.rb +61 -6
- data/lib/gaman/messenger.rb +1 -0
- data/lib/gaman/version.rb +1 -1
- data/spec/file_helper_spec.rb +13 -0
- data/spec/gaman_spec.rb +0 -4
- data/spec/messenger_spec.rb +23 -0
- metadata +55 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 40a768a67a7739110460fb58aa4c1d24cac884aa
|
4
|
+
data.tar.gz: da2e0c0166ca96bdd4959704255d03e8535badc8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 92e127fa721b6d534570000af39cb85e0a33d9276b9bc49cae078684406b8a3965724d1493fbea639afbe4c9b1c44e0d3ab304e18c9d6b6a031bce803d679fe7
|
7
|
+
data.tar.gz: a91d174a923bbf6f39eec11b0812a19223c0d502030cf25d1fb41c19724683d47fea988cd594a0368ba6e18df0e31b06fc754aeba3123bb676fb6132c7fe41ee
|
data/README.md
CHANGED
@@ -1,21 +1,72 @@
|
|
1
|
+
# Gaman
|
2
|
+
[![Gem Version](https://badge.fury.io/rb/gaman.svg)](https://badge.fury.io/rb/gaman)
|
3
|
+
|
4
|
+
When you work on two `github` account. You have to create two `ssh-key` and add them to your accounts (i.e: company account and personal account).
|
5
|
+
|
6
|
+
To switch between them, typicaly, you open terminal:
|
7
|
+
```
|
8
|
+
$ ll ~/.ssh/
|
9
|
+
$ eval "$(ssh-agent -s)"
|
10
|
+
$ ssh-add path/to/new/ssh
|
11
|
+
$ ssh -T git@github.com
|
12
|
+
```
|
13
|
+
It will annoys you alot.
|
14
|
+
|
15
|
+
Don't tired anymore. `gaman` is here to help you on that.
|
16
|
+
|
17
|
+
**For Vietnamese developer**: you can see more at [my blog artical](http://blog.appconus.com/2015/08/06/su-dung-ssh-voi-2-tai-khoan-github-cung-1-luc-2/).
|
18
|
+
|
19
|
+
Required:
|
20
|
+
|
21
|
+
- `ruby` 1.9 or greater (see https://www.ruby-lang.org/en/installation )
|
22
|
+
- `rubygems` (included with ruby; see https://github.com/rubygems/rubygems )
|
23
|
+
|
24
|
+
Recommended:
|
25
|
+
|
26
|
+
- `rvm` for controlling your versions of ruby (see: https://github.com/rvm/rvm )
|
27
|
+
|
1
28
|
## Installation
|
29
|
+
Install as you would any other ruby gem:
|
2
30
|
|
3
31
|
$ gem install gaman
|
4
32
|
|
5
|
-
##
|
33
|
+
## Using
|
34
|
+
### List all ssh keys
|
6
35
|
|
36
|
+
$ gaman list
|
7
37
|
|
8
|
-
|
38
|
+
### Switch to a specific ssh key
|
9
39
|
|
10
|
-
|
40
|
+
$ gaman switch
|
11
41
|
|
12
|
-
|
42
|
+
And then follow the inline-instruction.
|
43
|
+
|
44
|
+
### Create new ssh key
|
45
|
+
|
46
|
+
$ gaman new -e your_email@domain.com
|
47
|
+
|
48
|
+
### Check current user that connect to github via ssh
|
49
|
+
|
50
|
+
$ gaman current_user
|
13
51
|
|
14
|
-
## Contributing
|
15
52
|
|
16
|
-
|
53
|
+
Params: `--server` (or `-s`): github/bitbucket
|
17
54
|
|
55
|
+
If there is no param passed, github will be used as default
|
56
|
+
|
57
|
+
## Contributors
|
58
|
+
[@at-binhcq](https://github.com/CQBinh) from [AsianTech](http://asiantech.vn) with love.
|
59
|
+
## Contributing
|
60
|
+
|
61
|
+
1. Fork [the project](https://github.com/CQBinh/gaman)
|
62
|
+
2. Create your feature branch (`git checkout -b my-awesome-feature`)
|
63
|
+
3. Commit your changes (`git commit -m 'Add some feature'`)
|
64
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
65
|
+
5. Create a new pull request with a description of your changes
|
18
66
|
|
19
67
|
## License
|
20
68
|
|
21
69
|
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
70
|
+
|
71
|
+
## Thank give
|
72
|
+
Special thank to [@vinhnglx](https://github.com/vinhnglx) and [@Nguyenanh](https://github.com/Nguyenanh) for helping me on this project.
|
data/bin/checker.sh
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
#!/usr/bin/env bash
|
2
|
+
|
3
|
+
gem install --no-document rubocop rubocop-checkstyle_formatter \
|
4
|
+
rails_best_practices \
|
5
|
+
reek \
|
6
|
+
checkstyle_filter-git saddler saddler-reporter-github \
|
7
|
+
|
8
|
+
if [ -z "${CI_PULL_REQUEST}" ]; then
|
9
|
+
# when not pull request
|
10
|
+
REPORTER=Saddler::Reporter::Github::CommitReviewComment
|
11
|
+
else
|
12
|
+
REPORTER=Saddler::Reporter::Github::PullRequestReviewComment
|
13
|
+
fi
|
14
|
+
|
15
|
+
echo "********************"
|
16
|
+
echo "* RuboCop *"
|
17
|
+
echo "********************"
|
18
|
+
rubocop --require `gem which rubocop/formatter/checkstyle_formatter` --format RuboCop::Formatter::CheckstyleFormatter --out rubocop.xml
|
19
|
+
cat rubocop.xml \
|
20
|
+
| checkstyle_filter-git diff origin/master \
|
21
|
+
| saddler report \
|
22
|
+
--require saddler/reporter/github \
|
23
|
+
--reporter $REPORTER
|
24
|
+
|
25
|
+
echo "********************"
|
26
|
+
echo "* save outputs *"
|
27
|
+
echo "********************"
|
28
|
+
LINT_RESULT_DIR="$CIRCLE_ARTIFACTS/lint"
|
29
|
+
|
30
|
+
mkdir "$LINT_RESULT_DIR"
|
31
|
+
cp -v "rubocop.xml" "$LINT_RESULT_DIR/"
|
data/bin/run-rubocop.sh
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
set -v
|
3
|
+
if [ "${CIRCLE_BRANCH}" != "master" ]; then
|
4
|
+
|
5
|
+
gem install --no-document rubocop-select rubocop rubocop-checkstyle_formatter \
|
6
|
+
checkstyle_filter-git saddler saddler-reporter-github
|
7
|
+
|
8
|
+
git diff -z --name-only origin/master \
|
9
|
+
| xargs -0 rubocop-select
|
10
|
+
|
11
|
+
git diff -z --name-only origin/master \
|
12
|
+
| xargs -0 rubocop-select \
|
13
|
+
| xargs rubocop \
|
14
|
+
--require rubocop/formatter/checkstyle_formatter \
|
15
|
+
--format RuboCop::Formatter::CheckstyleFormatter
|
16
|
+
|
17
|
+
git diff -z --name-only origin/master \
|
18
|
+
| xargs -0 rubocop-select \
|
19
|
+
| xargs rubocop \
|
20
|
+
--require rubocop/formatter/checkstyle_formatter \
|
21
|
+
--format RuboCop::Formatter::CheckstyleFormatter \
|
22
|
+
| checkstyle_filter-git diff origin/master
|
23
|
+
|
24
|
+
git diff -z --name-only origin/master \
|
25
|
+
| xargs -0 rubocop-select \
|
26
|
+
| xargs rubocop \
|
27
|
+
--require rubocop/formatter/checkstyle_formatter \
|
28
|
+
--format RuboCop::Formatter::CheckstyleFormatter \
|
29
|
+
| checkstyle_filter-git diff origin/master \
|
30
|
+
| saddler report \
|
31
|
+
--require saddler/reporter/github \
|
32
|
+
--reporter Saddler::Reporter::Github::PullRequestReviewComment
|
33
|
+
fi
|
34
|
+
exit 0
|
35
|
+
|
data/circle.yml
ADDED
data/gaman.gemspec
CHANGED
@@ -20,11 +20,16 @@ Gem::Specification.new do |spec|
|
|
20
20
|
|
21
21
|
spec.add_runtime_dependency('rainbow', '2.0')
|
22
22
|
|
23
|
-
spec.add_development_dependency 'bundler', '~> 1.
|
23
|
+
spec.add_development_dependency 'bundler', '~> 1.11.2'
|
24
24
|
spec.add_development_dependency 'rake', '~> 10.0'
|
25
25
|
spec.add_development_dependency 'rspec'
|
26
26
|
spec.add_development_dependency 'pry'
|
27
27
|
spec.add_development_dependency 'rubocop'
|
28
28
|
|
29
|
+
# comment linter directly on pull request
|
30
|
+
spec.add_development_dependency 'saddler'
|
31
|
+
spec.add_development_dependency 'saddler-reporter-github'
|
32
|
+
spec.add_development_dependency 'rubocop-checkstyle_formatter'
|
33
|
+
|
29
34
|
spec.add_dependency 'thor'
|
30
35
|
end
|
data/lib/gaman/cli.rb
CHANGED
@@ -9,10 +9,35 @@ module Gaman
|
|
9
9
|
include Gaman::FileHelper
|
10
10
|
|
11
11
|
desc 'current_user', 'Show current github account that ssh connects to'
|
12
|
+
long_desc <<-current_user
|
13
|
+
|
14
|
+
Params: --server (or -s): github/bitbucket
|
15
|
+
|
16
|
+
If there is no param passed, github will be used as default
|
17
|
+
|
18
|
+
current_user
|
19
|
+
method_option :server, aliases: '-s'
|
12
20
|
def current_user
|
13
|
-
|
14
|
-
|
15
|
-
|
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
|
30
|
+
end
|
31
|
+
|
32
|
+
desc 'show', 'Show public key so you can copy to clipboard'
|
33
|
+
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)
|
40
|
+
end
|
16
41
|
end
|
17
42
|
|
18
43
|
desc 'list', 'Check list ssh keys on machine'
|
@@ -55,7 +80,8 @@ module Gaman
|
|
55
80
|
|
56
81
|
def get_user_input_number_and_then_check_switch(ssh_keys)
|
57
82
|
notice_message('Current ssh keyson your system:')
|
58
|
-
|
83
|
+
message = 'Which key do you want to switch? [Input number]'
|
84
|
+
number = input_number(ssh_keys, message)
|
59
85
|
if number_valid?(number, ssh_keys)
|
60
86
|
perform_switch_ssh_key(number, ssh_keys)
|
61
87
|
else
|
@@ -63,9 +89,9 @@ module Gaman
|
|
63
89
|
end
|
64
90
|
end
|
65
91
|
|
66
|
-
def input_number(ssh_keys)
|
92
|
+
def input_number(ssh_keys, message)
|
67
93
|
display_ssh_keys(ssh_keys)
|
68
|
-
number = ask(notice_message(
|
94
|
+
number = ask(notice_message(message))
|
69
95
|
begin
|
70
96
|
Integer(number)
|
71
97
|
rescue
|
@@ -85,5 +111,34 @@ module Gaman
|
|
85
111
|
system("ssh-add #{key_path}")
|
86
112
|
current_user
|
87
113
|
end
|
114
|
+
|
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
|
136
|
+
end
|
137
|
+
|
138
|
+
def perform_show_ssh_key(number, ssh_keys)
|
139
|
+
key = ssh_keys[number]
|
140
|
+
key_path = "#{ssh_path}/#{key}"
|
141
|
+
system("cat #{key_path}")
|
142
|
+
end
|
88
143
|
end
|
89
144
|
end
|
data/lib/gaman/messenger.rb
CHANGED
@@ -12,6 +12,7 @@ module Gaman
|
|
12
12
|
if ssh_keys.nil?
|
13
13
|
notice_message('You have no ssh key.')
|
14
14
|
else
|
15
|
+
fail ArgumentError, 'ssh_keys must be an Array' unless ssh_keys.class.eql? Array
|
15
16
|
ssh_keys.each_with_index do |key, index|
|
16
17
|
puts "[#{Rainbow(index).underline.bright.cyan}] - #{key}"
|
17
18
|
end
|
data/lib/gaman/version.rb
CHANGED
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'gaman/file_helper'
|
3
|
+
|
4
|
+
RSpec.describe 'FileHelper' do
|
5
|
+
let(:gaman) { Gaman::GithubAccountManager.new }
|
6
|
+
|
7
|
+
context 'ssh_path' do
|
8
|
+
it 'right ssh path' do
|
9
|
+
ssh_path = "#{Dir.home}/.ssh"
|
10
|
+
expect(gaman.ssh_path).to match(ssh_path)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
data/spec/gaman_spec.rb
CHANGED
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'gaman/messenger'
|
3
|
+
|
4
|
+
RSpec.describe 'Messenger' do
|
5
|
+
let(:gaman) { Gaman::GithubAccountManager.new }
|
6
|
+
|
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
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'raise ArgumentError when ssh_keys are not Array' do
|
13
|
+
not_array_value = 1
|
14
|
+
expect { gaman.display_ssh_keys(not_array_value) }.to raise_error(ArgumentError)
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'display in right format' do
|
18
|
+
ssh_keys = %w(foo bar)
|
19
|
+
output_format = /.+\d+.+ - \w.*/
|
20
|
+
expect { gaman.display_ssh_keys(ssh_keys) }.to output(output_format).to_stdout
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
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.
|
4
|
+
version: 0.9.1
|
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-
|
11
|
+
date: 2016-01-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rainbow
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 1.11.2
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 1.11.2
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rake
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -94,6 +94,48 @@ dependencies:
|
|
94
94
|
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: saddler
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: saddler-reporter-github
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: rubocop-checkstyle_formatter
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
97
139
|
- !ruby/object:Gem::Dependency
|
98
140
|
name: thor
|
99
141
|
requirement: !ruby/object:Gem::Requirement
|
@@ -112,8 +154,10 @@ description: Switch ssh github
|
|
112
154
|
email:
|
113
155
|
- binhcq@asiantech.vn
|
114
156
|
executables:
|
157
|
+
- checker.sh
|
115
158
|
- console
|
116
159
|
- gaman
|
160
|
+
- run-rubocop.sh
|
117
161
|
- setup
|
118
162
|
extensions: []
|
119
163
|
extra_rdoc_files: []
|
@@ -127,16 +171,21 @@ files:
|
|
127
171
|
- LICENSE.txt
|
128
172
|
- README.md
|
129
173
|
- Rakefile
|
174
|
+
- bin/checker.sh
|
130
175
|
- bin/console
|
131
176
|
- bin/gaman
|
177
|
+
- bin/run-rubocop.sh
|
132
178
|
- bin/setup
|
179
|
+
- circle.yml
|
133
180
|
- gaman.gemspec
|
134
181
|
- lib/gaman.rb
|
135
182
|
- lib/gaman/cli.rb
|
136
183
|
- lib/gaman/file_helper.rb
|
137
184
|
- lib/gaman/messenger.rb
|
138
185
|
- lib/gaman/version.rb
|
186
|
+
- spec/file_helper_spec.rb
|
139
187
|
- spec/gaman_spec.rb
|
188
|
+
- spec/messenger_spec.rb
|
140
189
|
- spec/spec_helper.rb
|
141
190
|
homepage:
|
142
191
|
licenses:
|
@@ -163,6 +212,8 @@ signing_key:
|
|
163
212
|
specification_version: 4
|
164
213
|
summary: Github account manager.
|
165
214
|
test_files:
|
215
|
+
- spec/file_helper_spec.rb
|
166
216
|
- spec/gaman_spec.rb
|
217
|
+
- spec/messenger_spec.rb
|
167
218
|
- spec/spec_helper.rb
|
168
219
|
has_rdoc:
|