Sha256: 1269ceca85f4e7bcc3ace06e4c5ca41b8ad625d27b09c61d9d454d3360cb55cd

Contents?: true

Size: 1.53 KB

Versions: 11

Compression:

Stored size: 1.53 KB

Contents

require 'cgi'
require 'fileutils'
require 'find'

require 'fig/file_not_found_error'
require 'fig/logging'
require 'fig/protocol'

module Fig; end
module Fig::Protocol; end

# File transfers for the local filesystem.
class Fig::Protocol::File
  include Fig::Protocol

  def download_list(uri)
    packages = []
    unescaped_path = CGI.unescape uri.path
    return packages if ! ::File.exist?(unescaped_path)

    ls = ''
    Find.find(unescaped_path) { |file| ls << file.to_s; ls << "\n" }

    strip_paths_for_list(ls, packages, unescaped_path)

    return packages
  end

  # Determine whether we need to update something.  Returns nil to indicate
  # "don't know".
  def path_up_to_date?(uri, path, prompt_for_login)
    begin
      unescaped_path = CGI.unescape uri.path
      if ::File.mtime(unescaped_path) <= ::File.mtime(path)
        return true
      end

      return false
    rescue Errno::ENOENT => error
      raise Fig::FileNotFoundError.new error.message, uri
    end
  end

  # Returns whether the file was not downloaded because the file already
  # exists and is already up-to-date.
  def download(uri, path, prompt_for_login)
    begin
      unescaped_path = CGI.unescape uri.path
      FileUtils.cp(unescaped_path, path)

      return true
    rescue Errno::ENOENT => error
      raise Fig::FileNotFoundError.new error.message, uri
    end
  end

  def upload(local_file, uri)
    unescaped_path = CGI.unescape uri.path
    FileUtils.mkdir_p(::File.dirname(unescaped_path))
    FileUtils.cp(local_file, unescaped_path)

    return
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
fig-1.12.0 lib/fig/protocol/file.rb
fig-1.11.0 lib/fig/protocol/file.rb
fig-1.10.0 lib/fig/protocol/file.rb
fig-1.9.0 lib/fig/protocol/file.rb
fig-1.8.0 lib/fig/protocol/file.rb
fig-1.7.0 lib/fig/protocol/file.rb
fig-1.6.0 lib/fig/protocol/file.rb
fig-1.5.0 lib/fig/protocol/file.rb
fig-1.4.0 lib/fig/protocol/file.rb
fig-1.3.0 lib/fig/protocol/file.rb
fig-1.2.0 lib/fig/protocol/file.rb