- //nolint: gosec
- package main
-
- import (
- "fmt"
- "os"
- osexec "os/exec"
- "path/filepath"
- )
-
- // execute executes a shell command.
- func exec(args ...string) error {
- cmd := osexec.Command(args[0], args[1:]...)
- out, err := cmd.CombinedOutput()
- switch err := err.(type) {
- case nil:
- return nil
- case *osexec.ExitError:
- return fmt.Errorf("failed to run %q:\n%v", args, string(out))
- default:
- return err
- }
- }
-
- // execVerbose executes a shell command while displaying its output.
- func execVerbose(args ...string) error {
- cmd := osexec.Command(args[0], args[1:]...)
- cmd.Stdout = os.Stdout
- cmd.Stderr = os.Stderr
- return cmd.Run()
- }
-
- // execCompose runs a Docker Compose command for a testnet.
- func execCompose(dir string, args ...string) error {
- return exec(append(
- []string{"docker-compose", "--ansi=never", "-f", filepath.Join(dir, "docker-compose.yml")},
- args...)...)
- }
-
- // execComposeVerbose runs a Docker Compose command for a testnet and displays its output.
- func execComposeVerbose(dir string, args ...string) error {
- return execVerbose(append(
- []string{"docker-compose", "--ansi=never", "-f", filepath.Join(dir, "docker-compose.yml")},
- args...)...)
- }
-
- // execDocker runs a Docker command.
- func execDocker(args ...string) error {
- return exec(append([]string{"docker"}, args...)...)
- }
|