yle_tf 1.0.0 → 1.1.0.rc1

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.
Files changed (59) hide show
  1. checksums.yaml +4 -4
  2. data/bin/tf +1 -0
  3. data/lib/yle_tf/action/builder.rb +2 -0
  4. data/lib/yle_tf/action/command.rb +4 -2
  5. data/lib/yle_tf/action/copy_root_module.rb +2 -0
  6. data/lib/yle_tf/action/generate_vars_file.rb +2 -0
  7. data/lib/yle_tf/action/load_config.rb +9 -1
  8. data/lib/yle_tf/action/terraform_init.rb +14 -36
  9. data/lib/yle_tf/action/tf_hooks.rb +2 -0
  10. data/lib/yle_tf/action/tmpdir.rb +3 -1
  11. data/lib/yle_tf/action/verify_terraform_version.rb +19 -6
  12. data/lib/yle_tf/action/verify_tf_env.rb +2 -0
  13. data/lib/yle_tf/action/write_terraformrc_defaults.rb +4 -2
  14. data/lib/yle_tf/action.rb +2 -0
  15. data/lib/yle_tf/backend.rb +42 -0
  16. data/lib/yle_tf/cli.rb +2 -0
  17. data/lib/yle_tf/config/defaults.rb +19 -11
  18. data/lib/yle_tf/config/erb.rb +2 -0
  19. data/lib/yle_tf/config/file.rb +2 -0
  20. data/lib/yle_tf/config/loader.rb +89 -59
  21. data/lib/yle_tf/config/migration.rb +110 -0
  22. data/lib/yle_tf/config.rb +25 -9
  23. data/lib/yle_tf/error.rb +2 -0
  24. data/lib/yle_tf/helpers/hash.rb +22 -0
  25. data/lib/yle_tf/logger/colorize.rb +2 -0
  26. data/lib/yle_tf/logger.rb +2 -0
  27. data/lib/yle_tf/plugin/action_hook.rb +2 -0
  28. data/lib/yle_tf/plugin/loader.rb +8 -1
  29. data/lib/yle_tf/plugin/manager.rb +3 -0
  30. data/lib/yle_tf/plugin.rb +6 -2
  31. data/lib/yle_tf/system/io_handlers.rb +4 -0
  32. data/lib/yle_tf/system/output_logger.rb +2 -0
  33. data/lib/yle_tf/system/tf_hook_output_logger.rb +2 -0
  34. data/lib/yle_tf/system.rb +3 -1
  35. data/lib/yle_tf/tf_hook/runner.rb +2 -0
  36. data/lib/yle_tf/tf_hook.rb +11 -9
  37. data/lib/yle_tf/vars_file.rb +16 -3
  38. data/lib/yle_tf/version.rb +3 -1
  39. data/lib/yle_tf/version_requirement.rb +2 -5
  40. data/lib/yle_tf.rb +4 -0
  41. data/lib/yle_tf_plugins/backends/{s3 → __default}/plugin.rb +6 -4
  42. data/lib/yle_tf_plugins/backends/file/{command.rb → backend.rb} +12 -13
  43. data/lib/yle_tf_plugins/backends/file/plugin.rb +4 -2
  44. data/lib/yle_tf_plugins/commands/__default/command.rb +2 -0
  45. data/lib/yle_tf_plugins/commands/__default/plugin.rb +2 -0
  46. data/lib/yle_tf_plugins/commands/_config/command.rb +2 -0
  47. data/lib/yle_tf_plugins/commands/_config/plugin.rb +2 -0
  48. data/lib/yle_tf_plugins/commands/_shell/command.rb +2 -0
  49. data/lib/yle_tf_plugins/commands/_shell/plugin.rb +2 -0
  50. data/lib/yle_tf_plugins/commands/help/command.rb +2 -0
  51. data/lib/yle_tf_plugins/commands/help/plugin.rb +2 -0
  52. data/lib/yle_tf_plugins/commands/version/command.rb +2 -0
  53. data/lib/yle_tf_plugins/commands/version/plugin.rb +2 -0
  54. metadata +41 -16
  55. data/lib/yle_tf/backend_config.rb +0 -41
  56. data/lib/yle_tf_plugins/backends/file/config.rb +0 -17
  57. data/lib/yle_tf_plugins/backends/s3/command.rb +0 -19
  58. data/lib/yle_tf_plugins/backends/swift/command.rb +0 -18
  59. data/lib/yle_tf_plugins/backends/swift/plugin.rb +0 -16
data/lib/yle_tf/config.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'pathname'
2
4
  require 'yaml'
3
5
 
@@ -10,16 +12,23 @@ class YleTf
10
12
  class Config
11
13
  NotFoundError = Class.new(Error)
12
14
 
13
- attr_reader :config, :tf_env, :module_dir
15
+ # Loads the configuration based on the environment
16
+ def self.load(tf_env)
17
+ opts = {
18
+ tf_env: tf_env,
19
+ module_dir: Pathname.pwd
20
+ }
14
21
 
15
- def initialize(tf_env)
16
- Logger.debug("Initializing configuration for the #{tf_env.inspect} environment")
22
+ config = Loader.new(opts).load
23
+ new(config, opts)
24
+ end
17
25
 
18
- @tf_env = tf_env
19
- @module_dir = Pathname.pwd
20
- @config = Loader.new(tf_env: tf_env, module_dir: module_dir).load
26
+ attr_reader :config, :tf_env, :module_dir
21
27
 
22
- Logger.debug(inspect)
28
+ def initialize(config, **opts)
29
+ @config = config
30
+ @tf_env = opts[:tf_env]
31
+ @module_dir = opts[:module_dir]
23
32
  end
24
33
 
25
34
  def to_s
@@ -33,8 +42,15 @@ class YleTf
33
42
  block ||= DEFAULT_NOT_FOUND_BLOCK
34
43
 
35
44
  keys.inject(config) do |conf, key|
36
- break block.call(keys) if !conf || !conf.key?(key)
37
- conf[key]
45
+ next conf[key] if conf.is_a?(Hash) && conf.key?(key)
46
+
47
+ if !conf.nil? && !conf.is_a?(Hash)
48
+ Logger.warn(
49
+ "Configuration [#{keys.join(' > ')}] includes non-hash element #{conf.inspect}"
50
+ )
51
+ end
52
+
53
+ break block.call(keys)
38
54
  end
39
55
  end
40
56
 
data/lib/yle_tf/error.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class YleTf
2
4
  # Base class for yle_tf errors
3
5
  Error = Class.new(StandardError)
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../../../vendor/hash_deep_merge'
4
+
5
+ class YleTf
6
+ module Helpers
7
+ module Hash
8
+ module_function
9
+
10
+ # Returns deep merged new Hash
11
+ def deep_merge(target, source)
12
+ target.deep_merge(source)
13
+ end
14
+
15
+ # Returns deep copy of a Hash.
16
+ # `dup` and `clone` only return shallow copies.
17
+ def deep_copy(hash)
18
+ Marshal.load(Marshal.dump(hash))
19
+ end
20
+ end
21
+ end
22
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class YleTf
2
4
  module Logger
3
5
  module Colorize
data/lib/yle_tf/logger.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'forwardable'
2
4
  require 'logger'
3
5
  require 'rubygems'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class YleTf
2
4
  class Plugin
3
5
  class ActionHook
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'yle_tf/logger'
2
4
 
3
5
  class YleTf
@@ -13,7 +15,7 @@ class YleTf
13
15
 
14
16
  def self.load_core_plugins
15
17
  core_plugins.each do |plugin_file|
16
- Logger.debug("Loading core plugin: #{File.basename(plugin_file, '.rb')}")
18
+ Logger.debug { "Loading core plugin: #{core_plugin_name(plugin_file)}" }
17
19
  load(plugin_file)
18
20
  end
19
21
  end
@@ -36,6 +38,11 @@ class YleTf
36
38
  Dir.glob(File.expand_path('../../yle_tf_plugins/**/plugin.rb', __dir__))
37
39
  end
38
40
 
41
+ def self.core_plugin_name(path)
42
+ m = %r{.*/yle_tf_plugins/(?<name>.+?)/plugin\.rb$}.match(path)
43
+ m ? m[:name] : path
44
+ end
45
+
39
46
  def self.bundler_plugins
40
47
  plugins = Bundler.definition.current_dependencies.select do |dep|
41
48
  dep.groups.include?(BUNDLER_PLUGIN_GROUP)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'yle_tf/logger'
2
4
 
3
5
  class YleTf
@@ -42,6 +44,7 @@ class YleTf
42
44
  registered.each do |plugin|
43
45
  backends.merge!(plugin.backends)
44
46
  end
47
+ backends.default = backends.delete(DEFAULT_BACKEND)
45
48
  end
46
49
  end
47
50
  end
data/lib/yle_tf/plugin.rb CHANGED
@@ -1,9 +1,12 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class YleTf
2
4
  class Plugin
3
5
  autoload :ActionHook, 'yle_tf/plugin/action_hook'
4
6
  autoload :Loader, 'yle_tf/plugin/loader'
5
7
  autoload :Manager, 'yle_tf/plugin/manager'
6
8
 
9
+ DEFAULT_BACKEND = Object.new.freeze
7
10
  DEFAULT_COMMAND = Object.new.freeze
8
11
 
9
12
  def self.manager
@@ -30,7 +33,7 @@ class YleTf
30
33
  name = name.to_s if name.is_a?(Symbol)
31
34
  commands[name] = {
32
35
  synopsis: synopsis,
33
- proc: block
36
+ proc: block
34
37
  }
35
38
  end
36
39
 
@@ -49,7 +52,8 @@ class YleTf
49
52
  end
50
53
 
51
54
  def self.backend(type, &block)
52
- backends[type.to_sym] = block
55
+ type = type.to_s if type.is_a?(Symbol)
56
+ backends[type] = block
53
57
  end
54
58
  end
55
59
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'yle_tf/error'
2
4
  require 'yle_tf/logger'
3
5
  require 'yle_tf/system/output_logger'
@@ -22,6 +24,7 @@ class YleTf
22
24
  if !handler.respond_to?(:call)
23
25
  raise YleTf::Error, "Unknown input handler #{handler.inspect}"
24
26
  end
27
+
25
28
  handler
26
29
  end
27
30
  end
@@ -42,6 +45,7 @@ class YleTf
42
45
  if !handler.respond_to?(:call)
43
46
  raise YleTf::Error, "Unknown output handler #{handler.inspect}"
44
47
  end
48
+
45
49
  handler
46
50
  end
47
51
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'yle_tf/logger'
2
4
 
3
5
  class YleTf
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'yle_tf/logger'
2
4
  require 'yle_tf/system/output_logger'
3
5
 
data/lib/yle_tf/system.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'English'
2
4
  require 'open3'
3
5
  require 'shellwords'
@@ -14,7 +16,7 @@ class YleTf
14
16
  DEFAULT_ERROR_HANDLER = ->(_exit_code, error) { raise error }.freeze
15
17
 
16
18
  DEFAULT_IO_HANDLERS = {
17
- stdin: :dev_null,
19
+ stdin: :dev_null,
18
20
  stdout: :info,
19
21
  stderr: :error
20
22
  }.freeze
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'yle_tf/logger'
2
4
  require 'yle_tf/tf_hook'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'fileutils'
2
4
  require 'tmpdir'
3
5
 
@@ -14,8 +16,8 @@ class YleTf
14
16
  def self.from_config(config, tf_env)
15
17
  TfHook.new(
16
18
  description: config['description'],
17
- source: config['source'],
18
- vars: merge_vars(config['vars'], tf_env)
19
+ source: config['source'],
20
+ vars: merge_vars(config['vars'], tf_env)
19
21
  )
20
22
  end
21
23
 
@@ -23,7 +25,7 @@ class YleTf
23
25
  def self.from_file(path)
24
26
  TfHook.new(
25
27
  description: File.basename(path),
26
- path: path
28
+ path: path
27
29
  )
28
30
  end
29
31
 
@@ -43,10 +45,10 @@ class YleTf
43
45
  Logger.info("Running hook '#{description}'")
44
46
  YleTf::System.cmd(
45
47
  path,
46
- env: vars.merge(tf_vars),
48
+ env: vars.merge(tf_vars),
47
49
  progname: File.basename(path),
48
- stdout: System::TfHookOutputLogger.new(:info),
49
- stderr: System::TfHookOutputLogger.new(:error)
50
+ stdout: System::TfHookOutputLogger.new(:info),
51
+ stderr: System::TfHookOutputLogger.new(:error)
50
52
  )
51
53
  ensure
52
54
  delete_tmpdir
@@ -57,9 +59,9 @@ class YleTf
57
59
  raise Error, "Invalid or missing `source` for hook '#{description}'" if !m
58
60
 
59
61
  {
60
- uri: m[:uri],
62
+ uri: m[:uri],
61
63
  path: m[:path],
62
- ref: m[:ref] || 'master'
64
+ ref: m[:ref] || 'master'
63
65
  }
64
66
  end
65
67
 
@@ -83,7 +85,7 @@ class YleTf
83
85
  end
84
86
 
85
87
  def delete_tmpdir
86
- FileUtils.rm_r(@tmpdir) if @tmpdir && Dir.exist?(@tmpdir)
88
+ FileUtils.rm_rf(@tmpdir, secure: true) if @tmpdir && Dir.exist?(@tmpdir)
87
89
  @tmpdir = nil
88
90
  end
89
91
 
@@ -1,6 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class YleTf
2
4
  class VarsFile
3
- ENV_DIR = 'envs'.freeze
5
+ ENV_DIR = 'envs'
4
6
 
5
7
  # Returns the env specific tfvars file path if it exists
6
8
  def self.find_env_vars_file(config)
@@ -10,7 +12,7 @@ class YleTf
10
12
 
11
13
  # Returns all envs that have tfvars files
12
14
  def self.list_all_envs(config)
13
- Dir.glob("#{config.module_dir}/#{ENV_DIR}/*.tfvars").map do |path|
15
+ Dir.glob("#{config.module_dir}/#{ENV_DIR}/*.tfvars").sort.map do |path|
14
16
  File.basename(path, '.tfvars')
15
17
  end
16
18
  end
@@ -36,9 +38,20 @@ class YleTf
36
38
  File.open(path, 'a') do |file|
37
39
  file.puts # ensure we don't append to an existing line
38
40
  vars.each do |key, value|
