diff --git a/lib/mrsk/cli/build.rb b/lib/mrsk/cli/build.rb index e52b3358..a1261fe3 100644 --- a/lib/mrsk/cli/build.rb +++ b/lib/mrsk/cli/build.rb @@ -19,7 +19,13 @@ class Mrsk::Cli::Build < Mrsk::Cli::Base run_locally do begin - MRSK.with_verbosity(:debug) { execute *MRSK.builder.push } + MRSK.with_verbosity(:debug) do + if (uncommitted_changes = Mrsk::Utils.uncommitted_changes).present? + say "The following paths have uncommitted changes (check your .gitignore file):\n #{uncommitted_changes}", :yellow + end + + execute *MRSK.builder.push + end rescue SSHKit::Command::Failed => e if e.message =~ /(no builder)|(no such file or directory)/ error "Missing compatible builder, so creating a new one first" diff --git a/lib/mrsk/configuration.rb b/lib/mrsk/configuration.rb index e570de55..1473728b 100644 --- a/lib/mrsk/configuration.rb +++ b/lib/mrsk/configuration.rb @@ -262,7 +262,7 @@ class Mrsk::Configuration def git_version @git_version ||= if system("git rev-parse") - uncommitted_suffix = `git status --porcelain`.strip.present? ? "_uncommitted_#{SecureRandom.hex(8)}" : "" + uncommitted_suffix = Mrsk::Utils.uncommitted_changes.present? ? "_uncommitted_#{SecureRandom.hex(8)}" : "" "#{`git rev-parse HEAD`.strip}#{uncommitted_suffix}" else diff --git a/lib/mrsk/utils.rb b/lib/mrsk/utils.rb index e463f547..939c92dd 100644 --- a/lib/mrsk/utils.rb +++ b/lib/mrsk/utils.rb @@ -93,4 +93,8 @@ module Mrsk::Utils end end end + + def uncommitted_changes + `git status --porcelain`.strip + end end diff --git a/test/configuration_test.rb b/test/configuration_test.rb index 3d362293..695f8e72 100644 --- a/test/configuration_test.rb +++ b/test/configuration_test.rb @@ -84,7 +84,7 @@ class ConfigurationTest < ActiveSupport::TestCase ENV.delete("VERSION") @config.expects(:`).with("git rev-parse HEAD").returns("git-version") - @config.expects(:`).with("git status --porcelain").returns("") + Mrsk::Utils.expects(:uncommitted_changes).returns("") assert_equal "git-version", @config.version end @@ -92,7 +92,8 @@ class ConfigurationTest < ActiveSupport::TestCase ENV.delete("VERSION") @config.expects(:`).with("git rev-parse HEAD").returns("git-version") - @config.expects(:`).with("git status --porcelain").returns("M file\n") + # @config.expects(:`).with("git status --porcelain").returns("M file\n") + Mrsk::Utils.expects(:uncommitted_changes).returns("M file\n") assert_match /^git-version_uncommitted_[0-9a-f]{16}$/, @config.version end diff --git a/test/utils_test.rb b/test/utils_test.rb index 24a1b96b..0c42d72b 100644 --- a/test/utils_test.rb +++ b/test/utils_test.rb @@ -61,4 +61,14 @@ class UtilsTest < ActiveSupport::TestCase assert_equal "\"https://example.com/\\$2\"", Mrsk::Utils.escape_shell_value("https://example.com/$2") end + + test "uncommitted changes exist" do + Mrsk::Utils.expects(:`).with("git status --porcelain").returns("M file\n") + assert_equal "M file", Mrsk::Utils.uncommitted_changes + end + + test "uncommitted changes do not exist" do + Mrsk::Utils.expects(:`).with("git status --porcelain").returns("") + assert_equal "", Mrsk::Utils.uncommitted_changes + end end