mux_tf 0.8.0 → 0.8.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
  SHA256:
3
- metadata.gz: 2059d5a9b1ef29b18001ec132ca66409559731f4e081c0116f697343862c99cd
4
- data.tar.gz: efc55d59858ca48cb5091cd6a1daae9e20113c0fe5fb894fb145b1245155061f
3
+ metadata.gz: 0fa8aa05ed298ad8e22d12b7fdab99ac1cf4f5a1fe8d947c01bf3a47249b8b77
4
+ data.tar.gz: 9f65f9b7f183c80be4af4fa5e4c84f4396e0aecc9469f5f3dc20a4c2abef35ab
5
5
  SHA512:
6
- metadata.gz: 17cc6edb73e3bc1bd0b5f962d03536653ff881ea125552a20d1795fbce93f15018f0a9ae803d3bb5bc76c03e90ee5293711e62e431ca49204006b9072c7ae9e3
7
- data.tar.gz: 7158a4041788e471f448394bd0c4bee365a320ae426c51ba54f99fee2de33bb3c9eaa1a449d63304da473c79cbb77953c3a2d8fbda4e4f9c1232a021de643834
6
+ metadata.gz: 7b65a09e45cdf7997a6f8b79f29061f49456f456b8d5063abd4e588230075e66ce945f0fbd3e8e6a0a2dd05a2c6d66c23a74569180bf48380810b474a64ed42b
7
+ data.tar.gz: 17ae22572a91f31b6305f2637639fb21e6fa433fe20aa6bb9c07db7071ffe9ddf83cf3afe6425e98c223b9fd906a9323660febbe9282c0246b0290d3ceea5d96
@@ -0,0 +1,39 @@
1
+ module MuxTf
2
+ class OnceHelper
3
+ # once = OnceHelper.new
4
+ # once.for(:phase).once { ... }.otherwise { ... }
5
+
6
+ class StateEvaluator
7
+ def initialize(once_helper, new_state)
8
+ if once_helper.state != new_state
9
+ once_helper.state = new_state
10
+ @path = :once
11
+ else
12
+ @path = :otherwise
13
+ end
14
+ end
15
+
16
+ def once(&block)
17
+ if @path == :then
18
+ yield
19
+ end
20
+ end
21
+
22
+ def otherwise(&block)
23
+ if @path == :otherwise
24
+ yield
25
+ end
26
+ end
27
+ end
28
+
29
+ def initialize
30
+ @state = nil
31
+ end
32
+
33
+ attr_accessor :state
34
+
35
+ def for(new_state)
36
+ StateEvaluator.new(self, new_state)
37
+ end
38
+ end
39
+ end
@@ -9,14 +9,15 @@ module MuxTf
9
9
  def pretty_plan(filename, targets: [])
10
10
  pastel = Pastel.new
11
11
 
12
- phase = :init
12
+ once = OnceHelper.new
13
13
 
14
14
  meta = {}
15
15
 
16
16
  parser = StatefulParser.new(normalizer: pastel.method(:strip))
17
17
  parser.state(:info, /^Acquiring state lock/)
18
18
  parser.state(:error, /(╷|Error locking state|Error:)/, %i[none blank info reading])
