deadlock package (#489)

* deadlock package

* clean up pipe
This commit is contained in:
David Colburn
2022-03-07 16:26:52 -06:00
committed by GitHub
parent 608da4ba4b
commit dca695bd68

View File

@@ -97,6 +97,44 @@ func BuildLinux() error {
return nil
}
func Deadlock() error {
if err := installTool("golang.org/x/tools/cmd/goimports", "latest", false); err != nil {
return err
}
if err := run("go get github.com/sasha-s/go-deadlock"); err != nil {
return err
}
if err := pipe("grep -rl sync.Mutex ./pkg", "xargs sed -i -e s/sync.Mutex/deadlock.Mutex/g"); err != nil {
return err
}
if err := pipe("grep -rl sync.RWMutex ./pkg", "xargs sed -i -e s/sync.RWMutex/deadlock.RWMutex/g"); err != nil {
return err
}
if err := pipe("grep -rl deadlock.Mutex\\|deadlock.RWMutex ./pkg", "xargs goimports -w"); err != nil {
return err
}
if err := run("go mod tidy"); err != nil {
return err
}
return nil
}
func Sync() error {
if err := pipe("grep -rl deadlock.Mutex ./pkg", "xargs sed -i -e s/deadlock.Mutex/sync.Mutex/g"); err != nil {
return err
}
if err := pipe("grep -rl deadlock.RWMutex ./pkg", "xargs sed -i -e s/deadlock.RWMutex/sync.RWMutex/g"); err != nil {
return err
}
if err := pipe("grep -rl sync.Mutex\\|sync.RWMutex ./pkg", "xargs goimports -w"); err != nil {
return err
}
if err := run("go mod tidy"); err != nil {
return err
}
return nil
}
// builds and publish snapshot docker image
func PublishDocker() error {
// don't publish snapshot versions as latest or minor version
@@ -127,10 +165,7 @@ func Test() error {
// run all tests including integration
func TestAll() error {
mg.Deps(generateWire, macULimit)
// "-v", "-race",
cmd := exec.Command("go", "test", "./...", "-count=1", "-timeout=4m", "-v")
connectStd(cmd)
return cmd.Run()
return run("go test ./... -count=1 -timeout=4m -v")
}
// cleans up builds
@@ -145,10 +180,7 @@ func Generate() error {
mg.Deps(installDeps, generateWire)
fmt.Println("generating...")
cmd := exec.Command("go", "generate", "./...")
connectStd(cmd)
return cmd.Run()
return run("go generate ./...")
}
// code generation for wiring
@@ -353,3 +385,48 @@ func (c *Checksummer) computeChecksum() error {
return nil
}
func run(commands ...string) error {
for _, command := range commands {
args := strings.Split(command, " ")
cmd := exec.Command(args[0], args[1:]...)
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
if err := cmd.Run(); err != nil {
return err
}
}
return nil
}
func pipe(first, second string) error {
a1 := strings.Split(first, " ")
c1 := exec.Command(a1[0], a1[1:]...)
c1.Stderr = os.Stderr
p, err := c1.StdoutPipe()
if err != nil {
return err
}
a2 := strings.Split(second, " ")
c2 := exec.Command(a2[0], a2[1:]...)
c2.Stdin = p
c2.Stdout = os.Stdout
c2.Stderr = os.Stderr
if err = c1.Start(); err != nil {
return err
}
if err = c2.Start(); err != nil {
return err
}
if err = c1.Wait(); err != nil {
return err
}
if err = c2.Wait(); err != nil {
return err
}
return nil
}