mirror of
https://github.com/coder/coder.git
synced 2025-07-09 11:45:56 +00:00
chore: remove coder/preview dependency from codersdk (#17939)
This commit is contained in:
@ -12,6 +12,7 @@ import (
|
||||
"time"
|
||||
|
||||
"github.com/google/uuid"
|
||||
"github.com/hashicorp/hcl/v2"
|
||||
"golang.org/x/xerrors"
|
||||
"tailscale.com/tailcfg"
|
||||
|
||||
@ -24,6 +25,7 @@ import (
|
||||
"github.com/coder/coder/v2/codersdk"
|
||||
"github.com/coder/coder/v2/provisionersdk/proto"
|
||||
"github.com/coder/coder/v2/tailnet"
|
||||
previewtypes "github.com/coder/preview/types"
|
||||
)
|
||||
|
||||
// List is a helper function to reduce boilerplate when converting slices of
|
||||
@ -764,3 +766,83 @@ func Chat(chat database.Chat) codersdk.Chat {
|
||||
func Chats(chats []database.Chat) []codersdk.Chat {
|
||||
return List(chats, Chat)
|
||||
}
|
||||
|
||||
func PreviewParameter(param previewtypes.Parameter) codersdk.PreviewParameter {
|
||||
return codersdk.PreviewParameter{
|
||||
PreviewParameterData: codersdk.PreviewParameterData{
|
||||
Name: param.Name,
|
||||
DisplayName: param.DisplayName,
|
||||
Description: param.Description,
|
||||
Type: codersdk.OptionType(param.Type),
|
||||
FormType: codersdk.ParameterFormType(param.FormType),
|
||||
Styling: codersdk.PreviewParameterStyling{
|
||||
Placeholder: param.Styling.Placeholder,
|
||||
Disabled: param.Styling.Disabled,
|
||||
Label: param.Styling.Label,
|
||||
},
|
||||
Mutable: param.Mutable,
|
||||
DefaultValue: PreviewHCLString(param.DefaultValue),
|
||||
Icon: param.Icon,
|
||||
Options: List(param.Options, PreviewParameterOption),
|
||||
Validations: List(param.Validations, PreviewParameterValidation),
|
||||
Required: param.Required,
|
||||
Order: param.Order,
|
||||
Ephemeral: param.Ephemeral,
|
||||
},
|
||||
Value: PreviewHCLString(param.Value),
|
||||
Diagnostics: PreviewDiagnostics(param.Diagnostics),
|
||||
}
|
||||
}
|
||||
|
||||
func HCLDiagnostics(d hcl.Diagnostics) []codersdk.FriendlyDiagnostic {
|
||||
return PreviewDiagnostics(previewtypes.Diagnostics(d))
|
||||
}
|
||||
|
||||
func PreviewDiagnostics(d previewtypes.Diagnostics) []codersdk.FriendlyDiagnostic {
|
||||
f := d.FriendlyDiagnostics()
|
||||
return List(f, func(f previewtypes.FriendlyDiagnostic) codersdk.FriendlyDiagnostic {
|
||||
return codersdk.FriendlyDiagnostic{
|
||||
Severity: codersdk.DiagnosticSeverityString(f.Severity),
|
||||
Summary: f.Summary,
|
||||
Detail: f.Detail,
|
||||
Extra: codersdk.DiagnosticExtra{
|
||||
Code: f.Extra.Code,
|
||||
},
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
func PreviewHCLString(h previewtypes.HCLString) codersdk.NullHCLString {
|
||||
n := h.NullHCLString()
|
||||
return codersdk.NullHCLString{
|
||||
Value: n.Value,
|
||||
Valid: n.Valid,
|
||||
}
|
||||
}
|
||||
|
||||
func PreviewParameterOption(o *previewtypes.ParameterOption) codersdk.PreviewParameterOption {
|
||||
if o == nil {
|
||||
// This should never be sent
|
||||
return codersdk.PreviewParameterOption{}
|
||||
}
|
||||
return codersdk.PreviewParameterOption{
|
||||
Name: o.Name,
|
||||
Description: o.Description,
|
||||
Value: PreviewHCLString(o.Value),
|
||||
Icon: o.Icon,
|
||||
}
|
||||
}
|
||||
|
||||
func PreviewParameterValidation(v *previewtypes.ParameterValidation) codersdk.PreviewParameterValidation {
|
||||
if v == nil {
|
||||
// This should never be sent
|
||||
return codersdk.PreviewParameterValidation{}
|
||||
}
|
||||
return codersdk.PreviewParameterValidation{
|
||||
Error: v.Error,
|
||||
Regex: v.Regex,
|
||||
Min: v.Min,
|
||||
Max: v.Max,
|
||||
Monotonic: v.Monotonic,
|
||||
}
|
||||
}
|
||||
|
@ -13,6 +13,7 @@ import (
|
||||
"golang.org/x/xerrors"
|
||||
|
||||
"github.com/coder/coder/v2/coderd/database"
|
||||
"github.com/coder/coder/v2/coderd/database/db2sdk"
|
||||
"github.com/coder/coder/v2/coderd/database/dbauthz"
|
||||
"github.com/coder/coder/v2/coderd/files"
|
||||
"github.com/coder/coder/v2/coderd/httpapi"
|
||||
@ -286,10 +287,10 @@ func (api *API) handleParameterWebsocket(rw http.ResponseWriter, r *http.Request
|
||||
result, diagnostics := render(ctx, map[string]string{})
|
||||
response := codersdk.DynamicParametersResponse{
|
||||
ID: -1, // Always start with -1.
|
||||
Diagnostics: previewtypes.Diagnostics(diagnostics),
|
||||
Diagnostics: db2sdk.HCLDiagnostics(diagnostics),
|
||||
}
|
||||
if result != nil {
|
||||
response.Parameters = result.Parameters
|
||||
response.Parameters = db2sdk.List(result.Parameters, db2sdk.PreviewParameter)
|
||||
}
|
||||
err = stream.Send(response)
|
||||
if err != nil {
|
||||
@ -314,10 +315,10 @@ func (api *API) handleParameterWebsocket(rw http.ResponseWriter, r *http.Request
|
||||
result, diagnostics := render(ctx, update.Inputs)
|
||||
response := codersdk.DynamicParametersResponse{
|
||||
ID: update.ID,
|
||||
Diagnostics: previewtypes.Diagnostics(diagnostics),
|
||||
Diagnostics: db2sdk.HCLDiagnostics(diagnostics),
|
||||
}
|
||||
if result != nil {
|
||||
response.Parameters = result.Parameters
|
||||
response.Parameters = db2sdk.List(result.Parameters, db2sdk.PreviewParameter)
|
||||
}
|
||||
err = stream.Send(response)
|
||||
if err != nil {
|
||||
|
@ -68,8 +68,8 @@ func TestDynamicParametersOwnerSSHPublicKey(t *testing.T) {
|
||||
require.Equal(t, -1, preview.ID)
|
||||
require.Empty(t, preview.Diagnostics)
|
||||
require.Equal(t, "public_key", preview.Parameters[0].Name)
|
||||
require.True(t, preview.Parameters[0].Value.Valid())
|
||||
require.Equal(t, sshKey.PublicKey, preview.Parameters[0].Value.Value.AsString())
|
||||
require.True(t, preview.Parameters[0].Value.Valid)
|
||||
require.Equal(t, sshKey.PublicKey, preview.Parameters[0].Value.Value)
|
||||
}
|
||||
|
||||
func TestDynamicParametersWithTerraformValues(t *testing.T) {
|
||||
@ -103,8 +103,8 @@ func TestDynamicParametersWithTerraformValues(t *testing.T) {
|
||||
|
||||
require.Len(t, preview.Parameters, 1)
|
||||
require.Equal(t, "jetbrains_ide", preview.Parameters[0].Name)
|
||||
require.True(t, preview.Parameters[0].Value.Valid())
|
||||
require.Equal(t, "CL", preview.Parameters[0].Value.AsString())
|
||||
require.True(t, preview.Parameters[0].Value.Valid)
|
||||
require.Equal(t, "CL", preview.Parameters[0].Value.Value)
|
||||
})
|
||||
|
||||
// OldProvisioners use the static parameters in the dynamic param flow
|
||||
@ -154,8 +154,8 @@ func TestDynamicParametersWithTerraformValues(t *testing.T) {
|
||||
require.Contains(t, preview.Diagnostics[0].Summary, "required metadata to support dynamic parameters")
|
||||
require.Len(t, preview.Parameters, 1)
|
||||
require.Equal(t, "jetbrains_ide", preview.Parameters[0].Name)
|
||||
require.True(t, preview.Parameters[0].Value.Valid())
|
||||
require.Equal(t, defaultValue, preview.Parameters[0].Value.AsString())
|
||||
require.True(t, preview.Parameters[0].Value.Valid)
|
||||
require.Equal(t, defaultValue, preview.Parameters[0].Value.Value)
|
||||
|
||||
// Test some inputs
|
||||
for _, exp := range []string{defaultValue, "GO", "Invalid", defaultValue} {
|
||||
@ -182,8 +182,8 @@ func TestDynamicParametersWithTerraformValues(t *testing.T) {
|
||||
require.Len(t, preview.Parameters[0].Diagnostics, 0)
|
||||
}
|
||||
require.Equal(t, "jetbrains_ide", preview.Parameters[0].Name)
|
||||
require.True(t, preview.Parameters[0].Value.Valid())
|
||||
require.Equal(t, exp, preview.Parameters[0].Value.AsString())
|
||||
require.True(t, preview.Parameters[0].Value.Valid)
|
||||
require.Equal(t, exp, preview.Parameters[0].Value.Value)
|
||||
}
|
||||
})
|
||||
|
||||
|
Reference in New Issue
Block a user