| package main |
| |
| import ( |
| "os" |
| "path/filepath" |
| |
| "github.com/jessevdk/go-flags" |
| ) |
| |
| const ( |
| bin = "go-git" |
| receivePackBin = "git-receive-pack" |
| uploadPackBin = "git-upload-pack" |
| ) |
| |
| func main() { |
| switch filepath.Base(os.Args[0]) { |
| case receivePackBin: |
| os.Args = append([]string{"git", "receive-pack"}, os.Args[1:]...) |
| case uploadPackBin: |
| os.Args = append([]string{"git", "upload-pack"}, os.Args[1:]...) |
| } |
| |
| parser := flags.NewNamedParser(bin, flags.Default) |
| parser.AddCommand("receive-pack", "", "", &CmdReceivePack{}) |
| parser.AddCommand("upload-pack", "", "", &CmdUploadPack{}) |
| parser.AddCommand("version", "Show the version information.", "", &CmdVersion{}) |
| |
| _, err := parser.Parse() |
| if err != nil { |
| if e, ok := err.(*flags.Error); ok && e.Type == flags.ErrCommandRequired { |
| parser.WriteHelp(os.Stdout) |
| } |
| |
| os.Exit(1) |
| } |
| } |
| |
| type cmd struct { |
| Verbose bool `short:"v" description:"Activates the verbose mode"` |
| } |