mirror of
https://github.com/MichaelMure/git-bug.git
synced 2024-12-15 02:01:43 +03:00
55 lines
1.3 KiB
Go
55 lines
1.3 KiB
Go
// Package commands contains the assorted sub commands supported by the git-bug tool.
|
|
package commands
|
|
|
|
import (
|
|
"flag"
|
|
"fmt"
|
|
"github.com/MichaelMure/git-bug/repository"
|
|
)
|
|
|
|
const messageFilename = "BUG_MESSAGE_EDITMSG"
|
|
|
|
// Command represents the definition of a single command.
|
|
type Command struct {
|
|
// Short description of the command
|
|
Description string
|
|
// Command line usage
|
|
Usage string
|
|
// Flag set of the command
|
|
flagSet *flag.FlagSet
|
|
// Execute the command
|
|
RunMethod func(repository.Repo, []string) error
|
|
}
|
|
|
|
// Run executes a command, given its arguments.
|
|
//
|
|
// The args parameter is all of the command line args that followed the
|
|
// subcommand.
|
|
func (cmd *Command) Run(repo repository.Repo, args []string) error {
|
|
return cmd.RunMethod(repo, args)
|
|
}
|
|
|
|
func (cmd *Command) PrintUsage(rootCommand string, cmdName string) {
|
|
fmt.Printf("Usage: %s %s %s\n", rootCommand, cmdName, cmd.Usage)
|
|
|
|
if cmd.flagSet != nil {
|
|
fmt.Printf("\nOptions:\n")
|
|
cmd.flagSet.PrintDefaults()
|
|
}
|
|
}
|
|
|
|
// CommandMap defines all of the available (sub)commands.
|
|
var CommandMap map[string]*Command
|
|
|
|
// We use init() to avoid a cycle in the data initialization because of the "commands" command
|
|
func init() {
|
|
CommandMap = map[string]*Command{
|
|
"commands": commandsCmd,
|
|
"comment": commentCmd,
|
|
"ls": lsCmd,
|
|
"new": newCmd,
|
|
"pull": pullCmd,
|
|
"push": pushCmd,
|
|
}
|
|
}
|