summaryrefslogtreecommitdiff
path: root/argv.go
blob: 091402bba0fc774c834d21a02a0b76c318c3cf3d (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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
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"`
	Clone    bool `arg:"--clone"                           help:"git clone build dependancies"`
	Scan     bool `arg:"--scan"                            help:"reload protobuf from .git/"`
	Force    bool `arg:"--force"                           help:"force redo things"`
	GitPull  bool `arg:"--git-pull"                        help:"run 'git pull'"`
	GitReset bool `arg:"--git-reset"                       help:"run 'git reset --hard'"`
	Build    bool `arg:"--build"      default:"true"       help:"try to build it"`
	Install  bool `arg:"--install"                         help:"also try to install it"`
	// DoRedoGoMod bool `arg:"--RedoGoMod"                       help:"remake all the go.sum and go.mod files"`
}

/*
arg.MustParse(&args)

switch {
case args.Checkout != nil:
	fmt.Printf("checkout requested for branch %s\n", args.Checkout.Branch)
case args.Commit != nil:
	fmt.Printf("commit requested with message \"%s\"\n", args.Commit.Message)
case args.Push != nil:
	fmt.Printf("push requested from %s to %s\n", args.Push.Branch, args.Push.Remote)
}
*/

type args struct {
	Find   *FindCmd `arg:"subcommand:find"                      help:"select repos (for example, dirty or mine or read-only)"`
	Do     *DoCmd   `arg:"subcommand:do"                        help:"do something ('git pull', 'build', 'install', etc)"`
	Config bool     `arg:"--config"                             help:"show your .config/forge/ settings"`
	//	FindAll       bool     `arg:"--find-all"                           help:"select every repo"`
	//	FindReadOnly  bool     `arg:"--find-readonly"                      help:"include read-only repos"`
	//	FindMine      bool     `arg:"--find-mine"                          help:"download private and writeable repos"`
	//	FindFavorites bool     `arg:"--find-favorites"                     help:"download repos marked as favorites"`
	//	FindPrivate   bool     `arg:"--find-private"                       help:"list private repos in .config/forge/"`
	DoList       bool   `arg:"--do-list"                            help:"list found repos"`
	DoScan       bool   `arg:"--do-scan"                            help:"rescan your repos"`
	DoClone      bool   `arg:"--do-clone"                           help:"go-clone things you are missing"`
	DoForce      bool   `arg:"--do-force"                           help:"force redo go-clone"`
	DoGitPull    bool   `arg:"--do-git-pull"                        help:"run 'git pull' on all your repos"`
	DoGitReset   bool   `arg:"--do-git-reset"                       help:"run 'git reset --hard' on all read-only repos"`
	DoBuild      bool   `arg:"--do-build"      default:"true"       help:"also try to build it"`
	DoInstall    bool   `arg:"--do-install"                         help:"try to install every binary package"`
	DoRedoGoMod  bool   `arg:"--do-RedoGoMod"                       help:"remake all the go.sum and go.mod files"`
	DoGui        bool   `arg:"--do-gui"                             help:"run the gui"`
	DoPatchSet   bool   `arg:"--do-patches"                         help:"make patch set"`
	ListPatchSet bool   `arg:"--list-patches"                       help:"make patch set"`
	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"`
	Dirty        bool   `arg:"--dirty"                              help:"git CheckDirty() on every repo"`
	User         bool   `arg:"--user"                               help:"git checkout user"`
	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  --mine                                # find your private and writable repos
	forge  --favorites                           # find configured as favorites

	forge  --git-pull                            # run 'git pull' in every repo
	forge  --build --dry-run                     # build every binary package (but just show what would run)
	forge  --mine --clone                        # clone every package you have in your config file
	`
}

// forge  --map lib/foo    https://github.com/me/myfoo  # map go.wit.com/lib/foo -> github.com/me/myfoo