godog/cmd/godog/internal/cmd_build.go
Softonik ffcc5b10ae
Некоторые проверки провалились
test / test (1.16.x) (push) Has been cancelled
test / test (1.17.x) (push) Has been cancelled
test / test (oldstable) (push) Has been cancelled
test / test (stable) (push) Has been cancelled
Модуль переименован для публикации
2025-06-01 02:41:39 +03:00

55 строки
1,5 КиБ
Go

package internal
import (
"fmt"
"go/build"
"path/filepath"
"git.golang1.ru/softonik/godog/colors"
"git.golang1.ru/softonik/godog/internal/builder"
"github.com/spf13/cobra"
)
var buildOutput string
var buildOutputDefault = "godog.test"
// CreateBuildCmd creates the build subcommand.
func CreateBuildCmd() cobra.Command {
if build.Default.GOOS == "windows" {
buildOutputDefault += ".exe"
}
buildCmd := cobra.Command{
Use: "build",
Short: "Compiles a test runner",
Long: `Compiles a test runner. Command should be run from the directory of tested
package and contain buildable go source.
The test runner can be executed with the same flags as when using godog run.`,
Example: ` godog build
godog build -o ` + buildOutputDefault,
RunE: buildCmdRunFunc,
}
buildCmd.Flags().StringVarP(&buildOutput, "output", "o", buildOutputDefault, `compiles the test runner to the named file
`)
return buildCmd
}
func buildCmdRunFunc(cmd *cobra.Command, args []string) error {
fmt.Println(colors.Yellow("Use of godog CLI is deprecated, please use *testing.T instead."))
fmt.Println(colors.Yellow("See https://git.golang1.ru/softonik/godog/discussions/478 for details."))
bin, err := filepath.Abs(buildOutput)
if err != nil {
return fmt.Errorf("could not locate absolute path for: %q. reason: %v", buildOutput, err)
}
if err = builder.Build(bin); err != nil {
return fmt.Errorf("could not build binary at: %q. reason: %v", buildOutput, err)
}
return nil
}