39
- file.puts %(#{key} = "#{value}")
41
+ file.puts "#{key} = #{eval_value(value)}"
40
42
  end
41
43
  end
42
44
  end
45
+
46
+ def eval_value(value)
47
+ case value
48
+ when Hash
49
+ %({ #{value.map { |k, v| "#{k} = #{eval_value(v)}" }.join(', ')} })
50
+ when Array
51
+ %([ #{value.map { |item| eval_value(item) }.join(', ')} ])
52
+ else
53
+ %("#{value}")
54
+ end
55
+ end
43
56
  end
44
57
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class YleTf
2
- VERSION = '1.0.0'.freeze
4
+ VERSION = '1.1.0.rc1'
3
5
  end
@@ -1,13 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rubygems'
2
4
 
3
5
  class YleTf
4
6
  # Helper class for comparing versions
5
7
  class VersionRequirement
6
- # Checks if the specified Terrform version is older than 0.9
7
- def self.pre_0_9?(terraform_version)
8
- new('< 0.9.0-beta').satisfied_by?(terraform_version)
9
- end
10
-
11
8
  attr_reader :requirement
12
9
 
13
10
  def initialize(requirement)
data/lib/yle_tf.rb CHANGED
@@ -1,7 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'yle_tf/logger'
2
4
  require 'yle_tf/version'
3
5
 
4
6
  class YleTf
7
+ TERRAFORM_VERSION_REQUIREMENT = '>= 0.9'
8
+
5
9
  autoload :Action, 'yle_tf/action'
6
10
  autoload :Error, 'yle_tf/error'
7
11
  autoload :Plugin, 'yle_tf/plugin'
@@ -1,14 +1,16 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'yle_tf'
4
+ require 'yle_tf/backend'
2
5
 
3
6
  module YleTfPlugins
4
7
  module Backends
5
- module S3
8
+ module Default
6
9
  class Plugin < YleTf::Plugin
7
10
  register
8
11
 
9
- backend('s3') do
10
- require_relative 'command'
11
- Command
12
+ backend(DEFAULT_BACKEND) do
13
+ YleTf::Backend
12
14
  end
13
15
  end
14
16
  end
@@ -1,25 +1,24 @@
1
- require_relative 'config'
1
+ # frozen_string_literal: true
2
+
3
+ require 'pathname'
4
+ require 'yle_tf/backend'
5
+ require 'yle_tf/logger'
2
6
 
3
7
  module YleTfPlugins
4
8
  module Backends
5
9
  module File
6
- class Command
7
- def backend_config(config)
8
- local_path = Pathname.pwd.join('terraform.tfstate')
9
- tfstate_path = tfstate_path(config)
10
-
10
+ class Backend < YleTf::Backend
11
+ # Symlinks local "terraform.tfstate" to the specified path
12
+ def configure
11
13
  YleTf::Logger.info("Symlinking state to '#{tfstate_path}'")
14
+ local_path = Pathname.pwd.join('terraform.tfstate')
12
15
  local_path.make_symlink(tfstate_path)
13
- tfstate_path.write(tfstate_template, perm: 0o644) if !tfstate_path.exist?
14
16
 
15
- Config.new(
16
- 'file',
17
- 'file' => tfstate_path.to_s
18
- )
17
+ tfstate_path.write(tfstate_template, perm: 0o644) if !tfstate_path.exist?
19
18
  end
20
19
 
21
- def tfstate_path(config)
22
- config.module_dir.join(config.fetch('backend', 'file'))
20
+ def tfstate_path
21
+ @tfstate_path ||= config.module_dir.join(config.fetch('backend', 'file', 'path'))
23
22
  end
24
23
 
25
24
  def tfstate_template
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'yle_tf'
2
4
 
3
5
  module YleTfPlugins
@@ -7,8 +9,8 @@ module YleTfPlugins
7
9
  register
8
10
 
9
11
  backend('file') do
10
- require_relative 'command'
11
- Command
12
+ require_relative 'backend'
13
+ Backend
12
14
  end
13
15
  end
14
16
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'yle_tf/logger'
2
4
  require 'yle_tf/system'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'yle_tf'
2
4
 
3
5
  module YleTfPlugins
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'yle_tf/logger'
2
4
 
3
5
  module YleTfPlugins
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'yle_tf'
2
4
 
3
5
  module YleTfPlugins
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module YleTfPlugins
2
4
  module CommandShell
3
5
  class Command
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'yle_tf'
2
4
 
3
5
  module YleTfPlugins
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'optparse'
2
4
 
3
5
  require 'yle_tf/system'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'yle_tf'
2
4
 
3
5
  module YleTfPlugins
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'yle_tf/system'
2
4
  require 'yle_tf/version'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'yle_tf'
2
4
 
3
5
  module YleTfPlugins
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yle_tf
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0.rc1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yleisradio
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2018-09-10 00:00:00.000000000 Z
13
+ date: 2019-01-01 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: bundler
@@ -26,6 +26,20 @@ dependencies:
26
26
  - - "~>"
27
27
  - !ruby/object:Gem::Version
28
28
  version: '1.13'
29
+ - !ruby/object:Gem::Dependency
30
+ name: guard-rspec
31
+ requirement: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - "~>"
34
+ - !ruby/object:Gem::Version
35
+ version: '4.7'
36
+ type: :development
37
+ prerelease: false
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - "~>"
41
+ - !ruby/object:Gem::Version
42
+ version: '4.7'
29
43
  - !ruby/object:Gem::Dependency
30
44
  name: rake
31
45
  requirement: !ruby/object:Gem::Requirement
@@ -46,14 +60,28 @@ dependencies:
46
60
  requirements:
47
61
  - - "~>"
48
62
  - !ruby/object:Gem::Version
49
- version: '3.5'
63
+ version: '3.8'
50
64
  type: :development
51
65
  prerelease: false
52
66
  version_requirements: !ruby/object:Gem::Requirement
53
67
  requirements:
54
68
  - - "~>"
55
69
  - !ruby/object:Gem::Version
56
- version: '3.5'
70
+ version: '3.8'
71
+ - !ruby/object:Gem::Dependency
72
+ name: serverspec
73
+ requirement: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - "~>"
76
+ - !ruby/object:Gem::Version
77
+ version: '2.41'
78
+ type: :development
79
+ prerelease: false
80
+ version_requirements: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - "~>"
83
+ - !ruby/object:Gem::Version
84
+ version: '2.41'
57
85
  description: Tooling for Terraform to support environments, hooks, etc.
58
86
  email:
59
87
  - devops@yle.fi
@@ -78,14 +106,16 @@ files:
78
106
  - lib/yle_tf/action/verify_terraform_version.rb
79
107
  - lib/yle_tf/action/verify_tf_env.rb
80
108
  - lib/yle_tf/action/write_terraformrc_defaults.rb
81
- - lib/yle_tf/backend_config.rb
109
+ - lib/yle_tf/backend.rb
82
110
  - lib/yle_tf/cli.rb
83
111
  - lib/yle_tf/config.rb
84
112
  - lib/yle_tf/config/defaults.rb
85
113
  - lib/yle_tf/config/erb.rb
86
114
  - lib/yle_tf/config/file.rb
87
115
  - lib/yle_tf/config/loader.rb
116
+ - lib/yle_tf/config/migration.rb
88
117
  - lib/yle_tf/error.rb
118
+ - lib/yle_tf/helpers/hash.rb
89
119
  - lib/yle_tf/logger.rb
90
120
  - lib/yle_tf/logger/colorize.rb
91
121
  - lib/yle_tf/plugin.rb
@@ -101,13 +131,9 @@ files:
101
131
  - lib/yle_tf/vars_file.rb
102
132
  - lib/yle_tf/version.rb
103
133
  - lib/yle_tf/version_requirement.rb
104
- - lib/yle_tf_plugins/backends/file/command.rb
105
- - lib/yle_tf_plugins/backends/file/config.rb
134
+ - lib/yle_tf_plugins/backends/__default/plugin.rb
135
+ - lib/yle_tf_plugins/backends/file/backend.rb
106
136
  - lib/yle_tf_plugins/backends/file/plugin.rb
107
- - lib/yle_tf_plugins/backends/s3/command.rb
108
- - lib/yle_tf_plugins/backends/s3/plugin.rb
109
- - lib/yle_tf_plugins/backends/swift/command.rb
110
- - lib/yle_tf_plugins/backends/swift/plugin.rb
111
137
  - lib/yle_tf_plugins/commands/__default/command.rb
112
138
  - lib/yle_tf_plugins/commands/__default/plugin.rb
113
139
  - lib/yle_tf_plugins/commands/_config/command.rb
@@ -135,15 +161,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
135
161
  requirements:
136
162
  - - ">="
137
163
  - !ruby/object:Gem::Version
138
- version: '2.2'
164
+ version: '2.3'
139
165
  required_rubygems_version: !ruby/object:Gem::Requirement
140
166
  requirements:
141
- - - ">="
167
+ - - ">"
142
168
  - !ruby/object:Gem::Version
143
- version: '0'
169
+ version: 1.3.1
144
170
  requirements: []
145
- rubyforge_project:
146
- rubygems_version: 2.7.3
171
+ rubygems_version: 3.0.1
147
172
  signing_key:
148
173
  specification_version: 4
149
174
  summary: Tooling for Terraform