Newer
Older
"github.com/rs/zerolog"
"orus.io/orus-io/beaver/lib/logging"
DryRun bool `short:"d" long:"dry-run" description:"if set only prints commands but do not run them"`
Keep bool `short:"k" long:"keep" description:"Keep the temporary files"`
Output string `short:"o" long:"output" description:"output directory, use \"stdout\" to print to stdout"`
DirName string `required:"yes" positional-arg-name:"directory"`
log zerolog.Logger `no-flag:"t"`
func NewBuildCmd(loggingOptions *logging.Options) *BuildCmd {
cmd := BuildCmd{log: loggingOptions.Logger()}
return &cmd
}
// Execute ...
func (cmd *BuildCmd) Execute([]string) error {
cmd.log.Debug().Str("directory", cmd.PositionalArgs.DirName).Msg("starting beaver")
config := runner.NewCmdConfig(cmd.log, ".", cmd.PositionalArgs.DirName, cmd.Args.DryRun, cmd.Args.Output)
cmd.log.Fatal().Err(err).Msg("cannot get current working directory")
}
tmpDir, err := os.MkdirTemp(path, ".beaver-")
if err != nil {
return fmt.Errorf("failed to create temp dir: %w", err)
}
defer func() {
if err := os.RemoveAll(tmpDir); err != nil {
cmd.log.Err(err).Str("tempdir", tmpDir).Msg("failed to remove temp dir")
if err := config.Initialize(tmpDir); err != nil {
return fmt.Errorf("failed to prepare config: %w", err)
buildCmd := NewBuildCmd(LoggingOptions)
_, err := parser.AddCommand("build", "Build new environment", "", buildCmd)
if err != nil {
Logger.Fatal().Msg(err.Error())
}
g, err := parser.AddGroup("Logging", "Logging options", LoggingOptions)
if err != nil {
panic(err)
}
g.Namespace = "log"