class Torba::RemoteSources::Zip
Represents remote zip archive.
Attributes
digest[R]
url[R]
Public Class Methods
new(url)
click to toggle source
# File lib/torba/remote_sources/zip.rb, line 14 def initialize(url) @url = url @digest = "#{File.basename url, '.zip'}-#{Torba.digest(url)}" end
Private Instance Methods
ensure_cached()
click to toggle source
# File lib/torba/remote_sources/zip.rb, line 21 def ensure_cached unless Dir.exist?(cache_path) FileUtils.mkdir_p(cache_path) tempfile = GetFile.process(url) command = "unzip -oqq -d #{cache_path} #{tempfile.path}" system(command) || raise(Errors::ShellCommandFailed.new(command)) get_rid_of_top_level_directory end rescue FileUtils.rm_rf(cache_path) raise end
get_rid_of_top_level_directory()
click to toggle source
# File lib/torba/remote_sources/zip.rb, line 37 def get_rid_of_top_level_directory top_level_content = Dir.glob("#{cache_path}/*") if top_level_content.size == 1 && File.directory?(top_level_content.first) top_level_dir = top_level_content.first FileUtils.cp_r("#{top_level_dir}/.", cache_path) FileUtils.rm_rf(top_level_dir) end end