Sha256: b194a39ce79aa5683e72c4785e4e2a463ad47f5a071fead09493ae495308395a

Contents?: true

Size: 1.24 KB

Versions: 21

Compression:

Stored size: 1.24 KB

Contents

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)
                Itamae.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

21 entries across 21 versions & 1 rubygems

Version Path
itamae-1.14.1 lib/itamae/resource/remote_file.rb
itamae-1.14.0 lib/itamae/resource/remote_file.rb
itamae-1.13.1 lib/itamae/resource/remote_file.rb
itamae-1.13.0 lib/itamae/resource/remote_file.rb
itamae-1.12.6 lib/itamae/resource/remote_file.rb
itamae-1.12.5 lib/itamae/resource/remote_file.rb
itamae-1.12.4 lib/itamae/resource/remote_file.rb
itamae-1.12.3 lib/itamae/resource/remote_file.rb
itamae-1.12.2 lib/itamae/resource/remote_file.rb
itamae-1.12.1 lib/itamae/resource/remote_file.rb
itamae-1.12.0 lib/itamae/resource/remote_file.rb
itamae-1.11.2 lib/itamae/resource/remote_file.rb
itamae-1.11.1 lib/itamae/resource/remote_file.rb
itamae-1.11.0 lib/itamae/resource/remote_file.rb
itamae-1.10.10 lib/itamae/resource/remote_file.rb
itamae-1.10.9 lib/itamae/resource/remote_file.rb
itamae-1.10.8 lib/itamae/resource/remote_file.rb
itamae-1.10.7 lib/itamae/resource/remote_file.rb
itamae-1.10.6 lib/itamae/resource/remote_file.rb
itamae-1.10.5 lib/itamae/resource/remote_file.rb