Sha256: 786f48a5616f0889af6f4b9f12c8fd6d2a77dd26c90d93aa2e046fcd579a6bf3

Contents?: true

Size: 1.25 KB

Versions: 38

Compression:

Stored size: 1.25 KB

Contents

require 'itamae'

module Itamae
  module Resource
    class RemoteFile < File
      SourceNotFoundError = Class.new(StandardError)

      define_attribute :source, type: [String, Symbol], default: :auto

      private

      def content_file
        source_file
      end

      def source_file
        @source_file ||= find_source_file
      end

      def find_source_file
        if attributes.source == :auto
          dirs = attributes.path.split(::File::SEPARATOR)
          dirs.shift if dirs.first == ""

          searched_paths = []
          dirs.size.times do |i|
            source_file_exts.each do |ext|
              path = ::File.join(@recipe.dir, source_file_dir, "#{dirs[i..-1].join("/")}#{ext}")
              if ::File.exist?(path)
                Logger.debug "#{path} is used as a source file."
                return path
              else
                searched_paths << path
              end
            end
          end

          raise SourceNotFoundError, "source file is not found (searched paths: #{searched_paths.join(', ')})"
        else
          ::File.expand_path(attributes.source, @recipe.dir)
        end
      end

      def source_file_dir
        "files"
      end

      def source_file_exts
        [""]
      end
    end
  end
end

Version data entries

38 entries across 38 versions & 1 rubygems

Version Path
itamae-1.4.5 lib/itamae/resource/remote_file.rb
itamae-1.4.4 lib/itamae/resource/remote_file.rb
itamae-1.4.3 lib/itamae/resource/remote_file.rb
itamae-1.4.2 lib/itamae/resource/remote_file.rb
itamae-1.4.1 lib/itamae/resource/remote_file.rb
itamae-1.4.0 lib/itamae/resource/remote_file.rb
itamae-1.3.6 lib/itamae/resource/remote_file.rb
itamae-1.3.5 lib/itamae/resource/remote_file.rb
itamae-1.3.4 lib/itamae/resource/remote_file.rb
itamae-1.3.3 lib/itamae/resource/remote_file.rb
itamae-1.3.2 lib/itamae/resource/remote_file.rb
itamae-1.3.1 lib/itamae/resource/remote_file.rb
itamae-1.3.0 lib/itamae/resource/remote_file.rb
itamae-1.2.21 lib/itamae/resource/remote_file.rb
itamae-1.2.19 lib/itamae/resource/remote_file.rb
itamae-1.2.18 lib/itamae/resource/remote_file.rb
itamae-1.2.17 lib/itamae/resource/remote_file.rb
itamae-1.2.16 lib/itamae/resource/remote_file.rb
itamae-1.2.15 lib/itamae/resource/remote_file.rb
itamae-1.2.14 lib/itamae/resource/remote_file.rb