package main

/*
	this parses the command line arguements

	this enables command line options from other packages like 'gui' and 'log'
*/

var argv args

type args struct {
	Repo      string `arg:"positional"                     help:"go import path"`
	AutoWork  bool   `arg:"--work"       default:"false"   help:"recreate the go.work file"`
	DryRun    bool   `arg:"--dry-run"                      help:"show what would be run"`
	Recursive bool   `arg:"--recursive"  default:"false"   help:"recursively clone all dependencies"`
	Pull      bool   `arg:"--git-pull"   default:"false"   help:"run 'git pull'"`
	Build     bool   `arg:"--build"      default:"true"    help:"try to build it after clone"`
	Install   bool   `arg:"--install"    default:"false"   help:"try to install it after clone"`
	Ignore    bool   `arg:"--ignore"     default:"false"   help:"ignore weird clone errors from non-standard repos"`
	// Fetch     bool   `arg:"--git-fetch"      default:"false" help:"run 'git fetch' on all your repos"`
}

func (args) Version() string {
	return "go-clone " + VERSION + "    Built on " + BUILDTIME
}

func (a args) Description() string {
	return `
git clone go repositories

Examples:
	go-clone go.wit.com/apps/go-clone              # simply try to git clone this
	go-clone --recursive go.wit.com/apps/go-clone  # recursively clone all the dependencies
	go-clone --auto-work go.wit.com/apps/go-clone  # if you are using a go.work file, recreate the go.work file
	go-clone --go-reset                            # recreate every go.mod and go.sum file
	go-clone --git-pull                            # run 'git pull' in every repo
	go-clone --build                               # build every binary package
	go-clone --install                             # install every binary package
`
}