aws-cft-tools 0.1.1 → 0.1.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.
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