guard-terraform 1.0.1 → 1.1.0

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: 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: