--go-src + --recursive
This commit is contained in:
parent
7a095d1566
commit
84b048aa29
4
Makefile
4
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
|
||||
|
|
6
argv.go
6
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
|
||||
|
|
14
main.go
14
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
|
||||
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
|
||||
|
|
Loading…
Reference in New Issue