skm 0.1.1 → 0.1.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.
Files changed (5) hide show
  1. checksums.yaml +8 -8
  2. data/README.md +2 -0
  3. data/bin/skm +57 -5
  4. data/lib/skm/version.rb +1 -1
  5. metadata +2 -2
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- YmZiODAwYTdlODA4ZmY2M2E3NmI4MGE5NDBlZDYxYTgwNDY0NDhjYQ==
4
+ ZjRiOGRjZDZlMzI1ODg2MWNkYWFiZmYwNjAwM2M3Y2Q3Y2FhZmUwNg==
5
5
  data.tar.gz: !binary |-
6
- ZWZlZWY1MmM2NmYzMjQ2MDEwMzAxN2UwNGUxOGE0MGY4NWE5ZjE4OQ==
6
+ ZjA3OWViMTZiMmFhMzdjOTBmYWZkZGMzZjdiNmZiOGIxYTMyM2YwMw==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- ZTE3MThlOWQ4NGU1NDEwMDk1MWMzODRjY2Y3MWU3ZTg3YzMwMDc2MzIzZWIx
10
- M2FiMDFlMWZkZWNmMDgxZmZlNmIwM2YwYjM2ODZlNzllMzRiZDZkMjRkMDIz
11
- ZWVhYWFiNTg4MGM0YTc5ZmZjMzY1ZjU5ODJkZDk2YWMwMzVhZDY=
9
+ OTgyZTU0ZTQ3MjUzYzFhNzFlYzA5YTk5NTUzYTQ2ZWYzZTY5M2EwNjZiOGNj
10
+ NDUwMTY2MzMxYWFmN2E0MTdjMzFhMzJlMjRlZTkxMTlhZmI3MmZhYjE1OTg3
11
+ MGM5ZWQyYjQ1MDAzNjQ2MTdjZDdjYjRhNTgxOGFkODBiY2U4ZGE=
12
12
  data.tar.gz: !binary |-
13
- ZGUxYjEzYjJlMjllMWIyMzdiMDdkYWU3YzRjYTJhYjUxOTY5NjdhNmI2N2Qw
14
- NGIzZjIxOGJjM2E4ZjM0MGE5Zjg2NzM1ODA3MjU3MjA4YzI3ZGI3M2EyNWFm
15
- YzE5MzY0YjYyOWQ4NzVmOGQyMDYzNzgwMjE1NzNiZTZjMzg0YmY=
13
+ ZTAyZWEyYmNkYTBlMDAyNmJkNjkxNGU3ZTk1MGZhNDEyOWRlNzNjZmE3Zjhk
14
+ Mjc1NTM3OTFmNjFlN2U5NTk5OTVjZjEyZDExZjZmZjBkMjYzMjYxMDU0MjVk
15
+ OGQ1NDdmNGY1YzgxMzQ3OThiMjEzY2M1NTMxZWM4N2FhMTUxNGY=
data/README.md CHANGED
@@ -22,6 +22,8 @@ Switch to another key:
22
22
 
23
23
  skm use key_name
24
24
 
25
+ NOTE: ssh-agent may need to be disabled for this new key to be valid!
26
+
25
27
  List all keys:
26
28
 
27
29
  skm list
data/bin/skm CHANGED
@@ -13,9 +13,25 @@ end
13
13
 
14
14
  DOT_SSH_DIR = "#{HOME_DIR}/.ssh"
15
15
 
16
+ # check the existance of a key
17
+ # @pub: also check public key?
18
+ def does_key_exist?(keys_dir, name, pub)
19
+ does_rsa_key_exist?(keys_dir, name, pub) || does_dsa_key_exist?(keys_dir, name, pub)
20
+ end
21
+
22
+ def does_rsa_key_exist?(keys_dir, name, pub)
23
+ key_dir = "#{keys_dir}/#{name}"
24
+ File.exists?("#{key_dir}/id_rsa") && (!pub || File.exists?("#{key_dir}/id_rsa.pub"))
25
+ end
26
+
27
+ def does_dsa_key_exist?(keys_dir, name, pub)
28
+ key_dir = "#{keys_dir}/#{name}"
29
+ File.exists?("#{key_dir}/id_dsa") && (!pub || File.exists?("#{key_dir}/id_dsa.pub"))
30
+ end
31
+
16
32
  # create command
