class TerraformWrapper::Tasks::Clean

Public Class Methods

new(code:) { |self| ... } click to toggle source
# File lib/terraform-wrapper/tasks/clean.rb, line 38
def initialize(code:)
  @code = code

  yield self if block_given?

  clean_task
end

Public Instance Methods

clean_task() click to toggle source
# File lib/terraform-wrapper/tasks/clean.rb, line 48
def clean_task
  desc "Cleans a Terraform infrastructure component workspace of any downloaded providers and modules."
  task :clean do |t, args|
    logger.info("Cleaning Terraform component: #{@code.name}...")

    directory_counter = 0
    @@glob_directories.each do |key, value|
      logger.info("Cleaning directories: #{key}")
      directory_item_counter = 0

      directories = Dir.glob(File.join(@code.path, value))
      directories.each do |directory|
        if delete_directory(directory: directory) then
          directory_item_counter += 1
          directory_counter      += 1
        end
      end
      logger.success("Cleaned: #{directory_item_counter.to_s} directories.")
    end

    file_counter = 0
    @@glob_files.each do |key, value|
      logger.info("Cleaning files: #{key}")
      file_item_counter = 0

      files = Dir.glob(File.join(@code.path, value))
      files.each do |file|
        if delete_file(file: file) then
          file_item_counter += 1
          file_counter      += 1
        end
      end
      logger.success("Cleaned: #{file_item_counter.to_s} files.")
    end

    logger.success("Cleaned total: #{directory_counter.to_s} directories and: #{file_counter.to_s} files.")
  end
end

Private Instance Methods

delete_directory(directory:) click to toggle source
# File lib/terraform-wrapper/tasks/clean.rb, line 93
def delete_directory(directory:)
  result = false

  if File.directory?(directory) then
    begin
      FileUtils.remove_dir(directory)
      result = true
      logger.info("Deleted directory: #{directory}")
    rescue
      result = false
      logger.warn("Failed to delete directory: #{directory}")
    end
  end

  return result
end
delete_file(file:) click to toggle source
# File lib/terraform-wrapper/tasks/clean.rb, line 112
def delete_file(file:)
  result = false

  if File.file?(file) then
    begin
      File.delete(file)
      result = true
      logger.info("Deleted file: #{file}")
    rescue
      result = false
      logger.warn("Failed to delete file: #{file}")
    end
  end

  return result
end