fastlane/lib/fastlane/actions/git_commit.rb in fastlane_hotfix-2.165.1 vs fastlane/lib/fastlane/actions/git_commit.rb in fastlane_hotfix-2.187.0

- old
+ new

@@ -1,19 +1,19 @@ module Fastlane module Actions class GitCommitAction < Action def self.run(params) - if params[:path].kind_of?(String) - paths = params[:path].shellescape - else - paths = params[:path].map(&:shellescape).join(' ') - end + paths = params[:path].map(&:shellescape).join(' ') skip_git_hooks = params[:skip_git_hooks] ? '--no-verify' : '' if params[:allow_nothing_to_commit] - repo_clean = Actions.sh("git status --porcelain").empty? + # Here we check if the path passed in parameter contains any modification + # and we skip the `git commit` command if there is none. + # That means you can have other files modified that are not in the path parameter + # and still make use of allow_nothing_to_commit. + repo_clean = Actions.sh("git status #{paths} --porcelain").empty? UI.success("Nothing to commit, working tree clean ✅.") if repo_clean return if repo_clean end command = "git commit -m #{params[:message].shellescape} #{paths} #{skip_git_hooks}".strip @@ -31,19 +31,21 @@ end def self.available_options [ FastlaneCore::ConfigItem.new(key: :path, - description: "The file you want to commit", - is_string: false), + description: "The file(s) or directory(ies) you want to commit. You can pass an array of multiple file-paths or fileglobs \"*.txt\" to commit all matching files. The files already staged but not specified and untracked files won't be committed", + type: Array), FastlaneCore::ConfigItem.new(key: :message, description: "The commit message that should be used"), FastlaneCore::ConfigItem.new(key: :skip_git_hooks, - description: "Set to true to pass --no-verify to git", + description: "Set to true to pass `--no-verify` to git", + default_value: false, type: Boolean, optional: true), FastlaneCore::ConfigItem.new(key: :allow_nothing_to_commit, - description: "Set to true to allow commit without any git changes", + description: "Set to true to allow commit without any git changes in the files you want to commit", + default_value: false, type: Boolean, optional: true) ] end