diff options
| author | Jeff Carr <[email protected]> | 2024-03-21 22:47:17 -0500 | 
|---|---|---|
| committer | Jeff Carr <[email protected]> | 2024-03-21 22:47:17 -0500 | 
| commit | 84b048aa2985f6a00e846d4e5e50352c44f13c28 (patch) | |
| tree | 87e1aa6c3a0d14d0b7b759b0ca2a378e8e05cf64 | |
| parent | 7a095d15667b683d310bd82215149bc748fcb9c9 (diff) | |
--go-src + --recursivev0.0.7
| -rw-r--r-- | Makefile | 4 | ||||
| -rw-r--r-- | argv.go | 6 | ||||
| -rw-r--r-- | main.go | 18 | 
3 files changed, 21 insertions, 7 deletions
@@ -3,7 +3,7 @@ VERSION = $(shell git describe --tags)  run: build  	@#./go-clone --work github.com/rclone/rclone  	@# ./go-clone --work go.wit.com/apps/basicwindow -	./go-clone go.wit.com/apps/basicwindow +	./go-clone  # test using --no-work against ~/go/src  homeGoSrc: build @@ -13,7 +13,7 @@ homeGoSrc: build  	./go-clone --no-work go.wit.com/apps/basicwindow  modernc: build -	./go-clone --no-work modernc.org/sqlite +	./go-clone --no-work --recursive modernc.org/sqlite  vet:  	@GO111MODULE=off go vet @@ -8,14 +8,18 @@ package main  type args struct {  	Repo      string `arg:"positional"    help:"go import path"` -	Work      bool   `arg:"--work"        help:"make a work directory"` +	// Work      bool   `arg:"--work"        help:"make a work directory"`  	NoWork    bool   `arg:"--no-work"     help:"do not make or modify the go.work file"` +	GoSrc     bool   `arg:"--go-src"      help:"only work in ~/go/src"`  	DryRun    bool   `arg:"--dry-run"     help:"show what would be run"`  	Recursive bool   `arg:"--recursive"   help:"resursively clone all dependencies"`  }  func (a args) Description() string {  	return ` +By default, go-clone will find your go.work file and work from there. +Otherwise, it will create a work/ directory. +  This will recursively clone the sources for this app into a work/ directory:  go-clone --recursive go.wit.com/apps/go-clone @@ -27,6 +27,7 @@ func main() {  		os.Exit(0)  	} +	// figures out where you're go.work file is  	wdir, err := findWorkFile()  	if err != nil {  		log.Info(err) @@ -93,6 +94,11 @@ func main() {  // look for or make a go.work file  // otherwise use ~/go/src  func findWorkFile() (string, error) { +	if myargs.GoSrc { +		// user put --go-src on the command line so use ~/go/src +		return useGoSrc() +	} +  	pwd, err := os.Getwd()  	if err == nil {  		// Check for go.work in the current directory and then move up until root @@ -103,7 +109,7 @@ func findWorkFile() (string, error) {  		}  		// if the user added '--work' on the cmdline, make a work directory and init the go.work file -		if myargs.Work { +		if ! myargs.NoWork {  			pwd, err = os.Getwd()  			newpwd := filepath.Join(pwd, "work")  			shell.Mkdir(newpwd) @@ -119,13 +125,17 @@ func findWorkFile() (string, error) {  	}  	// there are no go.work files, resume the ~/go/src behavior from prior to golang 1.22 -	// this is the 'old way" and works fine for me. I use it because I like the ~/go/src directory -	// because I know exactly what is in it: GO stuff & nothing else +	return useGoSrc() +} + +// this is the 'old way" and works fine for me. I use it because I like the ~/go/src directory +// because I know exactly what is in it: GO stuff & nothing else +func useGoSrc() (string, error) {  	homeDir, err := os.UserHomeDir()  	if err != nil {  		return "", err  	} -	pwd = filepath.Join(homeDir, "go/src") +	pwd := filepath.Join(homeDir, "go/src")  	shell.Mkdir(pwd)  	os.Chdir(pwd)  	return pwd, nil  | 
