diff options
Diffstat (limited to 'main.go')
-rw-r--r-- | main.go | 33 |
1 files changed, 33 insertions, 0 deletions
@@ -8,9 +8,15 @@ import ( "io" "log" "os" + "strings" ) func main() { + log.SetFlags(0) + + log.Println("Starting craft") + log.Printf("Git hook type: %s\n", getHookType()) + cwd, err := os.Getwd() if err != nil { log.Fatal(err) @@ -22,6 +28,33 @@ func main() { } } +func getHookType() string { + args := len(os.Args) + if args != 1 { + log.Fatalf("Expected zero arguments but %d were given", args-1) + } + prefix := `hooks/` + path := os.Args[0] + hookType := strings.TrimPrefix(path, prefix) + if path == hookType { + log.Fatalf("Hook path '%s' has no '%s' prefix", path, prefix) + } + validateHookType(hookType) + return hookType +} + +func validateHookType(hookType string) { + validTypes := [...]string{ + `post-receive`, + } + for _, currentType := range validTypes { + if hookType == currentType { + return + } + } + log.Fatalf("Not supported Git hook type '%s'\n", hookType) +} + type update struct { old, updated, ref string } |