class KPM::BaseArtifact
def pull_and_put_in_place(logger, coordinates, destination_path=nil, skip_top_dir=true, sha1_file=nil, force_download=false, overrides={}, ssl_verify=true)
def pull_and_put_in_place(logger, coordinates, destination_path=nil, skip_top_dir=true, sha1_file=nil, force_download=false, overrides={}, ssl_verify=true) destination_path = KPM::root if destination_path.nil? # Create the destination directory if path_looks_like_a_directory(destination_path) destination_dir = destination_path else destination_dir = File.dirname(destination_path) end FileUtils.mkdir_p(destination_dir) # Build artifact info artifact_info = artifact_info(coordinates, destination_path, overrides, ssl_verify) if !force_download && skip_if_exists(artifact_info, coordinates, sha1_file) logger.info "Skipping installation of #{coordinates} to #{artifact_info[:file_path]}, file already exists" artifact_info[:skipped] = true return artifact_info end # Download the artifact in a temporary directory in case of failures Dir.mktmpdir do |tmp_destination_dir| logger.info " Starting download of #{coordinates} to #{tmp_destination_dir}" downloaded_artifact_info = pull_and_verify(logger, artifact_info[:sha1], coordinates, tmp_destination_dir, sha1_file, overrides, ssl_verify) if artifact_info[:is_tgz] Utils.unpack_tgz(downloaded_artifact_info[:file_path], destination_path, skip_top_dir) FileUtils.rm downloaded_artifact_info[:file_path] else FileUtils.mv downloaded_artifact_info[:file_path], destination_path artifact_info[:size] = downloaded_artifact_info[:size] end logger.info "Successful installation of #{coordinates} to #{artifact_info[:file_path]}" end artifact_info end