helper.go 508 B

123456789101112131415161718192021222324
  1. package hook
  2. import (
  3. "errors"
  4. "os"
  5. "path"
  6. "strings"
  7. )
  8. // ResolveScript is resolving the target script.
  9. func ResolveScript(dir, name, defaultExt string) (string, error) {
  10. if path.Ext(name) == "" {
  11. name += "." + defaultExt
  12. }
  13. script := path.Clean(path.Join(dir, name))
  14. if !strings.HasPrefix(script, dir) {
  15. return "", errors.New("Invalid script path: " + name)
  16. }
  17. if _, err := os.Stat(script); os.IsNotExist(err) {
  18. return "", errors.New("Script not found: " + script)
  19. }
  20. return script, nil
  21. }