Sha256: 9614524d280dbcd9b8dc74b33cf33f7a7e610f6bb92485ef00779c4c14dd632c
Contents?: true
Size: 1.87 KB
Versions: 35
Compression:
Stored size: 1.87 KB
Contents
require "uri" class Kamal::Cli::Build::Clone attr_reader :sshkit delegate :info, :error, :execute, :capture_with_info, to: :sshkit def initialize(sshkit) @sshkit = sshkit end def prepare begin clone_repo rescue SSHKit::Command::Failed => e if e.message =~ /already exists and is not an empty directory/ reset else raise Kamal::Cli::Build::BuildError, "Failed to clone repo: #{e.message}" end end validate! rescue Kamal::Cli::Build::BuildError => e error "Error preparing clone: #{e.message}, deleting and retrying..." FileUtils.rm_rf KAMAL.config.builder.clone_directory clone_repo validate! end private def clone_repo info "Cloning repo into build directory `#{KAMAL.config.builder.build_directory}`..." FileUtils.mkdir_p KAMAL.config.builder.clone_directory execute *KAMAL.builder.clone end def reset info "Resetting local clone as `#{KAMAL.config.builder.build_directory}` already exists..." KAMAL.builder.clone_reset_steps.each { |step| execute *step } rescue SSHKit::Command::Failed => e raise Kamal::Cli::Build::BuildError, "Failed to clone repo: #{e.message}" end def validate! status = capture_with_info(*KAMAL.builder.clone_status).strip unless status.empty? raise Kamal::Cli::Build::BuildError, "Clone in #{KAMAL.config.builder.build_directory} is dirty, #{status}" end revision = capture_with_info(*KAMAL.builder.clone_revision).strip if revision != Kamal::Git.revision raise Kamal::Cli::Build::BuildError, "Clone in #{KAMAL.config.builder.build_directory} is not on the correct revision, expected `#{Kamal::Git.revision}` but got `#{revision}`" end rescue SSHKit::Command::Failed => e raise Kamal::Cli::Build::BuildError, "Failed to validate clone: #{e.message}" end end
Version data entries
35 entries across 35 versions & 2 rubygems