19
- parser.state(:reading, /: (Reading...|Read complete after)/, %i[none info])
19
+ parser.state(:reading, /: (Reading...|Read complete after)/, %i[none info reading])
20
+ parser.state(:none, /^$/, [:reading])
20
21
  parser.state(:refreshing, /^.+: Refreshing state... \[id=/, %i[none info reading])
21
22
  parser.state(:refreshing, /Refreshing Terraform state in-memory prior to plan.../, %i[none blank info reading])
22
23
  parser.state(:refresh_done, /^----------+$/, [:refreshing])
@@ -24,6 +25,9 @@ module MuxTf
24
25
  parser.state(:plan_info, /Terraform will perform the following actions:/, [:refresh_done, :none])
25
26
  parser.state(:plan_summary, /^Plan:/, [:plan_info])
26
27
 
28
+ parser.state(:plan_legend, /^Terraform used the selected providers to generate the following execution$/)
29
+ parser.state(:none, /^$/, [:plan_legend])
30
+
27
31
  parser.state(:error_lock_info, /Lock Info/, [:error])
28
32
  parser.state(:error, /^$/, [:error_lock_info])
29
33
 
@@ -40,9 +44,9 @@ module MuxTf
40
44
  end
41
45
  when :reading
42
46
  clean_line = pastel.strip(line)
43
- if clean_line.match /^(.+): Reading...$/
47
+ if clean_line.match(/^(.+): Reading...$/)
44
48
  log "Reading: #{$LAST_MATCH_INFO[1]} ...", depth: 2
45
- elsif clean_line.match /^(.+): Read complete after (.+)(?: \[(.+)\])$/
49
+ elsif clean_line.match(/^(.+): Read complete after ([^\[]+)(?: \[(.+)\])?$/)
46
50
  if $LAST_MATCH_INFO[3]
47
51
  log "Reading Complete: #{$LAST_MATCH_INFO[1]} after #{$LAST_MATCH_INFO[2]} [#{$LAST_MATCH_INFO[3]}]", depth: 3
48
52
  else
@@ -61,10 +65,7 @@ module MuxTf
61
65
  meta["error"] = "lock"
62
66
  log Paint[line, :red], depth: 2
63
67
  when :plan_error
64
- if phase != :plan_error
65
- puts
66
- phase = :plan_error
67
- end
68
+ once.for(state).once { puts }
68
69
  meta["error"] = "refresh"
69
70
  log Paint[line, :red], depth: 2
70
71
  when :error_lock_info
@@ -73,20 +74,22 @@ module MuxTf
73
74
  end
74
75
  log Paint[line, :red], depth: 2
75
76
  when :refreshing
76
- if phase != :refreshing
77
- phase = :refreshing
77
+ once.for(state).once {
78
78
  log "Refreshing state ", depth: 2, newline: false
79
- else
79
+ }.otherwise {
80
80
  print "."
81
- end
81
+ }
82
+ when :plan_legend
83
+ once.for(state).once { puts }
84
+ log line, depth: 2
82
85
  when :refresh_done
83
- if phase != :refresh_done
84
- phase = :refresh_done
86
+ once.for(state).once {
85
87
  puts
86
- else
87
- # nothing
88
- end
88
+ }.otherwise {
89
+ #nothing
90
+ }
89
91
  when :plan_info
92
+ once.for(state).once { puts }
90
93
  log line, depth: 2
91
94
  when :plan_summary
92
95
  log line, depth: 2
@@ -120,10 +123,10 @@ module MuxTf
120
123
 
121
124
  parser = StatefulParser.new(normalizer: pastel.method(:strip))
122
125
 
123
- parser.state(:modules_init, /^Initializing modules\.\.\./)
126
+ parser.state(:modules_init, /^Initializing modules\.\.\./, [:none, :backend])
124
127
  parser.state(:modules_upgrade, /^Upgrading modules\.\.\./)
125
128
  parser.state(:backend, /^Initializing the backend\.\.\./, [:none, :modules_init, :modules_upgrade])
126
- parser.state(:plugins, /^Initializing provider plugins\.\.\./, [:backend])
129
+ parser.state(:plugins, /^Initializing provider plugins\.\.\./, [:backend, :modules_init])
127
130
 
128
131
  parser.state(:plugin_warnings, /^$/, [:plugins])
129
132
  parser.state(:backend_error, /Error:/, [:backend])
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module MuxTf
4
- VERSION = "0.8.0"
4
+ VERSION = "0.8.2"
5
5
  end
data/lib/mux_tf.rb CHANGED
@@ -20,6 +20,7 @@ require "tty-table"
20
20
  require "dotenv"
21
21
 
22
22
  require_relative "./mux_tf/version"
23
+ require_relative "./mux_tf/once_helper"
23
24
  require_relative "./mux_tf/resource_tokenizer"
24
25
  require_relative "./mux_tf/cli"
25
26
  require_relative "./mux_tf/tmux"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mux_tf
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.8.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Piotr Banasik
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-03-29 00:00:00.000000000 Z
11
+ date: 2023-05-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -141,6 +141,7 @@ files:
141
141
  - lib/mux_tf/cli/current.rb
142
142
  - lib/mux_tf/cli/mux.rb
143
143
  - lib/mux_tf/cli/plan_summary.rb
144
+ - lib/mux_tf/once_helper.rb
144
145
  - lib/mux_tf/plan_formatter.rb
145
146
  - lib/mux_tf/plan_summary_handler.rb
146
147
  - lib/mux_tf/resource_tokenizer.rb
@@ -171,7 +172,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
171
172
  - !ruby/object:Gem::Version
172
173
  version: '0'
173
174
  requirements: []
174
- rubygems_version: 3.3.12
175
+ rubygems_version: 3.4.10
175
176
  signing_key:
176
177
  specification_version: 4
177
178
  summary: Terraform Multiplexing Scripts