anveo-ec2ssh 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. data/VERSION +1 -1
  2. data/anveo-ec2ssh.gemspec +12 -12
  3. data/bin/ec2ssh +1 -1
  4. data/lib/ec2ssh.rb +31 -7
  5. metadata +26 -23
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.0
1
+ 0.2.1
@@ -4,15 +4,15 @@
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
- s.name = %q{anveo-ec2ssh}
8
- s.version = "0.2.0"
7
+ s.name = "anveo-ec2ssh"
8
+ s.version = "0.2.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = [%q{Ramon Salvadó}, %q{Brian Racer}]
12
- s.date = %q{2012-01-31}
13
- s.description = %q{Since ec2 instance public hostnames are dynamic, and not easy to remember or type, this script provides a list all your running instances so you can select the one you want to ssh into easily (without having to pass the aws console ritual each time you need the hostname).}
14
- s.email = %q{bracer@gmail.com}
15
- s.executables = [%q{ec2ssh}]
11
+ s.authors = ["Ramon Salvad\u{f3}", "Brian Racer"]
12
+ s.date = "2012-07-02"
13
+ s.description = "Since ec2 instance public hostnames are dynamic, and not easy to remember or type, this script provides a list all your running instances so you can select the one you want to ssh into easily (without having to pass the aws console ritual each time you need the hostname)."
14
+ s.email = "bracer@gmail.com"
15
+ s.executables = ["ec2ssh"]
16
16
  s.extra_rdoc_files = [
17
17
  "LICENSE.txt",
18
18
  "README.rdoc"
@@ -30,11 +30,11 @@ Gem::Specification.new do |s|
30
30
  "lib/ec2ssh.rb",
31
31
  "lib/templates/ec2ssh_config_sample.yaml"
32
32
  ]
