guard-terraform 1.0.1 → 1.1.0

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
  SHA256:
3
- metadata.gz: 42c6614a4b4d8c9de19825c6e3959c392f4edb8f2641e48658873db3642bb3a4
4
- data.tar.gz: 57595bd4449cbcf06851508175c80217bd7d91ad490726df0af08890385f9ccc
3
+ metadata.gz: e5e51f9870439d8c52b6fc21181132f3c31f2593bea0e831fac062e307d60230
4
+ data.tar.gz: e1d46d10a5e850f11b4ba35fa395485285bf244c3cf77581994aa7962210c11e
5
5
  SHA512:
6
- metadata.gz: 2e324f81d68630ff90790c0cccf1bd5cd894f3fb6de1194fbd9828358d2b21ca21e01347ee8a460a372e85d58166f3890a53df3c5f1ad67e5531307554e9eb59
7
- data.tar.gz: d1dc22204bf90613e249ad37c3a0d90f5696ead97b7f5d5a95a8b0804d28c656a355eef214b3e731638244d1fc25ad03e3bcfcc59a41149b618d912f8b412ec2
6
+ metadata.gz: f5485617ce8b4365b21fe14d90c27d238bd214e5d65a31be0c7c09fd9f6d1c21e90c38b6350f7fb30662cc07904f5650cc2a34cda5468028722587cecb850e64
7
+ data.tar.gz: 0e1743e1144a8e55cab398630073df2e5e61827d0cc678e1a2f8e08b14e590985e7ad93b8be8fa522ab5b89b6cf4231d229582fef79ad3fc8bd573d70750b5c0
@@ -3,6 +3,6 @@
3
3
  module Guard
4
4
  # Use own namespace to avoid inheriting from `Guard::Plugin`
5
5
  module TerraformVersion
6
- VERSION = '1.0.1'
6
+ VERSION = '1.1.0'
7
7
  end
8
8
  end
@@ -0,0 +1,93 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require 'rake'
5
+ require 'rake/tasklib'
6
+
7
+ require 'terraform'
8
+
9
+ class Terraform
10
+ # Provides a method to define a Rake task that
11
+ # checks and optionally fixes Terraform configuration format
12
+ class RakeTask < Rake::TaskLib
13
+ # Name of task (default: `:terraform`)
14
+ attr_accessor :name
15
+
16
+ # Path to the project root (default: `.`)
17
+ attr_accessor :project_root
18
+
19
+ # Show diffs of the changes? (default: `true`)
20
+ attr_accessor :diff
21
+
22
+ # Fix the formatting instead of just verifying? (default: `false`)
23
+ attr_accessor :write
24
+
25
+ # Whether or not to fail Rake when an error occurs.
26
+ # If `write` is disabled, this include formatting issues.
27
+ attr_accessor :fail_on_error
28
+
29
+ # Use verbose output. If this is set to true, the task will print the
30
+ # executed commands. Defaults to `true`.
31
+ attr_accessor :verbose
32
+
33
+ def initialize(*args, &task_block)
34
+ @name = args.shift || :terraform
35
+
36
+ @project_root = '.'
37
+
38
+ @diff = true
39
+ @write = false
40
+
41
+ @fail_on_error = true
42
+ @verbose = true
43
+
44
+ define(args, &task_block)
45
+ end
46
+
47
+ def terraform
48
+ @terraform ||= Terraform.new
49
+ end
50
+
51
+ def define(args, &task_block)
52
+ desc('Check Terraform file formatting') if !Rake.application.last_description
53
+
54
+ task(name, *args) do |_, task_args|
55
+ RakeFileUtils.verbose(verbose) do
56
+ yield(*[self, task_args].slice(0, task_block.arity)) if block_given?
57
+ run_task
58
+ end
59
+ end
60
+ end
61
+
62
+ def run_task
63
+ rake_output_message("#{write ? 'Auto-correcting' : 'Inspecting'}" \
64
+ " Terraform formatting for #{project_root}")
65
+
66
+ return if terraform.fmt(paths, tf_flags, &print_commands_proc)
67
+
68
+ warn('Terraform file formatting check failed')
69
+ exit 1 if fail_on_error
70
+ end
71
+
72
+ def paths
73
+ paths = [project_root]
74
+ paths += terraform.find_tfvars_files if terraform.pre_0_12?
75
+ paths
76
+ end
77
+
78
+ def tf_flags
79
+ {}.tap do |flags|
80
+ flags[:diff] = !!diff # rubocop:disable Style/DoubleNegation
81
+ flags[:write] = !!write # rubocop:disable Style/DoubleNegation
82
+ flags[:check] = !write
83
+ flags[:recursive] = true if !terraform.pre_0_12?
84
+ end
85
+ end
86
+
87
+ def print_commands_proc
88
+ return if !verbose
89
+
90
+ proc { |_, cmd| rake_output_message(cmd.join(' ')) }
91
+ end
92
+ end
93
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: guard-terraform
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Teemu Matilainen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-01-19 00:00:00.000000000 Z
11
+ date: 2019-01-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: guard
@@ -36,6 +36,7 @@ files:
36
36
  - lib/guard/terraform/templates/Guardfile
37
37
  - lib/guard/terraform/version.rb
38
38
  - lib/terraform.rb
39
+ - lib/terraform/rake_task.rb
39
40
  - lib/terraform/version_requirement.rb
40
41
  homepage: https://github.com/tmatilai/guard-terraform
41
42
  licenses: