Sha256: da7abcd5083ee2e75be1ce177058ee3f3d5dd08e8afa6c19c0f26e2c5e3de013

Contents?: true

Size: 1.55 KB

Versions: 18

Compression:

Stored size: 1.55 KB

Contents

# encoding: utf-8
module ProxyTester
  module Actions
    class CreateFile
      private

      attr_reader :name, :destination, :data, :options, :engine, :repository

      public

      def initialize(name, destination, data, options = {}, engine = ErbGenerator, repository = TemplateRepository.new)
        @name        = name
        @destination =::File.expand_path(destination)
        @data        = data
        @options     = options
        @engine      = engine
        @repository  = repository
      end

      def run
        if need_to_run? || options[:force] == true
          ProxyTester.ui_logger.warn "Creating file \"#{destination}\"."

          create_directories if options[:create_directories] == true

          file = template(name, ::File.new(destination, 'w'), data)
          FileUtils.chmod('+x', file) if options[:executable] == true
        else
          ProxyTester.ui_logger.warn "File \"#{destination}\" already exists. Do not create it again!."
        end
      end

      private

      def create_directories
        FileUtils.mkdir_p(::File.dirname(destination))
      end

      def template(local_name, local_destination, local_data)
        template = repository.find(local_name)

        generator = engine.new(local_data)
        generator.compile(template, local_destination)

        local_destination
      rescue Errno::ENOENT
        fail Exceptions::ErbTemplateIsUnknown, JSON.dump(message: "Unknown erb template \"#{template_path}\".")
      end

      def need_to_run?
        !::File.exists?(destination)
      end
    end
  end
end

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
proxy_tester-0.1.10 lib/proxy_tester/actions/create_file.rb
proxy_tester-0.1.8 lib/proxy_tester/actions/create_file.rb
proxy_tester-0.1.6 lib/proxy_tester/actions/create_file.rb
proxy_tester-0.1.5 lib/proxy_tester/actions/create_file.rb
proxy_tester-0.1.4 lib/proxy_tester/actions/create_file.rb
proxy_tester-0.1.3 lib/proxy_tester/actions/create_file.rb
proxy_tester-0.1.2 lib/proxy_tester/actions/create_file.rb
proxy_tester-0.1.1 lib/proxy_tester/actions/create_file.rb
proxy_tester-0.1.0 lib/proxy_tester/actions/create_file.rb
proxy_tester-0.0.9 lib/proxy_tester/actions/create_file.rb
proxy_tester-0.0.8 lib/proxy_tester/actions/create_file.rb
proxy_tester-0.0.7 lib/proxy_tester/actions/create_file.rb
proxy_tester-0.0.6 lib/proxy_tester/actions/create_file.rb
proxy_tester-0.0.5 lib/proxy_tester/actions/create_file.rb
proxy_tester-0.0.4 lib/proxy_tester/actions/create_file.rb
proxy_tester-0.0.3 lib/proxy_tester/actions/create_file.rb
proxy_tester-0.0.2 lib/proxy_tester/actions/create_file.rb
proxy_tester-0.0.1 lib/proxy_tester/actions/create_file.rb