aws_clim 1.0.0 → 1.0.3

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
  SHA256:
3
- metadata.gz: 464aaeca6985ddf65ea4a3c072f44aa7561b52e2815ef66d8eda598d2c455259
4
- data.tar.gz: 38c760109126b5fa42ab730e2b9d770c66af761180a32366ca23a76ff76fc175
3
+ metadata.gz: ac0cd640f3b253853487800afc8dce04cfc1792d3322d62099d0d3ec0e6988e4
4
+ data.tar.gz: 39eeb60f7b3ec2613a7a3c6ef12ff772c437412fa1ebffd2d1c9a3fe4cc59c24
5
5
  SHA512:
6
- metadata.gz: 4f8b84374a0b5997ca009752cc4cad9308769e4ec4b37f782487e11e0fca612d0a31b2ad6417071aaef61cb77b85e71c481ee90e7f5b2fe850b696d4b0d2918c
7
- data.tar.gz: 361d4105ef8ce85e168e996d506c13bff92b3db2f6f071a3201fc5bb82543e94a35c4d012c125523fb93a230a0d418c52c20bfa865ca81f3c09093aa85590e16
6
+ metadata.gz: 456cda408a13813578cad9b2c777e982e8c95bdb4de14e55503fe0a7cf9124e2e03d34d49a9552d07a5924e9dc2e1d87f5a065794ae3b92ea0b102dac1d168d2
7
+ data.tar.gz: b054f592c2f7584e8e3ee9facd0e59f1b01b165a5c2ae44fcf1e206e34e6cab1a0c1c9fba978cde57a0fef3bbd3aa264a6a1f6a00af21be32dfded73050561c5
data/README.md CHANGED
@@ -1,8 +1,14 @@
1
1
  # AwsClim
2
2
 
3
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/aws_clim`. To experiment with that code, run `bin/console` for an interactive prompt.
3
+ AwsClim is a light wrapper around `aws cli` tool. it adds some convenience when calling the command and
4
+ dealing with the results.
4
5
 
5
- TODO: Delete this and the text above, and describe your gem
6
+ - Maps all aws services as a method on AwsClim instance.
7
+ - Set format as JSON as default.
8
+ - Deals with arguments as Array, Hash or simply string
9
+ - Parses all results as JSON
10
+ - Returns an `OpenStruct.new(error: true, success: false, data: err)` when error happens.
11
+ - Returns an `OpenStruct.new(error: false, success: true, data: JSON.parse(out, object_class: OpenStruct))` when command returns successfuly.
6
12
 
7
13
  ## Installation
8
14
 
@@ -22,18 +28,42 @@ Or install it yourself as:
22
28
 
23
29
  ## Usage
24
30
 
25
- TODO: Write usage instructions here
31
+ ```
32
+ aws = AwsClim.new()
33
+ ```
26
34
 
27
- ## Development
35
+ By calling new without parameters AwsClim uses the profile `default`(see https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/guide_credentials_profiles.html to learn about aws profiles).
36
+ To set a different profile use profile argument on new.
28
37
 
29
- After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
38
+ ```
39
+ aws = AwsClim.new(profile: 'other-profile')
40
+ ```
30
41
 
31
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
42
+ With a instance of AwsClim call aws services by its name and pass subcommands and options:
32
43
 
33
- ## Contributing
44
+ Examples:
34
45
 
35
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/aws_clim. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [code of conduct](https://github.com/[USERNAME]/aws_clim/blob/master/CODE_OF_CONDUCT.md).
46
+ ```
47
+ # Subcommand
36
48
 
49
+ aws.iam('list-users').data.Users
50
+ ```
51
+
52
+ ```
53
+ # Subcommand + Arguments
54
+
55
+ result = aws.apigateway('put-method-response', {
56
+ 'rest-api-id' => rest_api['id'],
57
+ 'resource-id' => resource['id'],
58
+ 'http-method' => 'GET',
59
+ 'status-code' => '200',
60
+ 'response-parameters' => 'method.response.header.access-control-allow-origin=false'
61
+ })
62
+
63
+ result.success?
64
+ result.error?
65
+ result.data
66
+ ```
37
67
 
38
68
  ## License
39
69
 
@@ -1,3 +1,3 @@
1
1
  module AwsClim
2
- VERSION = "1.0.0"
2
+ VERSION = "1.0.3"
3
3
  end
data/lib/aws_clim.rb CHANGED
@@ -1,63 +1,13 @@
1
+ require 'ostruct'
1
2
  require 'json'
2
3
  require 'open3'
3
4
 
4
5
  class AwsClim
5
- def initialize(profile = 'default', global_options = {})
6
+ def initialize(profile: 'default', global_options: {})
6
7
  @profile = profile
7
8
  @global_options = global_options
8
9
  end
9
10
 
10
- class SimpleResult
11
- attr_reader :data
12
-
13
- def initialize(data)
14
- @data = data
15
- end
16
-
17
- def error?
18
- false
19
- end
20
-
21
- def success?
22
- true
23
- end
24
- end
25
-
26
- class ItemsResult < SimpleResult
27
- include Enumerable
28
-
29
- attr_reader :data, :items
30
-
31
- def initialize(data)
32
- super
33
- @items = data['items']
34
- end
35
-
36
- def each(&block)
37
- @data.fetch('items').each(&block)
38
- end
39
- end
40
-
41
- class ErrorResult
42
- attr_reader :message
43
-
44
- def initialize(message)
45
- @message = message
46
- end
47
-
48
- def to_s
49
- "Error: #{@message}"
50
- end
51
-
52
- def success?
53
- false
54
- end
55
-
56
- def error?
57
- true
58
- end
59
- end
60
-
61
11
  %w(
62
12
  accessanalyzer
63
13
  account
@@ -388,10 +338,9 @@ class AwsClim
388
338
  out, err, status = Open3.capture3(cmd)
389
339
 
390
340
  if status.success?
391
- result = JSON.parse(out)
392
- result.key?('items') ? ItemsResult.new(result) : SimpleResult.new(result)
341
+ OpenStruct.new(success?: true, error?: false, data: JSON.parse(out, object_class: OpenStruct))
393
342
  else
394
- ErrorResult.new(err)
343
+ OpenStruct.new(success?: false, error?: true, data: err)
395
344
  end
396
345
  end
397
346
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aws_clim
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew S Aguiar
@@ -24,7 +24,6 @@ files:
24
24
  - Gemfile.lock
25
25
  - LICENSE.txt
26
26
  - README.md
27
- - aws_clim-0.1.0.gem
28
27
  - aws_clim.gemspec
29
28
  - bin/console
30
29
  - lib/aws_clim.rb
data/aws_clim-0.1.0.gem DELETED
Binary file