mirror of
https://github.com/stashapp/stash.git
synced 2025-12-17 04:14:39 +03:00
67 lines
1.2 KiB
Go
67 lines
1.2 KiB
Go
package gomods
|
|
|
|
import (
|
|
"go/build"
|
|
"os"
|
|
"os/exec"
|
|
"strings"
|
|
|
|
"github.com/gobuffalo/genny"
|
|
"github.com/pkg/errors"
|
|
)
|
|
|
|
func New(name string, path string) (*genny.Group, error) {
|
|
g := &genny.Group{}
|
|
|
|
init, err := Init(name, path)
|
|
if err != nil {
|
|
return g, errors.WithStack(err)
|
|
}
|
|
g.Add(init)
|
|
|
|
tidy, err := Tidy(path, false)
|
|
if err != nil {
|
|
return g, errors.WithStack(err)
|
|
}
|
|
g.Add(tidy)
|
|
return g, nil
|
|
}
|
|
|
|
func Init(name string, path string) (*genny.Generator, error) {
|
|
if len(name) == 0 && len(path) == 0 {
|
|
pwd, err := os.Getwd()
|
|
if err != nil {
|
|
return nil, errors.WithStack(err)
|
|
}
|
|
path = pwd
|
|
}
|
|
|
|
if len(name) == 0 && path != "." {
|
|
name = path
|
|
c := build.Default
|
|
for _, s := range c.SrcDirs() {
|
|
name = strings.TrimPrefix(name, s)
|
|
}
|
|
}
|
|
|
|
name = strings.Replace(name, "\\", "/", -1)
|
|
name = strings.TrimPrefix(name, "/")
|
|
|
|
g := genny.New()
|
|
g.StepName = "go:mod:init:" + name
|
|
g.RunFn(func(r *genny.Runner) error {
|
|
if !On() {
|
|
return nil
|
|
}
|
|
return r.Chdir(path, func() error {
|
|
args := []string{"mod", "init"}
|
|
if len(name) > 0 {
|
|
args = append(args, name)
|
|
}
|
|
cmd := exec.Command(genny.GoBin(), args...)
|
|
return r.Exec(cmd)
|
|
})
|
|
})
|
|
return g, nil
|
|
}
|