stax 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (60) hide show
  1. checksums.yaml +4 -4
  2. data/bin/stax +1 -4
  3. data/lib/stax.rb +33 -3
  4. data/lib/stax/asg.rb +140 -0
  5. data/lib/stax/aws/alb.rb +28 -0
  6. data/lib/stax/aws/asg.rb +34 -0
  7. data/lib/stax/aws/cfn.rb +102 -0
  8. data/lib/stax/aws/dynamodb.rb +27 -0
  9. data/lib/stax/aws/ec2.rb +22 -0
  10. data/lib/stax/aws/ecr.rb +25 -0
  11. data/lib/stax/aws/ecs.rb +54 -0
  12. data/lib/stax/aws/elb.rb +30 -0
  13. data/lib/stax/aws/emr.rb +28 -0
  14. data/lib/stax/aws/iam.rb +19 -0
  15. data/lib/stax/aws/keypair.rb +26 -0
  16. data/lib/stax/aws/kms.rb +19 -0
  17. data/lib/stax/aws/lambda.rb +33 -0
  18. data/lib/stax/aws/logs.rb +25 -0
  19. data/lib/stax/aws/s3.rb +41 -0
  20. data/lib/stax/aws/sdk.rb +21 -0
  21. data/lib/stax/aws/sg.rb +42 -0
  22. data/lib/stax/aws/sqs.rb +30 -0
  23. data/lib/stax/aws/ssm.rb +49 -0
  24. data/lib/stax/aws/sts.rb +31 -0
  25. data/lib/stax/base.rb +92 -4
  26. data/lib/stax/cfer.rb +59 -0
  27. data/lib/stax/cli.rb +13 -4
  28. data/lib/stax/docker.rb +106 -0
  29. data/lib/stax/dsl.rb +15 -0
  30. data/lib/stax/git.rb +61 -0
  31. data/lib/stax/github.rb +25 -0
  32. data/lib/stax/iam.rb +18 -0
  33. data/lib/stax/keypair.rb +75 -0
  34. data/lib/stax/mixin/alb.rb +45 -0
  35. data/lib/stax/mixin/asg.rb +115 -0
  36. data/lib/stax/mixin/dynamodb.rb +62 -0
  37. data/lib/stax/mixin/ec2.rb +37 -0
  38. data/lib/stax/mixin/ecs.rb +114 -0
  39. data/lib/stax/mixin/elb.rb +42 -0
  40. data/lib/stax/mixin/emr.rb +69 -0
  41. data/lib/stax/mixin/keypair.rb +45 -0
  42. data/lib/stax/mixin/kms.rb +30 -0
  43. data/lib/stax/mixin/lambda.rb +76 -0
  44. data/lib/stax/mixin/logs.rb +94 -0
  45. data/lib/stax/mixin/s3.rb +76 -0
  46. data/lib/stax/mixin/sg.rb +95 -0
  47. data/lib/stax/mixin/sqs.rb +49 -0
  48. data/lib/stax/mixin/ssh.rb +52 -0
  49. data/lib/stax/mixin/ssm.rb +137 -0
  50. data/lib/stax/stack.rb +19 -35
  51. data/lib/stax/stack/cfn.rb +24 -0
  52. data/lib/stax/stack/crud.rb +92 -0
  53. data/lib/stax/stack/outputs.rb +24 -0
  54. data/lib/stax/stack/parameters.rb +24 -0
  55. data/lib/stax/stack/resources.rb +35 -0
  56. data/lib/stax/staxfile.rb +41 -0
  57. data/lib/stax/subcommand.rb +12 -0
  58. data/lib/stax/version.rb +1 -1
  59. data/stax.gemspec +6 -13
  60. metadata +105 -9
