stax 0.0.1 → 0.0.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 (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.