Sha256: 168181f082fd394c1292e9fd0c55ce1faa749dfe4fbe5fc8b7e6dc8be3726db6

Contents?: true

Size: 1.28 KB

Versions: 90

Compression:

Stored size: 1.28 KB

Contents

require 'itamae-mitsurin'

module ItamaeMitsurin
  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)
                ItamaeMitsurin.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

90 entries across 47 versions & 1 rubygems

Version Path
itamae-mitsurin-1.0.3 lib/itamae-mitsurin/resource/remote_file.rb
itamae-mitsurin-1.0.2 lib/itamae-mitsurin/resource/remote_file.rb
itamae-mitsurin-1.0.1 lib/itamae-mitsurin/resource/remote_file.rb
itamae-mitsurin-1.0.0 lib/itamae-mitsurin/resource/remote_file.rb
itamae-mitsurin-0.50 lib/itamae-mitsurin/resource/remote_file.rb
itamae-mitsurin-0.50 test/test_itamae-mitsurin/resource/test_remote_file.rb
itamae-mitsurin-0.49 lib/itamae-mitsurin/resource/remote_file.rb
itamae-mitsurin-0.49 test/test_itamae-mitsurin/resource/test_remote_file.rb
itamae-mitsurin-0.48 lib/itamae-mitsurin/resource/remote_file.rb
itamae-mitsurin-0.48 test/test_itamae-mitsurin/resource/test_remote_file.rb
itamae-mitsurin-0.47 lib/itamae-mitsurin/resource/remote_file.rb
itamae-mitsurin-0.47 test/test_itamae-mitsurin/resource/test_remote_file.rb
itamae-mitsurin-0.46 lib/itamae-mitsurin/resource/remote_file.rb
itamae-mitsurin-0.46 test/test_itamae-mitsurin/resource/test_remote_file.rb
itamae-mitsurin-0.45 lib/itamae-mitsurin/resource/remote_file.rb
itamae-mitsurin-0.45 test/test_itamae-mitsurin/resource/test_remote_file.rb
itamae-mitsurin-0.44 lib/itamae-mitsurin/resource/remote_file.rb
itamae-mitsurin-0.44 test/test_itamae-mitsurin/resource/test_remote_file.rb
itamae-mitsurin-0.43 lib/itamae-mitsurin/resource/remote_file.rb
itamae-mitsurin-0.43 test/test_itamae-mitsurin/resource/test_remote_file.rb