aws-cft-tools 0.1.1 → 0.1.2

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
  SHA1:
3
- metadata.gz: e2c4148f5b7aa3cf1465fcc735a1b3ebd8b559d9
4
- data.tar.gz: 654d8ffb95b10000a1e3d364803fc014aaf2788a
3
+ metadata.gz: 153baa62a12a723ecc3749c8e64e04a005f48dd0
4
+ data.tar.gz: ff49055bd3a98f3262fa9d3e890bf3f9f894ac61
5
5
  SHA512:
6
- metadata.gz: 31d7266d177d7cc7359b35ddea6271b4c4f1d14ef8e4fdf850056e6a7823ffc4bef9ee802c85513e99944bab14110098c33e568ca1faa58883a41ae44efc6e60
7
- data.tar.gz: 12d6742f6050e73e68a0a54d10138ba21d33fc3ac10be49e2b150ee248651b7be6f6337d34558e8a5ea51153e174b2a59e9487977e968897f74debb1652a5913
6
+ metadata.gz: d6ddab54a09a0dfe5bc2a3b5472cbf3cf89c42e1d1bd9780140784a39893ee18861287ad11307373caa6a2887e95f17ad8e5605a00694a595fe4abbec84a1253
7
+ data.tar.gz: 8332135791348d11749c743e7e9342dee76b56aa1fc2f4dde2e35bc3aa0b31edeb75197d2ff617c9e6c2bc08af6240a2ffd9057e383150b47f259c743b7ff0f5
@@ -1,5 +1,12 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.1.2] - 2017-12-22
4
+
5
+ ### Changed
6
+
7
+ * When retracting stacks, a template that hadn't been deployed yet could block removal of any templates it
8
+ depended on. Now, retraction only considers templates that have been deployed. (Issue #18)
9
+
3
10
  ## [0.1.1] - 2017-12-15
4
11
 
5
12
  ### Added
@@ -98,12 +98,25 @@ module AwsCftTools
98
98
  private
99
99
 
100
100
  def close_subset(set, &block)
101
- return [] unless block_given?
102
- set - items_outside_subset(set, &block)
101
+ find_all_available(set.to_a) { |all, acc| find_next_candidate(all, acc, &block) }
103
102
  end
104
103
 
105
- def items_outside_subset(set)
106
- set.select { |node| (yield(node) - set).any? }
104
+ def find_all_available(candidates)
105
+ available = []
106
+ while candidates.any?
107
+ candidate = yield(candidates, available)
108
+ return available unless candidate
109
+ available << candidate
110
+ candidates.delete(candidate)
111
+ end
112
+ available
113
+ end
114
+
115
+ def find_next_candidate(candidates, selected)
116
+ return unless block_given?
117
+ candidates.detect do |candidate|
118
+ (yield(candidate) - selected).empty?
119
+ end
107
120
  end
108
121
  end
109
122
  end
@@ -55,7 +55,10 @@ module AwsCftTools
55
55
  # report_undefined_image - provide list of undefined imports that block stack deployment
56
56
  #
57
57
  def report_template_dependencies
58
- diff = (templates - free_templates).map { |template| template.filename.to_s }
58
+ free = free_templates
59
+ deployed = client.stacks.map(&:name)
60
+ all = templates.select { |template| deployed.include?(template.name) }
61
+ diff = (all - free).map { |template| template.filename.to_s }
59
62
  error_on_dependencies(diff) if diff.any?
60
63
  end
61
64
 
@@ -28,8 +28,11 @@ module AwsCftTools
28
28
  #
29
29
  # @return [AwsCftTools::TemplateSet]
30
30
  def free_templates
31
- set = AwsCftTools::TemplateSet.new(templates.in_folder_order(template_folder_order))
32
- client.templates.closed_subset(set).reverse
31
+ deployed = client.stacks.map(&:name)
32
+ universe = AwsCftTools::TemplateSet.new(client.templates.select do |template|
33
+ deployed.include?(template.name)
34
+ end)
35
+ universe.closed_subset(templates).reverse
33
36
  end
34
37
 
35
38
  ##
@@ -4,5 +4,5 @@ module AwsCftTools
4
4
  ##
5
5
  # Version of AwsCftTools.
6
6
  #
7
- VERSION = '0.1.1'
7
+ VERSION = '0.1.2'
8
8
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aws-cft-tools
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Small Business Administration
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-12-15 00:00:00.000000000 Z
11
+ date: 2017-12-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk