summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2024-03-21 22:47:17 -0500
committerJeff Carr <[email protected]>2024-03-21 22:47:17 -0500
commit84b048aa2985f6a00e846d4e5e50352c44f13c28 (patch)
tree87e1aa6c3a0d14d0b7b759b0ca2a378e8e05cf64
parent7a095d15667b683d310bd82215149bc748fcb9c9 (diff)
--go-src + --recursivev0.0.7
-rw-r--r--Makefile4
-rw-r--r--argv.go6
-rw-r--r--main.go18
3 files changed, 21 insertions, 7 deletions
diff --git a/Makefile b/Makefile
index 54862c2..1993b72 100644
--- a/Makefile
+++ b/Makefile
@@ -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
diff --git a/argv.go b/argv.go
index cfdd3d4..77a4999 100644
--- a/argv.go
+++ b/argv.go
@@ -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
diff --git a/main.go b/main.go
index 93ed536..c9ecb2d 100644
--- a/main.go
+++ b/main.go
@@ -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