Personal Git forge.
package sshimport ( "errors" "regexp")type GitCommand struct { Command string Args string}var ErrInvalidCommand = errors.New("Not a Git command.")// git-upload-pack 'user_loves_bananas/website'var gitCommandRx = regexp.MustCompile(`^(git-upload-pack|git-receive-pack|git-upload-archive) '~([A-Za-z0-9_][A-Za-z0-9_.-]*/[A-Za-z0-9_][A-Za-z0-9_.-]*)'$`)func parseGitCommand(raw string) (GitCommand, error) { matches := gitCommandRx.FindStringSubmatch(raw) if matches == nil { return GitCommand{}, ErrInvalidCommand } return GitCommand{ Command: matches[1], Args: matches[2], // guaranteed to be in "user/repo" form }, nil}