@@ -0,0 +1,41 @@
1
+ module Stax
2
+
3
+ ## search up the dir tree for nearest Staxfile
4
+ def self.load_staxfile
5
+ file = nil
6
+ Pathname.pwd.ascend do |path|
7
+ if File.exist?(f = File.join(path, 'Staxfile'))
8
+ file = f
9
+ break
10
+ end
11
+ end
12
+ load(file) if file
13
+ end
14
+
15
+ ## add a stack by name, creates class as needed
16
+ def self.add_stack(name, opt = {})
17
+ c = name.capitalize
18
+
19
+ ## create the class if it does not exist yet
20
+ if self.const_defined?(c)
21
+ self.const_get(c)
22
+ else
23
+ self.const_set(c, Class.new(Stack))
24
+ end.tap do |klass|
25
+ Cli.desc(name, "#{name} stack")
26
+ Cli.subcommand(name, klass)
27
+
28
+ ## has syntax to include mixins
29
+ opt.fetch(:include, []).each do |i|
30
+ klass.include(self.const_get(i))
31
+ end
32
+ end
33
+ end
34
+
35
+ ## add a non-stack command at top level
36
+ def self.add_command(name, klass)
37
+ Cli.desc(name, "#{name} commands")
38
+ Cli.subcommand(name, klass)
39
+ end
40
+
41
+ end
@@ -0,0 +1,12 @@
1
+ module Stax
2
+ class SubCommand < Base
3
+ no_commands do
4
+
5
+ ## return the Stack instance that called this subcommand
6
+ def my
7
+ @_my ||= stack(current_command_chain.first)
8
+ end
9
+
10
+ end
11
+ end
12
+ end
@@ -1,3 +1,3 @@
1
1
  module Stax
2
- VERSION = '0.0.1'
2
+ VERSION = '0.0.2'
3
3
  end
@@ -14,26 +14,19 @@ Gem::Specification.new do |spec|
14
14
  spec.homepage = 'https://github.com/rlister/stax'
15
15
  spec.license = 'MIT'
16
16
 
17
- # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
18
- # to allow pushing to a single host or delete this section to allow pushing to any host.
19
- # if spec.respond_to?(:metadata)
20
- # spec.metadata['allowed_push_host'] = "TODO: Set to 'http://mygemserver.com'"
21
- # else
22
- # raise "RubyGems 2.0 or newer is required to protect against " \
23
- # "public gem pushes."
24
- # end
25
-
26
17
  spec.files = `git ls-files -z`.split("\x0").reject do |f|
27
18
  f.match(%r{^(test|spec|features)/})
28
19
  end
29
- spec.bindir = "exe"
30
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
+ spec.bindir = "bin"
21
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
31
22
  spec.require_paths = ["lib"]
32
23
 
33
24
  spec.add_development_dependency "bundler", "~> 1.14"
34
25
  spec.add_development_dependency "rake", "~> 10.0"
35
26
 
36
- # spec.add_dependency('aws-sdk', '>= 2.7.9')
37
- spec.add_dependency('awful', '>= 0.0.166')
27
+ spec.add_dependency('aws-sdk', '~> 2')
38
28
  spec.add_dependency('thor')
29
+ spec.add_dependency('cfer')
30
+ spec.add_dependency('octokit')
31
+ spec.add_dependency('git_clone_url')
39
32
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stax
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Richard Lister
8
8
  autorequire:
9
- bindir: exe
9
+ bindir: bin
10
10
  cert_chain: []
11
- date: 2017-02-22 00:00:00.000000000 Z
11
+ date: 2017-11-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -39,21 +39,63 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: '10.0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: awful
42
+ name: aws-sdk
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '2'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '2'
55
+ - !ruby/object:Gem::Dependency
56
+ name: thor
43
57
  requirement: !ruby/object:Gem::Requirement
44
58
  requirements:
45
59
  - - ">="
46
60
  - !ruby/object:Gem::Version
47
- version: 0.0.166
61
+ version: '0'
48
62
  type: :runtime
49
63
  prerelease: false
50
64
  version_requirements: !ruby/object:Gem::Requirement
51
65
  requirements:
52
66
  - - ">="
53
67
  - !ruby/object:Gem::Version
54
- version: 0.0.166
68
+ version: '0'
55
69
  - !ruby/object:Gem::Dependency
