package main import ( "fmt" "os" ) func die(msg string, args ...any) { fmt.Fprint(os.Stderr, "Error: ") fmt.Fprintf(os.Stderr, msg, args...) fmt.Fprint(os.Stderr, "\n") os.Exit(1) } func main() { // if len(os.Args) != 3 { // die("expected 2 arguments [path, operation], got %d", len(os.Args)-1) // } // // path := strings.TrimPrefix(strings.TrimSuffix(os.Args[1], ".git"), "/") // operation := os.Args[2] // // if operation != "download" && operation != "upload" { // die("expected operation to be in {upload, download}, got %s", operation) // } // // user := os.Getenv("GL_USER") // // if user == "" { // die("expected Gitolite user env (GL_USER) to be set") // } // // gitolitePerm := "R" // // if operation == "upload" { // gitolitePerm = "W" // } // // // gitolite access -q: returns only exit code // cmd := exec.Command("gitolite", "access", "-q", path, user, gitolitePerm) // err := cmd.Run() // permGranted := err == nil // var exitErr *exec.ExitError // // if err != nil && !errors.As(err, &exitErr) { // die("failed to query Gitolite access information") // } }