17
33
  def cmd_create(argv, keys_dir)
18
- # create a new ssh key under ~/.mul-ssh-keys/key-name directory
34
+ # create a new ssh key under ~/.skm/key-name directory
19
35
 
20
36
  opts = Trollop::options do
21
37
 
@@ -69,7 +85,7 @@ def cmd_use(argv, keys_dir)
69
85
  key_dir = "#{keys_dir}/#{name}"
70
86
 
71
87
  # check for existence of the key
72
- unless File.exists? "#{key_dir}/id_rsa" or File.exists? "#{key_dir}/id_dsa"
88
+ unless does_key_exist?(keys_dir, name, false)
73
89
  puts "Key #{name} doesn't exist."
74
90
  exit 3
75
91
  end
@@ -101,6 +117,39 @@ def cmd_list(argv, keys_dir)
101
117
  end
102
118
  end
103
119
 
120
+ # show command
121
+ def cmd_show(argv, keys_dir)
122
+ Trollop::options do
123
+ banner <<-EOS
124
+ Ssh Key Manager
125
+
126
+ skm show key-name
127
+
128
+ Args:
129
+ EOS
130
+ end
131
+
132
+ Trollop::die "Too few arguments for 'show' command." if argv.empty?
133
+
134
+ name = argv[0]
135
+
136
+ # get the pub file
137
+ pub_file = ''
138
+ if does_rsa_key_exist?(keys_dir, name, true)
139
+ pub_file = "id_rsa.pub"
140
+ elsif does_dsa_key_exist?(keys_dir, name, true)
141
+ pub_file = "id_dsa.pub"
142
+ else
143
+ puts "Key #{name} doesn't exist."
144
+ exit 4
145
+ end
146
+
147
+ File.open("#{keys_dir}/#{name}/#{pub_file}", 'r').each_line do |line|
148
+ puts line
149
+ end
150
+ end
151
+
152
+
104
153
  SUB_COMMANDS = %w(create list use)
105
154
  global_opts = Trollop::options do
106
155
  version "#{SshKeyManager::VERSION::STRING} (C) 2013 Hong Xu"
@@ -114,6 +163,7 @@ global_opts = Trollop::options do
114
163
 
115
164
  create Create a new ssh key
116
165
  list List ssh keys
166
+ show Show the public key
117
167
  use Switch ssh keys
118
168
 
119
169
  Use skm [command] --help for the help of the command.
@@ -137,11 +187,13 @@ cmd = ARGV.shift # get the subcommand
137
187
  case cmd
138
188
  when 'create'
139
189
  cmd_create(ARGV, keys_dir)
140
- when 'use'
141
- cmd_use(ARGV, keys_dir)
142
190
  when 'list'
143
191
  cmd_list(ARGV, keys_dir)
192
+ when 'show'
193
+ cmd_show(ARGV, keys_dir)
194
+ when 'use'
195
+ cmd_use(ARGV, keys_dir)
144
196
  else
197
+ Trollop::die 'Use "skm --help" or "skm [command] --help" for help'
145
198
  end
146
199
 
147
-
data/lib/skm/version.rb CHANGED
@@ -4,7 +4,7 @@ module SshKeyManager #:nodoc:#
4
4
  module VERSION
5
5
  MAJOR = 0
6
6
  MINOR = 1
7
- TINY = 1
7
+ TINY = 2
8
8
 
9
9
  STRING = [MAJOR, MINOR, TINY].compact.join('.')
10
10
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: skm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hong Xu
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-05-07 00:00:00.000000000 Z
11
+ date: 2013-05-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: trollop