207 lines
5.6 KiB
Go
207 lines
5.6 KiB
Go
package dev
|
|
|
|
import (
|
|
"github.com/versenilvis/iris/commands/core"
|
|
)
|
|
|
|
func init() {
|
|
core.Register(&core.Spec{
|
|
Name: "git",
|
|
Description: "version control",
|
|
Options: []core.Option{
|
|
{Name: "--version", Description: "print version"},
|
|
{Name: "--help", Description: "show help"},
|
|
},
|
|
Subcommands: []core.Subcommand{
|
|
{
|
|
Name: "init",
|
|
Description: "create empty repo",
|
|
Options: []core.Option{
|
|
{Name: "--bare", Description: "create bare repo"},
|
|
{Name: "-b", Description: "initial branch name"},
|
|
},
|
|
},
|
|
{
|
|
Name: "clone",
|
|
Description: "clone a repository",
|
|
Options: []core.Option{
|
|
{Name: "--depth", Description: "shallow clone depth"},
|
|
{Name: "--branch", Description: "specific branch"},
|
|
{Name: "--bare", Description: "clone as bare"},
|
|
},
|
|
},
|
|
{
|
|
Name: "status",
|
|
Description: "show working tree",
|
|
Options: []core.Option{
|
|
{Name: "-s", Description: "short format"},
|
|
{Name: "--porcelain", Description: "machine format"},
|
|
},
|
|
},
|
|
{
|
|
Name: "add",
|
|
Description: "stage changes",
|
|
Generator: core.FileGenerator(),
|
|
Options: []core.Option{
|
|
{Name: "-A", Description: "add all files"},
|
|
{Name: "-p", Description: "interactive patch"},
|
|
{Name: ".", Description: "add current dir"},
|
|
},
|
|
},
|
|
{
|
|
Name: "commit",
|
|
Description: "record changes",
|
|
Options: []core.Option{
|
|
{Name: "-m", Description: "commit message"},
|
|
{Name: "-a", Description: "auto stage tracked"},
|
|
{Name: "--amend", Description: "amend last commit"},
|
|
{Name: "--no-edit", Description: "keep message"},
|
|
},
|
|
},
|
|
{
|
|
Name: "push",
|
|
Description: "update remote refs",
|
|
Options: []core.Option{
|
|
{Name: "-u", Description: "set upstream"},
|
|
{Name: "--force", Description: "force push"},
|
|
{Name: "--tags", Description: "push tags"},
|
|
{Name: "origin", Description: "default remote"},
|
|
},
|
|
},
|
|
{
|
|
Name: "pull",
|
|
Description: "fetch and merge",
|
|
Options: []core.Option{
|
|
{Name: "--rebase", Description: "rebase on pull"},
|
|
{Name: "origin", Description: "default remote"},
|
|
},
|
|
},
|
|
{
|
|
Name: "fetch",
|
|
Description: "download objects",
|
|
Options: []core.Option{
|
|
{Name: "--all", Description: "fetch all remotes"},
|
|
{Name: "--prune", Description: "remove stale refs"},
|
|
},
|
|
},
|
|
{
|
|
Name: "checkout",
|
|
Description: "switch branches",
|
|
Options: []core.Option{
|
|
{Name: "-b", Description: "create new branch"},
|
|
},
|
|
},
|
|
{
|
|
Name: "switch",
|
|
Description: "switch branches",
|
|
Options: []core.Option{
|
|
{Name: "-c", Description: "create and switch"},
|
|
},
|
|
},
|
|
{
|
|
Name: "branch",
|
|
Description: "manage branches",
|
|
Options: []core.Option{
|
|
{Name: "-d", Description: "delete branch"},
|
|
{Name: "-D", Description: "force delete"},
|
|
{Name: "-a", Description: "list all"},
|
|
{Name: "-m", Description: "rename branch"},
|
|
},
|
|
},
|
|
{
|
|
Name: "merge",
|
|
Description: "join branches",
|
|
Options: []core.Option{
|
|
{Name: "--no-ff", Description: "no fast forward"},
|
|
{Name: "--squash", Description: "squash commits"},
|
|
{Name: "--abort", Description: "abort merge"},
|
|
},
|
|
},
|
|
{
|
|
Name: "rebase",
|
|
Description: "reapply commits",
|
|
Options: []core.Option{
|
|
{Name: "-i", Description: "interactive"},
|
|
{Name: "--onto", Description: "rebase onto"},
|
|
{Name: "--abort", Description: "abort rebase"},
|
|
{Name: "--continue", Description: "continue rebase"},
|
|
},
|
|
},
|
|
{
|
|
Name: "log",
|
|
Description: "show commit log",
|
|
Options: []core.Option{
|
|
{Name: "--oneline", Description: "compact format"},
|
|
{Name: "--graph", Description: "show graph"},
|
|
{Name: "-n", Description: "limit count"},
|
|
},
|
|
},
|
|
{
|
|
Name: "diff",
|
|
Description: "show changes",
|
|
Options: []core.Option{
|
|
{Name: "--staged", Description: "staged changes"},
|
|
{Name: "--stat", Description: "diffstat only"},
|
|
},
|
|
},
|
|
{
|
|
Name: "stash",
|
|
Description: "stash changes",
|
|
Subcommands: []core.Subcommand{
|
|
{Name: "pop", Description: "apply and drop"},
|
|
{Name: "apply", Description: "apply stash"},
|
|
{Name: "drop", Description: "remove stash"},
|
|
{Name: "list", Description: "list stashes"},
|
|
{Name: "show", Description: "show stash diff"},
|
|
},
|
|
},
|
|
{
|
|
Name: "reset",
|
|
Description: "reset HEAD",
|
|
Options: []core.Option{
|
|
{Name: "--hard", Description: "discard changes"},
|
|
{Name: "--soft", Description: "keep staged"},
|
|
{Name: "--mixed", Description: "unstage changes"},
|
|
},
|
|
},
|
|
{
|
|
Name: "tag",
|
|
Description: "manage tags",
|
|
Options: []core.Option{
|
|
{Name: "-a", Description: "annotated tag"},
|
|
{Name: "-d", Description: "delete tag"},
|
|
{Name: "-l", Description: "list tags"},
|
|
},
|
|
},
|
|
{
|
|
Name: "remote",
|
|
Description: "manage remotes",
|
|
Subcommands: []core.Subcommand{
|
|
{Name: "add", Description: "add remote"},
|
|
{Name: "remove", Description: "remove remote"},
|
|
{Name: "rename", Description: "rename remote"},
|
|
{Name: "-v", Description: "verbose list"},
|
|
},
|
|
},
|
|
{
|
|
Name: "cherry-pick",
|
|
Description: "apply commit",
|
|
Options: []core.Option{
|
|
{Name: "--no-commit", Description: "no auto commit"},
|
|
{Name: "--abort", Description: "abort pick"},
|
|
},
|
|
},
|
|
{
|
|
Name: "bisect",
|
|
Description: "binary search bug",
|
|
Subcommands: []core.Subcommand{
|
|
{Name: "start", Description: "start bisect"},
|
|
{Name: "good", Description: "mark good"},
|
|
{Name: "bad", Description: "mark bad"},
|
|
{Name: "reset", Description: "end bisect"},
|
|
},
|
|
},
|
|
},
|
|
})
|
|
}
|