Skip to content

Commit 5213a4f

Browse files
refactor: refactor envbuilder to use coder/serpent as CLI engine (#140)
1 parent f92dc3f commit 5213a4f

File tree

6 files changed

+368
-321
lines changed

6 files changed

+368
-321
lines changed

cmd/envbuilder/main.go

+12-15
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import (
1414
"github.com/coder/coder/v2/codersdk"
1515
"github.com/coder/coder/v2/codersdk/agentsdk"
1616
"github.com/coder/envbuilder"
17-
"github.com/spf13/cobra"
17+
"github.com/coder/serpent"
1818

1919
// *Never* remove this. Certificates are not bundled as part
2020
// of the container, so this is necessary for all connections
@@ -23,15 +23,11 @@ import (
2323
)
2424

2525
func main() {
26-
root := &cobra.Command{
27-
Use: "envbuilder",
28-
// Hide usage because we don't want to show the
29-
// "envbuilder [command] --help" output on error.
30-
SilenceUsage: true,
31-
SilenceErrors: true,
32-
RunE: func(cmd *cobra.Command, args []string) error {
33-
options := envbuilder.OptionsFromEnv(os.LookupEnv)
34-
26+
var options envbuilder.Options
27+
cmd := serpent.Command{
28+
Use: "envbuilder",
29+
Options: options.CLI(),
30+
Handler: func(inv *serpent.Invocation) error {
3531
var sendLogs func(ctx context.Context, log ...agentsdk.Log) error
3632
agentURL := os.Getenv("CODER_AGENT_URL")
3733
agentToken := os.Getenv("CODER_AGENT_TOKEN")
@@ -54,7 +50,7 @@ func main() {
5450
}
5551
var flushAndClose func(ctx context.Context) error
5652
sendLogs, flushAndClose = agentsdk.LogsSender(agentsdk.ExternalLogSourceID, client.PatchLogs, slog.Logger{})
57-
defer flushAndClose(cmd.Context())
53+
defer flushAndClose(inv.Context())
5854

5955
// This adds the envbuilder subsystem.
6056
// If telemetry is enabled in a Coder deployment,
@@ -70,23 +66,24 @@ func main() {
7066

7167
options.Logger = func(level codersdk.LogLevel, format string, args ...interface{}) {
7268
output := fmt.Sprintf(format, args...)
73-
fmt.Fprintln(cmd.ErrOrStderr(), output)
69+
fmt.Fprintln(inv.Stderr, output)
7470
if sendLogs != nil {
75-
sendLogs(cmd.Context(), agentsdk.Log{
71+
sendLogs(inv.Context(), agentsdk.Log{
7672
CreatedAt: time.Now(),
7773
Output: output,
7874
Level: level,
7975
})
8076
}
8177
}
82-
err := envbuilder.Run(cmd.Context(), options)
78+
79+
err := envbuilder.Run(inv.Context(), options)
8380
if err != nil {
8481
options.Logger(codersdk.LogLevelError, "error: %s", err)
8582
}
8683
return err
8784
},
8885
}
89-
err := root.Execute()
86+
err := cmd.Invoke().WithOS().Run()
9087
if err != nil {
9188
fmt.Fprintf(os.Stderr, "error: %v", err)
9289
os.Exit(1)

0 commit comments

Comments
 (0)