aws-cli 0.0.1.pre4
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.
- data/.gitignore +4 -0
- data/Gemfile +3 -0
- data/README +17 -0
- data/Rakefile +2 -0
- data/aws-cli.gemspec +26 -0
- data/bin/aws +10 -0
- data/lib/aws/cli.rb +15 -0
- data/lib/aws/cli/app.rb +60 -0
- data/lib/aws/cli/commands/ec2.rb +37 -0
- data/lib/aws/cli/ext/core.rb +25 -0
- data/lib/aws/cli/ext/highline.rb +7 -0
- data/lib/aws/cli/version.rb +5 -0
- metadata +122 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/README
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
AWS-CLI
|
2
|
+
=======
|
3
|
+
|
4
|
+
A command-line interface to Amazon Web Services.
|
5
|
+
|
6
|
+
Installation
|
7
|
+
------------
|
8
|
+
|
9
|
+
Either download the source and build it yourself, or install as a prerelease
|
10
|
+
gem:
|
11
|
+
|
12
|
+
gem install aws-cli --pre
|
13
|
+
|
14
|
+
Usage
|
15
|
+
-----
|
16
|
+
|
17
|
+
aws --help
|
data/Rakefile
ADDED
data/aws-cli.gemspec
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
$:.push File.expand_path( "../lib", __FILE__ )
|
2
|
+
require "aws/cli/version"
|
3
|
+
|
4
|
+
Gem::Specification.new do |s|
|
5
|
+
s.name = "aws-cli"
|
6
|
+
s.version = Aws::Cli::VERSION
|
7
|
+
s.platform = Gem::Platform::RUBY
|
8
|
+
s.authors = ["Rick Fletcher"]
|
9
|
+
s.email = ["fletch@pobox.com"]
|
10
|
+
s.homepage = "http://github.com/baseballdb/aws-cli"
|
11
|
+
s.summary = %{A command-line interface to AWS.}
|
12
|
+
s.description = %{This gem contains a command-line "aws" script, which provides an interface to certain Amazon web services.}
|
13
|
+
|
14
|
+
s.files = `git ls-files`.split("\n")
|
15
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
16
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
17
|
+
s.require_paths = ["lib"]
|
18
|
+
|
19
|
+
s.add_runtime_dependency "aws", "~> 2.5.3"
|
20
|
+
s.add_runtime_dependency "baseballdb-commander"
|
21
|
+
s.add_runtime_dependency "highline"
|
22
|
+
s.add_runtime_dependency "json_pure"
|
23
|
+
s.add_runtime_dependency "terminal-table"
|
24
|
+
|
25
|
+
# s.add_development_dependency "rspec", "~> 2.5.0"
|
26
|
+
end
|
data/bin/aws
ADDED
data/lib/aws/cli.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
require "rubygems"
|
2
|
+
require "bundler/setup"
|
3
|
+
|
4
|
+
require "commander"
|
5
|
+
require "highline"
|
6
|
+
|
7
|
+
# output formats
|
8
|
+
require "json"
|
9
|
+
require "terminal-table"
|
10
|
+
require "yaml"
|
11
|
+
|
12
|
+
require "aws"
|
13
|
+
require "aws/cli/ext/core"
|
14
|
+
require "aws/cli/ext/highline"
|
15
|
+
require "aws/cli/app"
|
data/lib/aws/cli/app.rb
ADDED
@@ -0,0 +1,60 @@
|
|
1
|
+
require "commander/import"
|
2
|
+
|
3
|
+
module Aws
|
4
|
+
module Cli
|
5
|
+
module App
|
6
|
+
$verbosity = 0
|
7
|
+
|
8
|
+
program :version, "0.1"
|
9
|
+
program :description, "A general purpose script for Amazon AWS"
|
10
|
+
|
11
|
+
option "-k", "--access-key KEY", "Your AWS Access Key ID"
|
12
|
+
option "-s", "--secret-key KEY", "Your AWS Secret Access Key"
|
13
|
+
option "-f", "--format FORMAT", "Output format"
|
14
|
+
option "-v", "--verbose", "Be verbose. Use more than once for increased verbosity.",
|
15
|
+
&Proc.new { $verbosity += 1 }
|
16
|
+
|
17
|
+
# require_options "--access-key", "--secret-key"
|
18
|
+
|
19
|
+
command :"ec2 list" do |c|
|
20
|
+
c.description = "List EC2 instances"
|
21
|
+
|
22
|
+
c.action do |args, options|
|
23
|
+
options.default :format => "table"
|
24
|
+
|
25
|
+
@ec2 = Aws::Ec2.new( options.access_key, options.secret_key, :logger => Logger.new( File.open( "/dev/null", "w" ) ) )
|
26
|
+
|
27
|
+
mappings = [{
|
28
|
+
:aws_instance_id => :id,
|
29
|
+
:aws_image_id => :ami,
|
30
|
+
:aws_availability_zone => :zone,
|
31
|
+
:private_dns_name => :internal_dns,
|
32
|
+
:dns_name => :external_dns
|
33
|
+
}]
|
34
|
+
|
35
|
+
instances = @ec2.describe_instances.map do |instance|
|
36
|
+
formatted_instance = {}
|
37
|
+
formatted_instance[:name] = instance[:tags].find { |k, v| k.downcase == "name" }[1] rescue nil
|
38
|
+
|
39
|
+
# pull in attributes by group
|
40
|
+
[mappings.size, ($verbosity + 1)].min.times do |i|
|
41
|
+
mappings[i].keys.inject( formatted_instance ) { |acc, k|
|
42
|
+
acc.merge!( mappings[i][k] => instance.delete( k ) )
|
43
|
+
}
|
44
|
+
end
|
45
|
+
|
46
|
+
# append everything else if $verbosity calls for more groups than we've mapped
|
47
|
+
formatted_instance.merge!( instance ) if ($verbosity + 1) > mappings.size
|
48
|
+
formatted_instance
|
49
|
+
end
|
50
|
+
|
51
|
+
say instances
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
# require "aws/cli/commands/ec2"
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
include Aws::Cli::App
|
@@ -0,0 +1,37 @@
|
|
1
|
+
command :"ec2 list" do |c|
|
2
|
+
c.description = "List EC2 instances"
|
3
|
+
|
4
|
+
c.action do |args, options|
|
5
|
+
options.default :format => "table"
|
6
|
+
|
7
|
+
puts options.inspect
|
8
|
+
|
9
|
+
# @ec2 = Aws::Ec2.new( options.access_key, options.secret_key, :logger => Logger.new( File.open( "/dev/null", "w" ) ) )
|
10
|
+
#
|
11
|
+
# mappings = [{
|
12
|
+
# :aws_instance_id => :id,
|
13
|
+
# :aws_image_id => :ami,
|
14
|
+
# :aws_availability_zone => :zone,
|
15
|
+
# :private_dns_name => :internal_dns,
|
16
|
+
# :dns_name => :external_dns
|
17
|
+
# }]
|
18
|
+
#
|
19
|
+
# intances = @ec2.describe_instances.map do |instance|
|
20
|
+
# formatted_instance = {}
|
21
|
+
# formatted_instance[:name] = instance[:tags].find { |k, v| k.downcase == "name" }[1] rescue nil
|
22
|
+
#
|
23
|
+
# # pull in attributes by group
|
24
|
+
# [mappings.size, ($verbosity + 1)].min.times do |i|
|
25
|
+
# mappings[i].keys.inject( formatted_instance ) { |acc, k|
|
26
|
+
# acc.merge!( mappings[i][k] => instance.delete( k ) )
|
27
|
+
# }
|
28
|
+
# end
|
29
|
+
#
|
30
|
+
# # append everything else if $verbosity calls for more groups than we've mapped
|
31
|
+
# formatted_instance.merge!( instance ) if ($verbosity + 1) > mappings.size
|
32
|
+
# formatted_instance
|
33
|
+
# end
|
34
|
+
#
|
35
|
+
# say intances
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
class Array
|
2
|
+
def to_table
|
3
|
+
if self.first.is_a?( Hash )
|
4
|
+
headings = self.first.keys
|
5
|
+
Terminal::Table.new(
|
6
|
+
:headings => headings,
|
7
|
+
:rows => self.map { |r| headings.map { |h| r[h] } }
|
8
|
+
).to_s
|
9
|
+
else
|
10
|
+
Terminal::Table.new( :rows => self.map { |r| r.is_a?( Array ) ? r : [r] } ).to_s
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
class Hash
|
16
|
+
def to_table
|
17
|
+
Terminal::Table.new( :headings => self.keys, :rows => [self.values] ).to_s
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
class Object
|
22
|
+
def to_table
|
23
|
+
Terminal::Table.new( :rows => [[self]] ).to_s
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,7 @@
|
|
1
|
+
class HighLine
|
2
|
+
alias_method :orig_say, :say
|
3
|
+
def say( statement )
|
4
|
+
format = ::Commander::Runner.instance.active_command.option_struct.format rescue nil
|
5
|
+
orig_say( statement.respond_to?( :"to_#{format}" ) ? statement.send( :"to_#{format}" ) : statement )
|
6
|
+
end
|
7
|
+
end
|
metadata
ADDED
@@ -0,0 +1,122 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: aws-cli
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease: 6
|
5
|
+
version: 0.0.1.pre4
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Rick Fletcher
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
|
13
|
+
date: 2011-05-25 00:00:00 -07:00
|
14
|
+
default_executable:
|
15
|
+
dependencies:
|
16
|
+
- !ruby/object:Gem::Dependency
|
17
|
+
name: aws
|
18
|
+
prerelease: false
|
19
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
20
|
+
none: false
|
21
|
+
requirements:
|
22
|
+
- - ~>
|
23
|
+
- !ruby/object:Gem::Version
|
24
|
+
version: 2.5.3
|
25
|
+
type: :runtime
|
26
|
+
version_requirements: *id001
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: baseballdb-commander
|
29
|
+
prerelease: false
|
30
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
31
|
+
none: false
|
32
|
+
requirements:
|
33
|
+
- - ">="
|
34
|
+
- !ruby/object:Gem::Version
|
35
|
+
version: "0"
|
36
|
+
type: :runtime
|
37
|
+
version_requirements: *id002
|
38
|
+
- !ruby/object:Gem::Dependency
|
39
|
+
name: highline
|
40
|
+
prerelease: false
|
41
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
42
|
+
none: false
|
43
|
+
requirements:
|
44
|
+
- - ">="
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: "0"
|
47
|
+
type: :runtime
|
48
|
+
version_requirements: *id003
|
49
|
+
- !ruby/object:Gem::Dependency
|
50
|
+
name: json_pure
|
51
|
+
prerelease: false
|
52
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
53
|
+
none: false
|
54
|
+
requirements:
|
55
|
+
- - ">="
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
version: "0"
|
58
|
+
type: :runtime
|
59
|
+
version_requirements: *id004
|
60
|
+
- !ruby/object:Gem::Dependency
|
61
|
+
name: terminal-table
|
62
|
+
prerelease: false
|
63
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
64
|
+
none: false
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: "0"
|
69
|
+
type: :runtime
|
70
|
+
version_requirements: *id005
|
71
|
+
description: This gem contains a command-line "aws" script, which provides an interface to certain Amazon web services.
|
72
|
+
email:
|
73
|
+
- fletch@pobox.com
|
74
|
+
executables:
|
75
|
+
- aws
|
76
|
+
extensions: []
|
77
|
+
|
78
|
+
extra_rdoc_files: []
|
79
|
+
|
80
|
+
files:
|
81
|
+
- .gitignore
|
82
|
+
- Gemfile
|
83
|
+
- README
|
84
|
+
- Rakefile
|
85
|
+
- aws-cli.gemspec
|
86
|
+
- bin/aws
|
87
|
+
- lib/aws/cli.rb
|
88
|
+
- lib/aws/cli/app.rb
|
89
|
+
- lib/aws/cli/commands/ec2.rb
|
90
|
+
- lib/aws/cli/ext/core.rb
|
91
|
+
- lib/aws/cli/ext/highline.rb
|
92
|
+
- lib/aws/cli/version.rb
|
93
|
+
has_rdoc: true
|
94
|
+
homepage: http://github.com/baseballdb/aws-cli
|
95
|
+
licenses: []
|
96
|
+
|
97
|
+
post_install_message:
|
98
|
+
rdoc_options: []
|
99
|
+
|
100
|
+
require_paths:
|
101
|
+
- lib
|
102
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
103
|
+
none: false
|
104
|
+
requirements:
|
105
|
+
- - ">="
|
106
|
+
- !ruby/object:Gem::Version
|
107
|
+
version: "0"
|
108
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
109
|
+
none: false
|
110
|
+
requirements:
|
111
|
+
- - ">"
|
112
|
+
- !ruby/object:Gem::Version
|
113
|
+
version: 1.3.1
|
114
|
+
requirements: []
|
115
|
+
|
116
|
+
rubyforge_project:
|
117
|
+
rubygems_version: 1.6.2
|
118
|
+
signing_key:
|
119
|
+
specification_version: 3
|
120
|
+
summary: A command-line interface to AWS.
|
121
|
+
test_files: []
|
122
|
+
|