mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
chore(cli): replace clibase with external coder/serpent (#12252)
This commit is contained in:
+25
-25
@@ -56,7 +56,6 @@ import (
|
||||
"cdr.dev/slog"
|
||||
"cdr.dev/slog/sloggers/sloghuman"
|
||||
"github.com/coder/coder/v2/buildinfo"
|
||||
"github.com/coder/coder/v2/cli/clibase"
|
||||
"github.com/coder/coder/v2/cli/clilog"
|
||||
"github.com/coder/coder/v2/cli/cliui"
|
||||
"github.com/coder/coder/v2/cli/cliutil"
|
||||
@@ -99,6 +98,7 @@ import (
|
||||
"github.com/coder/coder/v2/tailnet"
|
||||
"github.com/coder/pretty"
|
||||
"github.com/coder/retry"
|
||||
"github.com/coder/serpent"
|
||||
"github.com/coder/wgtunnel/tunnelsdk"
|
||||
)
|
||||
|
||||
@@ -258,7 +258,7 @@ func enablePrometheus(
|
||||
), nil
|
||||
}
|
||||
|
||||
func (r *RootCmd) Server(newAPI func(context.Context, *coderd.Options) (*coderd.API, io.Closer, error)) *clibase.Cmd {
|
||||
func (r *RootCmd) Server(newAPI func(context.Context, *coderd.Options) (*coderd.API, io.Closer, error)) *serpent.Cmd {
|
||||
if newAPI == nil {
|
||||
newAPI = func(_ context.Context, o *coderd.Options) (*coderd.API, io.Closer, error) {
|
||||
api := coderd.New(o)
|
||||
@@ -270,16 +270,16 @@ func (r *RootCmd) Server(newAPI func(context.Context, *coderd.Options) (*coderd.
|
||||
vals = new(codersdk.DeploymentValues)
|
||||
opts = vals.Options()
|
||||
)
|
||||
serverCmd := &clibase.Cmd{
|
||||
serverCmd := &serpent.Cmd{
|
||||
Use: "server",
|
||||
Short: "Start a Coder server",
|
||||
Options: opts,
|
||||
Middleware: clibase.Chain(
|
||||
Middleware: serpent.Chain(
|
||||
WriteConfigMW(vals),
|
||||
PrintDeprecatedOptions(),
|
||||
clibase.RequireNArgs(0),
|
||||
serpent.RequireNArgs(0),
|
||||
),
|
||||
Handler: func(inv *clibase.Invocation) error {
|
||||
Handler: func(inv *serpent.Invocation) error {
|
||||
// Main command context for managing cancellation of running
|
||||
// services.
|
||||
ctx, cancel := context.WithCancel(inv.Context())
|
||||
@@ -432,7 +432,7 @@ func (r *RootCmd) Server(newAPI func(context.Context, *coderd.Options) (*coderd.
|
||||
}
|
||||
defer tunnel.Close()
|
||||
tunnelDone = tunnel.Wait()
|
||||
vals.AccessURL = clibase.URL(*tunnel.URL)
|
||||
vals.AccessURL = serpent.URL(*tunnel.URL)
|
||||
|
||||
if vals.WildcardAccessURL.String() == "" {
|
||||
// Suffixed wildcard access URL.
|
||||
@@ -1148,10 +1148,10 @@ func (r *RootCmd) Server(newAPI func(context.Context, *coderd.Options) (*coderd.
|
||||
|
||||
var pgRawURL bool
|
||||
|
||||
postgresBuiltinURLCmd := &clibase.Cmd{
|
||||
postgresBuiltinURLCmd := &serpent.Cmd{
|
||||
Use: "postgres-builtin-url",
|
||||
Short: "Output the connection URL for the built-in PostgreSQL deployment.",
|
||||
Handler: func(inv *clibase.Invocation) error {
|
||||
Handler: func(inv *serpent.Invocation) error {
|
||||
url, err := embeddedPostgresURL(r.createConfig())
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -1165,10 +1165,10 @@ func (r *RootCmd) Server(newAPI func(context.Context, *coderd.Options) (*coderd.
|
||||
},
|
||||
}
|
||||
|
||||
postgresBuiltinServeCmd := &clibase.Cmd{
|
||||
postgresBuiltinServeCmd := &serpent.Cmd{
|
||||
Use: "postgres-builtin-serve",
|
||||
Short: "Run the built-in PostgreSQL deployment.",
|
||||
Handler: func(inv *clibase.Invocation) error {
|
||||
Handler: func(inv *serpent.Invocation) error {
|
||||
ctx := inv.Context()
|
||||
|
||||
cfg := r.createConfig()
|
||||
@@ -1199,10 +1199,10 @@ func (r *RootCmd) Server(newAPI func(context.Context, *coderd.Options) (*coderd.
|
||||
|
||||
createAdminUserCmd := r.newCreateAdminUserCommand()
|
||||
|
||||
rawURLOpt := clibase.Option{
|
||||
rawURLOpt := serpent.Option{
|
||||
Flag: "raw-url",
|
||||
|
||||
Value: clibase.BoolOf(&pgRawURL),
|
||||
Value: serpent.BoolOf(&pgRawURL),
|
||||
Description: "Output the raw connection URL instead of a psql command.",
|
||||
}
|
||||
createAdminUserCmd.Options.Add(rawURLOpt)
|
||||
@@ -1219,9 +1219,9 @@ func (r *RootCmd) Server(newAPI func(context.Context, *coderd.Options) (*coderd.
|
||||
|
||||
// printDeprecatedOptions loops through all command options, and prints
|
||||
// a warning for usage of deprecated options.
|
||||
func PrintDeprecatedOptions() clibase.MiddlewareFunc {
|
||||
return func(next clibase.HandlerFunc) clibase.HandlerFunc {
|
||||
return func(inv *clibase.Invocation) error {
|
||||
func PrintDeprecatedOptions() serpent.MiddlewareFunc {
|
||||
return func(next serpent.HandlerFunc) serpent.HandlerFunc {
|
||||
return func(inv *serpent.Invocation) error {
|
||||
opts := inv.Command.Options
|
||||
// Print deprecation warnings.
|
||||
for _, opt := range opts {
|
||||
@@ -1229,7 +1229,7 @@ func PrintDeprecatedOptions() clibase.MiddlewareFunc {
|
||||
continue
|
||||
}
|
||||
|
||||
if opt.ValueSource == clibase.ValueSourceNone || opt.ValueSource == clibase.ValueSourceDefault {
|
||||
if opt.ValueSource == serpent.ValueSourceNone || opt.ValueSource == serpent.ValueSourceDefault {
|
||||
continue
|
||||
}
|
||||
|
||||
@@ -1255,9 +1255,9 @@ func PrintDeprecatedOptions() clibase.MiddlewareFunc {
|
||||
// writeConfigMW will prevent the main command from running if the write-config
|
||||
// flag is set. Instead, it will marshal the command options to YAML and write
|
||||
// them to stdout.
|
||||
func WriteConfigMW(cfg *codersdk.DeploymentValues) clibase.MiddlewareFunc {
|
||||
return func(next clibase.HandlerFunc) clibase.HandlerFunc {
|
||||
return func(inv *clibase.Invocation) error {
|
||||
func WriteConfigMW(cfg *codersdk.DeploymentValues) serpent.MiddlewareFunc {
|
||||
return func(next serpent.HandlerFunc) serpent.HandlerFunc {
|
||||
return func(inv *serpent.Invocation) error {
|
||||
if !cfg.WriteConfig {
|
||||
return next(inv)
|
||||
}
|
||||
@@ -1427,7 +1427,7 @@ func newProvisionerDaemon(
|
||||
}
|
||||
|
||||
// nolint: revive
|
||||
func PrintLogo(inv *clibase.Invocation, daemonTitle string) {
|
||||
func PrintLogo(inv *serpent.Invocation, daemonTitle string) {
|
||||
// Only print the logo in TTYs.
|
||||
if !isTTYOut(inv) {
|
||||
return
|
||||
@@ -2242,7 +2242,7 @@ func ConfigureTraceProvider(
|
||||
return tracerProvider, sqlDriver, closeTracing
|
||||
}
|
||||
|
||||
func ConfigureHTTPServers(logger slog.Logger, inv *clibase.Invocation, cfg *codersdk.DeploymentValues) (_ *HTTPServers, err error) {
|
||||
func ConfigureHTTPServers(logger slog.Logger, inv *serpent.Invocation, cfg *codersdk.DeploymentValues) (_ *HTTPServers, err error) {
|
||||
ctx := inv.Context()
|
||||
httpServers := &HTTPServers{}
|
||||
defer func() {
|
||||
@@ -2375,7 +2375,7 @@ func ConfigureHTTPServers(logger slog.Logger, inv *clibase.Invocation, cfg *code
|
||||
// Also, for a while we have been accepting the environment variable (but not the
|
||||
// corresponding flag!) "CODER_TLS_REDIRECT_HTTP", and it appeared in a configuration
|
||||
// example, so we keep accepting it to not break backward compat.
|
||||
func redirectHTTPToHTTPSDeprecation(ctx context.Context, logger slog.Logger, inv *clibase.Invocation, cfg *codersdk.DeploymentValues) {
|
||||
func redirectHTTPToHTTPSDeprecation(ctx context.Context, logger slog.Logger, inv *serpent.Invocation, cfg *codersdk.DeploymentValues) {
|
||||
truthy := func(s string) bool {
|
||||
b, err := strconv.ParseBool(s)
|
||||
if err != nil {
|
||||
@@ -2414,7 +2414,7 @@ func parseExternalAuthProvidersFromEnv(prefix string, environ []string) ([]coder
|
||||
sort.Strings(environ)
|
||||
|
||||
var providers []codersdk.ExternalAuthConfig
|
||||
for _, v := range clibase.ParseEnviron(environ, prefix) {
|
||||
for _, v := range serpent.ParseEnviron(environ, prefix) {
|
||||
tokens := strings.SplitN(v.Name, "_", 2)
|
||||
if len(tokens) != 2 {
|
||||
return nil, xerrors.Errorf("invalid env var: %s", v.Name)
|
||||
@@ -2529,7 +2529,7 @@ func escapePostgresURLUserInfo(v string) (string, error) {
|
||||
return v, nil
|
||||
}
|
||||
|
||||
func signalNotifyContext(ctx context.Context, inv *clibase.Invocation, sig ...os.Signal) (context.Context, context.CancelFunc) {
|
||||
func signalNotifyContext(ctx context.Context, inv *serpent.Invocation, sig ...os.Signal) (context.Context, context.CancelFunc) {
|
||||
// On Windows, some of our signal functions lack support.
|
||||
// If we pass in no signals, we should just return the context as-is.
|
||||
if len(sig) == 0 {
|
||||
|
||||
Reference in New Issue
Block a user