From e5ec7a086f649751f4496e69ea64ba18aecdb73d Mon Sep 17 00:00:00 2001
From: zeripath <art27@cantab.net>
Date: Sun, 30 Jan 2022 16:33:36 +0000
Subject: [PATCH] Warn at startup if the provided `SCRIPT_TYPE` is not on the
 PATH (#18467)

Several users run Gitea in situations whereby `bash` is not available.
If the `SCRIPT_TYPE` is not changed this will cause hooks to fail.
A simple test to check if the provided type is on the PATH should be
sufficient to warn them about this problem.

Signed-off-by: Andrew Thornton <art27@cantab.net>
---
 modules/setting/repository.go | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/modules/setting/repository.go b/modules/setting/repository.go
index d2c0e205d..f4a2f4ad6 100644
--- a/modules/setting/repository.go
+++ b/modules/setting/repository.go
@@ -5,6 +5,7 @@
 package setting
 
 import (
+	"os/exec"
 	"path"
 	"path/filepath"
 	"strings"
@@ -278,6 +279,10 @@ func newRepository() {
 	}
 	ScriptType = sec.Key("SCRIPT_TYPE").MustString("bash")
 
+	if _, err := exec.LookPath(ScriptType); err != nil {
+		log.Warn("SCRIPT_TYPE %q is not on the current PATH. Are you sure that this is the correct SCRIPT_TYPE?", ScriptType)
+	}
+
 	if err = Cfg.Section("repository").MapTo(&Repository); err != nil {
 		log.Fatal("Failed to map Repository settings: %v", err)
 	} else if err = Cfg.Section("repository.editor").MapTo(&Repository.Editor); err != nil {