56
- name: thor
70
+ name: cfer
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: octokit
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: git_clone_url
57
99
  requirement: !ruby/object:Gem::Requirement
58
100
  requirements:
59
101
  - - ">="
@@ -70,7 +112,10 @@ description: Stax is a flexible set of ruby classes for wrangling your cloudform
70
112
  stacks.
71
113
  email:
72
114
  - rlister@gmail.com
73
- executables: []
115
+ executables:
116
+ - console
117
+ - setup
118
+ - stax
74
119
  extensions: []
75
120
  extra_rdoc_files: []
76
121
  files:
@@ -84,9 +129,60 @@ files:
84
129
  - bin/setup
85
130
  - bin/stax
86
131
  - lib/stax.rb
132
+ - lib/stax/asg.rb
133
+ - lib/stax/aws/alb.rb
134
+ - lib/stax/aws/asg.rb
135
+ - lib/stax/aws/cfn.rb
136
+ - lib/stax/aws/dynamodb.rb
137
+ - lib/stax/aws/ec2.rb
138
+ - lib/stax/aws/ecr.rb
139
+ - lib/stax/aws/ecs.rb
140
+ - lib/stax/aws/elb.rb
141
+ - lib/stax/aws/emr.rb
142
+ - lib/stax/aws/iam.rb
143
+ - lib/stax/aws/keypair.rb
144
+ - lib/stax/aws/kms.rb
145
+ - lib/stax/aws/lambda.rb
146
+ - lib/stax/aws/logs.rb
147
+ - lib/stax/aws/s3.rb
148
+ - lib/stax/aws/sdk.rb
149
+ - lib/stax/aws/sg.rb
150
+ - lib/stax/aws/sqs.rb
151
+ - lib/stax/aws/ssm.rb
152
+ - lib/stax/aws/sts.rb
87
153
  - lib/stax/base.rb
154
+ - lib/stax/cfer.rb
88
155
  - lib/stax/cli.rb
156
+ - lib/stax/docker.rb
157
+ - lib/stax/dsl.rb
158
+ - lib/stax/git.rb
159
+ - lib/stax/github.rb
160
+ - lib/stax/iam.rb
161
+ - lib/stax/keypair.rb
162
+ - lib/stax/mixin/alb.rb
163
+ - lib/stax/mixin/asg.rb
164
+ - lib/stax/mixin/dynamodb.rb
165
+ - lib/stax/mixin/ec2.rb
166
+ - lib/stax/mixin/ecs.rb
167
+ - lib/stax/mixin/elb.rb
168
+ - lib/stax/mixin/emr.rb
169
+ - lib/stax/mixin/keypair.rb
170
+ - lib/stax/mixin/kms.rb
171
+ - lib/stax/mixin/lambda.rb
172
+ - lib/stax/mixin/logs.rb
173
+ - lib/stax/mixin/s3.rb
174
+ - lib/stax/mixin/sg.rb
175
+ - lib/stax/mixin/sqs.rb
176
+ - lib/stax/mixin/ssh.rb
177
+ - lib/stax/mixin/ssm.rb
89
178
  - lib/stax/stack.rb
179
+ - lib/stax/stack/cfn.rb
180
+ - lib/stax/stack/crud.rb
181
+ - lib/stax/stack/outputs.rb
182
+ - lib/stax/stack/parameters.rb
183
+ - lib/stax/stack/resources.rb
184
+ - lib/stax/staxfile.rb
185
+ - lib/stax/subcommand.rb
90
186
  - lib/stax/version.rb
91
187
  - stax.gemspec
92
188
  homepage: https://github.com/rlister/stax
@@ -109,7 +205,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
109
205
  version: '0'
110
206
  requirements: []
111
207
  rubyforge_project:
112
- rubygems_version: 2.5.2
208
+ rubygems_version: 2.6.13
113
209
  signing_key:
114
210
  specification_version: 4
115
211
  summary: Control Cloudformation stack and other stuff.