Skip to content

Commit b272a97

Browse files
authored
chore: refactor options to separate package (#278)
1 parent 244c3ec commit b272a97

File tree

11 files changed

+274
-260
lines changed

11 files changed

+274
-260
lines changed

Makefile

+2-2
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,10 @@ build: scripts/envbuilder-$(GOARCH)
3333
update-golden-files: .gen-golden
3434

3535
.gen-golden: $(GOLDEN_FILES) $(GO_SRC_FILES) $(GO_TEST_FILES)
36-
go test . -update
36+
go test ./options -update
3737
@touch "$@"
3838

39-
docs: options.go
39+
docs: options/options.go options/options_test.go
4040
go run ./scripts/docsgen/main.go
4141

4242
.PHONY: test

cmd/envbuilder/main.go

+17-15
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ import (
88
"slices"
99
"strings"
1010

11+
"github.com/coder/envbuilder/options"
12+
1113
"github.com/coder/coder/v2/codersdk"
1214
"github.com/coder/envbuilder"
1315
"github.com/coder/envbuilder/internal/log"
@@ -23,47 +25,47 @@ func main() {
2325
cmd := envbuilderCmd()
2426
err := cmd.Invoke().WithOS().Run()
2527
if err != nil {
26-
fmt.Fprintf(os.Stderr, "error: %v", err)
28+
_, _ = fmt.Fprintf(os.Stderr, "error: %v", err)
2729
os.Exit(1)
2830
}
2931
}
3032

3133
func envbuilderCmd() serpent.Command {
32-
var options envbuilder.Options
34+
var o options.Options
3335
cmd := serpent.Command{
3436
Use: "envbuilder",
35-
Options: options.CLI(),
37+
Options: o.CLI(),
3638
Handler: func(inv *serpent.Invocation) error {
37-
options.Logger = log.New(os.Stderr, options.Verbose)
38-
if options.CoderAgentURL != "" {
39-
if options.CoderAgentToken == "" {
39+
o.Logger = log.New(os.Stderr, o.Verbose)
40+
if o.CoderAgentURL != "" {
41+
if o.CoderAgentToken == "" {
4042
return errors.New("CODER_AGENT_URL must be set if CODER_AGENT_TOKEN is set")
4143
}
42-
u, err := url.Parse(options.CoderAgentURL)
44+
u, err := url.Parse(o.CoderAgentURL)
4345
if err != nil {
4446
return fmt.Errorf("unable to parse CODER_AGENT_URL as URL: %w", err)
4547
}
46-
coderLog, closeLogs, err := log.Coder(inv.Context(), u, options.CoderAgentToken)
48+
coderLog, closeLogs, err := log.Coder(inv.Context(), u, o.CoderAgentToken)
4749
if err == nil {
48-
options.Logger = log.Wrap(options.Logger, coderLog)
50+
o.Logger = log.Wrap(o.Logger, coderLog)
4951
defer closeLogs()
5052
// This adds the envbuilder subsystem.
5153
// If telemetry is enabled in a Coder deployment,
5254
// this will be reported and help us understand
5355
// envbuilder usage.
54-
if !slices.Contains(options.CoderAgentSubsystem, string(codersdk.AgentSubsystemEnvbuilder)) {
55-
options.CoderAgentSubsystem = append(options.CoderAgentSubsystem, string(codersdk.AgentSubsystemEnvbuilder))
56-
_ = os.Setenv("CODER_AGENT_SUBSYSTEM", strings.Join(options.CoderAgentSubsystem, ","))
56+
if !slices.Contains(o.CoderAgentSubsystem, string(codersdk.AgentSubsystemEnvbuilder)) {
57+
o.CoderAgentSubsystem = append(o.CoderAgentSubsystem, string(codersdk.AgentSubsystemEnvbuilder))
58+
_ = os.Setenv("CODER_AGENT_SUBSYSTEM", strings.Join(o.CoderAgentSubsystem, ","))
5759
}
5860
} else {
5961
// Failure to log to Coder should cause a fatal error.
60-
options.Logger(log.LevelError, "unable to send logs to Coder: %s", err.Error())
62+
o.Logger(log.LevelError, "unable to send logs to Coder: %s", err.Error())
6163
}
6264
}
6365

64-
err := envbuilder.Run(inv.Context(), options)
66+
err := envbuilder.Run(inv.Context(), o)
6567
if err != nil {
66-
options.Logger(log.LevelError, "error: %s", err)
68+
o.Logger(log.LevelError, "error: %s", err)
6769
}
6870
return err
6971
},

0 commit comments

Comments
 (0)