33
- s.homepage = %q{http://github.com/anveo/ec2ssh}
34
- s.licenses = [%q{MIT}]
35
- s.require_paths = [%q{lib}]
36
- s.rubygems_version = %q{1.8.6}
37
- s.summary = %q{A script to make it easier to ssh into running amazon EC2 instances.}
33
+ s.homepage = "http://github.com/anveo/ec2ssh"
34
+ s.licenses = ["MIT"]
35
+ s.require_paths = ["lib"]
36
+ s.rubygems_version = "1.8.11"
37
+ s.summary = "A script to make it easier to ssh into running amazon EC2 instances."
38
38
 
39
39
  if s.respond_to? :specification_version then
40
40
  s.specification_version = 3
data/bin/ec2ssh CHANGED
@@ -13,7 +13,7 @@ end
13
13
  ENV["EC2_URL"] = nil
14
14
 
15
15
  # TODO: Add proper command line arguments handling
16
- account = ARGV[0] || "default"
16
+ account = (ARGV[0] unless ARGV[0] =~ /^-/) || 'default'
17
17
 
18
18
  ec2ssh = Ec2ssh::App.new("~/.ec2ssh", account.to_sym)
19
19
  ec2ssh.select_instance
@@ -16,6 +16,8 @@ module Ec2ssh
16
16
 
17
17
  def initialize(file = "~/.ec2ssh", account=:default)
18
18
  @config = read_aws_config(file, account)
19
+ @config[:cache_ttl] ||= 0
20
+ @config[:account] = account.to_s
19
21
  end
20
22
 
21
23
  def select_instance(instances=[])
@@ -46,7 +48,8 @@ module Ec2ssh
46
48
  # output table
47
49
  puts table
48
50
 
49
- input = ask(">> ")
51
+ puts ">> id-or-name <user> <key> <public or private>"
52
+ input = ask(">> ")
50
53
  options = input.split
51
54
 
52
55
  # check if last arg is 'public' or 'private'. If so remove it from the options stack and save the value
@@ -127,15 +130,36 @@ module Ec2ssh
127
130
  id = @config[:id]
128
131
  key = @config[:key]
129
132
  regions ||= @config[:regions] || get_all_ec2_regions
130
- instances = regions.map do |region|
131
- silence_stream STDOUT do
132
- Aws::Ec2.new(id, key, :region => region).describe_instances
133
+ cache_ttl = @config[:cache_ttl]
134
+ cache_dir = File.expand_path("~/.ec2ssh.d")
135
+ cache_filename = File.expand_path("#{cache_dir}/#{@config[:account]}-cache")
136
+
137
+ # make sure cache dir exists
138
+ Dir.mkdir(cache_dir) unless File.exist?(cache_dir)
139
+
140
+ # clear cache if -nc or --no-cache is passwd
141
+ if ARGV.include?('-nc') || ARGV.include?('--no-cache')
142
+ File.delete(cache_filename) if File.exist?(cache_filename)
143
+ end
144
+
145
+ if File.exist?(cache_filename) && (Time.now.to_i - File.mtime(cache_filename).to_i <= cache_ttl)
146
+ instances = YAML.load(File.read(cache_filename))
147
+ else
148
+ instances = regions.map do |region|
149
+ silence_stream STDOUT do
150
+ Aws::Ec2.new(id, key, :region => region).describe_instances
151
+ end
152
+ end.flatten
153
+
154
+ # cache data to disk
155
+ File.open(cache_filename, 'w+') do |f|
156
+ f.write YAML.dump(instances)
133
157
  end
134
- end.flatten
158
+ end
159
+
160
+ instances
135
161
  rescue Aws::AwsError => e
136
162
  abort "AWS Error. #{e.message}"
137
163
  end
138
-
139
164
  end
140
-
141
165
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: anveo-ec2ssh
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,11 +10,11 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-01-31 00:00:00.000000000Z
13
+ date: 2012-07-02 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: aws
17
- requirement: &70219192880180 !ruby/object:Gem::Requirement
17
+ requirement: &70198445246460 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: 2.5.6
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *70219192880180
25
+ version_requirements: *70198445246460
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: activesupport
28
- requirement: &70219192879080 !ruby/object:Gem::Requirement
28
+ requirement: &70198445244940 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ~>
@@ -33,10 +33,10 @@ dependencies:
33
33
  version: 3.0.0
34
34
  type: :runtime
35
35
  prerelease: false
36
- version_requirements: *70219192879080
36
+ version_requirements: *70198445244940
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: colorize
39
- requirement: &70219192877760 !ruby/object:Gem::Requirement
39
+ requirement: &70198445243300 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - =
@@ -44,10 +44,10 @@ dependencies:
44
44
  version: 0.5.8
45
45
  type: :runtime
46
46
  prerelease: false
47
- version_requirements: *70219192877760
47
+ version_requirements: *70198445243300
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: highline
50
- requirement: &70219192876660 !ruby/object:Gem::Requirement
50
+ requirement: &70198445241900 !ruby/object:Gem::Requirement
51
51
  none: false
52
52
  requirements:
53
53
  - - ! '>='
@@ -55,10 +55,10 @@ dependencies:
55
55
  version: 1.6.8
56
56
  type: :runtime
57
57
  prerelease: false
58
- version_requirements: *70219192876660
58
+ version_requirements: *70198445241900
59
59
  - !ruby/object:Gem::Dependency
60
60
  name: text-table
61
- requirement: &70219192875040 !ruby/object:Gem::Requirement
61
+ requirement: &70198445240900 !ruby/object:Gem::Requirement
62
62
  none: false
63
63
  requirements:
64
64
  - - =
@@ -66,10 +66,10 @@ dependencies:
66
66
  version: 1.2.2
67
67
  type: :runtime
68
68
  prerelease: false
69
- version_requirements: *70219192875040
69
+ version_requirements: *70198445240900
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: aws
72
- requirement: &70219192873280 !ruby/object:Gem::Requirement
72
+ requirement: &70198445240020 !ruby/object:Gem::Requirement
73
73
  none: false
74
74
  requirements:
75
75
  - - ! '>='
@@ -77,10 +77,10 @@ dependencies:
77
77
  version: 2.5.6
78
78
  type: :runtime
79
79
  prerelease: false
80
- version_requirements: *70219192873280
80
+ version_requirements: *70198445240020
81
81
  - !ruby/object:Gem::Dependency
82
82
  name: activesupport
83
- requirement: &70219192872220 !ruby/object:Gem::Requirement
83
+ requirement: &70198445239040 !ruby/object:Gem::Requirement
84
84
  none: false
85
85
  requirements:
86
86
  - - ~>
@@ -88,10 +88,10 @@ dependencies:
88
88
  version: 3.0.0
89
89
  type: :runtime
90
90
  prerelease: false
91
- version_requirements: *70219192872220
91
+ version_requirements: *70198445239040
92
92
  - !ruby/object:Gem::Dependency
93
93
  name: colorize
94
- requirement: &70219192870940 !ruby/object:Gem::Requirement
94
+ requirement: &70198445253280 !ruby/object:Gem::Requirement
95
95
  none: false
96
96
  requirements:
97
97
  - - =
@@ -99,10 +99,10 @@ dependencies:
99
99
  version: 0.5.8
100
100
  type: :runtime
101
101
  prerelease: false
102
- version_requirements: *70219192870940
102
+ version_requirements: *70198445253280
103
103
  - !ruby/object:Gem::Dependency
104
104
  name: highline
105
- requirement: &70219192869600 !ruby/object:Gem::Requirement
105
+ requirement: &70198445251360 !ruby/object:Gem::Requirement
106
106
  none: false
107
107
  requirements:
108
108
  - - ! '>='
@@ -110,10 +110,10 @@ dependencies:
110
110
  version: 1.6.8
111
111
  type: :runtime
112
112
  prerelease: false
113
- version_requirements: *70219192869600
113
+ version_requirements: *70198445251360
114
114
  - !ruby/object:Gem::Dependency
115
115
  name: text-table
116
- requirement: &70219192868140 !ruby/object:Gem::Requirement
116
+ requirement: &70198445250020 !ruby/object:Gem::Requirement
117
117
  none: false
118
118
  requirements:
119
119
  - - ~>
@@ -121,7 +121,7 @@ dependencies:
121
121
  version: 1.2.2
122
122
  type: :runtime
123
123
  prerelease: false
124
- version_requirements: *70219192868140
124
+ version_requirements: *70198445250020
125
125
  description: Since ec2 instance public hostnames are dynamic, and not easy to remember
126
126
  or type, this script provides a list all your running instances so you can select
127
127
  the one you want to ssh into easily (without having to pass the aws console ritual
@@ -158,6 +158,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
158
158
  - - ! '>='
159
159
  - !ruby/object:Gem::Version
160
160
  version: '0'
161
+ segments:
162
+ - 0
163
+ hash: -2416354190427887780
161
164
  required_rubygems_version: !ruby/object:Gem::Requirement
162
165
  none: false
163
166
  requirements:
@@ -166,7 +169,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
166
169
  version: '0'
167
170
  requirements: []
168
171
  rubyforge_project:
169
- rubygems_version: 1.8.6
172
+ rubygems_version: 1.8.11
170
173
  signing_key:
171
174
  specification_version: 3
172
175
  summary: A script to make it easier to ssh into running amazon EC2 instances.