summaryrefslogtreecommitdiff
path: root/argv.go
blob: db94b9c84bfdeea2ee33fe680b0103d8590e1a8b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
package main

/*
	this parses the command line arguements
*/

var argv args

type FindCmd struct {
	All       bool `arg:"--all"                           help:"select every repo"`
	ReadOnly  bool `arg:"--readonly"                      help:"include read-only repos"`
	Mine      bool `arg:"--mine"                          help:"your repos as defined in the forge config"`
	Favorites bool `arg:"--favorites"                     help:"your repos configured as favorites"`
	Private   bool `arg:"--private"                       help:"private repos from your .config/forge/"`
}

type DoCmd struct {
	List     bool   `arg:"--list"                            help:"just show a table of the current state"`
	GitPull  bool   `arg:"--pull"                            help:"run 'git pull'"`
	GitReset bool   `arg:"--git-reset"                       help:"run 'git reset --hard'"`
	Scan     bool   `arg:"--scan"                            help:"reload protobuf from .git/"`
	Force    bool   `arg:"--force"                           help:"force redo things"`
	Dirty    bool   `arg:"--dirty"                              help:"update git CheckDirty()"`
	PatchSet string `arg:"--patchset"                      help:"make patch set"`
}

type args struct {
	Find         *FindCmd `arg:"subcommand:find"                      help:"select repos (for example, --all or --mine)"`
	Do           *DoCmd   `arg:"subcommand:do"                        help:"do something ('git pull', 'build', 'install', etc)"`
	Config       bool     `arg:"--config"                             help:"show your .config/forge/ settings"`
	ListPatchSet bool     `arg:"--list-patchset"                      help:"list patch sets"`
	DryRun       bool     `arg:"--dry-run"                            help:"show what would be run"`
	Fix          bool     `arg:"--fix"                                help:"fix config, save config & exit"`
	Delete       string   `arg:"--delete"                             help:"delete this repo"`
	User         bool     `arg:"--user"                               help:"git checkout user"`
	Devel        bool     `arg:"--devel"                              help:"git checkout devel"`
	Master       bool     `arg:"--master"                             help:"git checkout master"`
	URL          string   `arg:"--connect"                            help:"gowebd url"`
	Register     string   `arg:"--register"                           help:"register your git URL (foo.com/mystuff) or (github.com/foo/bar)"`
}

func (args) Version() string {
	return "forge " + VERSION + "    Built on " + BUILDTIME
}

func (a args) Description() string {
	return `
forge -- in the spirit of things like sourceforge

Examples:
	forge --config                               # shows your forge config (~/.config/forge/)
	forge find --all   do --pull                 # run 'git pull' in every repo
	forge find --mine  do --clone                # git clone every package you have in your config file
	forge find --all   do --build --dry-run      # build every binary package (but just show what would run)
	forge find --all   --user                    # checkout the user branch
	forge find --all   --devel                   # checkout the devel branch
	forge find --all   --master                  # checkout the master branch

	# these options are intended for automation. You probably just want to use the GUI.
	`
}