Extract Kamal::Git as gateway for all git usage

This commit is contained in:
dhh
2023-09-16 11:30:29 -07:00
parent 12a82a6c58
commit cfbfb37e23
8 changed files with 38 additions and 22 deletions

View File

@@ -19,7 +19,7 @@ class Kamal::Cli::Build < Kamal::Cli::Base
verify_local_dependencies
run_hook "pre-build"
if (uncommitted_changes = Kamal::Utils.uncommitted_changes).present?
if (uncommitted_changes = Kamal::Git.uncommitted_changes).present?
say "The following paths have uncommitted changes:\n #{uncommitted_changes}", :yellow
end

View File

@@ -56,7 +56,7 @@ class Kamal::Commands::Lock < Kamal::Commands::Base
end
def locked_by
`git config user.name`.strip
Kamal::Git.user_name
rescue Errno::ENOENT
"Unknown"
end

View File

@@ -278,10 +278,8 @@ class Kamal::Configuration
def git_version
@git_version ||=
if system("git rev-parse")
uncommitted_suffix = Kamal::Utils.uncommitted_changes.present? ? "_uncommitted_#{SecureRandom.hex(8)}" : ""
"#{`git rev-parse HEAD`.strip}#{uncommitted_suffix}"
if Kamal::Git.used?
[ Kamal::Git.revision, Kamal::Git.uncommitted_changes.present? ? "_uncommitted_#{SecureRandom.hex(8)}" : "" ].join
else
raise "Can't use commit hash as version, no git repository found in #{Dir.pwd}"
end

19
lib/kamal/git.rb Normal file
View File

@@ -0,0 +1,19 @@
module Kamal::Git
extend self
def used?
system("git rev-parse")
end
def user_name
`git config user.name`.strip
end
def revision
`git rev-parse HEAD`.strip
end
def uncommitted_changes
`git status --porcelain`.strip
end
end

View File

@@ -86,10 +86,6 @@ module Kamal::Utils
value.to_s.dump[1..-2].gsub(/\\"/, "\"")
end
def uncommitted_changes
`git status --porcelain`.strip
end
def docker_env_file_line(key, value)
"#{key.to_s}=#{escape_docker_env_file_value(value)}\n"
end