Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commita123900

Browse files
authored
chore: remove coder/preview dependency from codersdk (#17939)
1 parente76d58f commita123900

File tree

11 files changed

+292
-87
lines changed

11 files changed

+292
-87
lines changed

‎cli/parameterresolver.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -226,7 +226,7 @@ func (pr *ParameterResolver) resolveWithInput(resolved []codersdk.WorkspaceBuild
226226
ifp!=nil {
227227
continue
228228
}
229-
//Parameter has not been resolved yet, so CLI needs to determine if user should input it.
229+
//PreviewParameter has not been resolved yet, so CLI needs to determine if user should input it.
230230

231231
firstTimeUse:=pr.isFirstTimeUse(tvp.Name)
232232
promptParameterOption:=pr.isLastBuildParameterInvalidOption(tvp)

‎coderd/database/db2sdk/db2sdk.go

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
"time"
1313

1414
"github.com/google/uuid"
15+
"github.com/hashicorp/hcl/v2"
1516
"golang.org/x/xerrors"
1617
"tailscale.com/tailcfg"
1718

@@ -24,6 +25,7 @@ import (
2425
"github.com/coder/coder/v2/codersdk"
2526
"github.com/coder/coder/v2/provisionersdk/proto"
2627
"github.com/coder/coder/v2/tailnet"
28+
previewtypes"github.com/coder/preview/types"
2729
)
2830

2931
// List is a helper function to reduce boilerplate when converting slices of
@@ -764,3 +766,83 @@ func Chat(chat database.Chat) codersdk.Chat {
764766
funcChats(chats []database.Chat) []codersdk.Chat {
765767
returnList(chats,Chat)
766768
}
769+
770+
funcPreviewParameter(param previewtypes.Parameter) codersdk.PreviewParameter {
771+
return codersdk.PreviewParameter{
772+
PreviewParameterData: codersdk.PreviewParameterData{
773+
Name:param.Name,
774+
DisplayName:param.DisplayName,
775+
Description:param.Description,
776+
Type:codersdk.OptionType(param.Type),
777+
FormType:codersdk.ParameterFormType(param.FormType),
778+
Styling: codersdk.PreviewParameterStyling{
779+
Placeholder:param.Styling.Placeholder,
780+
Disabled:param.Styling.Disabled,
781+
Label:param.Styling.Label,
782+
},
783+
Mutable:param.Mutable,
784+
DefaultValue:PreviewHCLString(param.DefaultValue),
785+
Icon:param.Icon,
786+
Options:List(param.Options,PreviewParameterOption),
787+
Validations:List(param.Validations,PreviewParameterValidation),
788+
Required:param.Required,
789+
Order:param.Order,
790+
Ephemeral:param.Ephemeral,
791+
},
792+
Value:PreviewHCLString(param.Value),
793+
Diagnostics:PreviewDiagnostics(param.Diagnostics),
794+
}
795+
}
796+
797+
funcHCLDiagnostics(d hcl.Diagnostics) []codersdk.FriendlyDiagnostic {
798+
returnPreviewDiagnostics(previewtypes.Diagnostics(d))
799+
}
800+
801+
funcPreviewDiagnostics(d previewtypes.Diagnostics) []codersdk.FriendlyDiagnostic {
802+
f:=d.FriendlyDiagnostics()
803+
returnList(f,func(f previewtypes.FriendlyDiagnostic) codersdk.FriendlyDiagnostic {
804+
return codersdk.FriendlyDiagnostic{
805+
Severity:codersdk.DiagnosticSeverityString(f.Severity),
806+
Summary:f.Summary,
807+
Detail:f.Detail,
808+
Extra: codersdk.DiagnosticExtra{
809+
Code:f.Extra.Code,
810+
},
811+
}
812+
})
813+
}
814+
815+
funcPreviewHCLString(h previewtypes.HCLString) codersdk.NullHCLString {
816+
n:=h.NullHCLString()
817+
return codersdk.NullHCLString{
818+
Value:n.Value,
819+
Valid:n.Valid,
820+
}
821+
}
822+
823+
funcPreviewParameterOption(o*previewtypes.ParameterOption) codersdk.PreviewParameterOption {
824+
ifo==nil {
825+
// This should never be sent
826+
return codersdk.PreviewParameterOption{}
827+
}
828+
return codersdk.PreviewParameterOption{
829+
Name:o.Name,
830+
Description:o.Description,
831+
Value:PreviewHCLString(o.Value),
832+
Icon:o.Icon,
833+
}
834+
}
835+
836+
funcPreviewParameterValidation(v*previewtypes.ParameterValidation) codersdk.PreviewParameterValidation {
837+
ifv==nil {
838+
// This should never be sent
839+
return codersdk.PreviewParameterValidation{}
840+
}
841+
return codersdk.PreviewParameterValidation{
842+
Error:v.Error,
843+
Regex:v.Regex,
844+
Min:v.Min,
845+
Max:v.Max,
846+
Monotonic:v.Monotonic,
847+
}
848+
}

‎coderd/parameters.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313
"golang.org/x/xerrors"
1414

1515
"github.com/coder/coder/v2/coderd/database"
16+
"github.com/coder/coder/v2/coderd/database/db2sdk"
1617
"github.com/coder/coder/v2/coderd/database/dbauthz"
1718
"github.com/coder/coder/v2/coderd/files"
1819
"github.com/coder/coder/v2/coderd/httpapi"
@@ -286,10 +287,10 @@ func (api *API) handleParameterWebsocket(rw http.ResponseWriter, r *http.Request
286287
result,diagnostics:=render(ctx,map[string]string{})
287288
response:= codersdk.DynamicParametersResponse{
288289
ID:-1,// Always start with -1.
289-
Diagnostics:previewtypes.Diagnostics(diagnostics),
290+
Diagnostics:db2sdk.HCLDiagnostics(diagnostics),
290291
}
291292
ifresult!=nil {
292-
response.Parameters=result.Parameters
293+
response.Parameters=db2sdk.List(result.Parameters,db2sdk.PreviewParameter)
293294
}
294295
err=stream.Send(response)
295296
iferr!=nil {
@@ -314,10 +315,10 @@ func (api *API) handleParameterWebsocket(rw http.ResponseWriter, r *http.Request
314315
result,diagnostics:=render(ctx,update.Inputs)
315316
response:= codersdk.DynamicParametersResponse{
316317
ID:update.ID,
317-
Diagnostics:previewtypes.Diagnostics(diagnostics),
318+
Diagnostics:db2sdk.HCLDiagnostics(diagnostics),
318319
}
319320
ifresult!=nil {
320-
response.Parameters=result.Parameters
321+
response.Parameters=db2sdk.List(result.Parameters,db2sdk.PreviewParameter)
321322
}
322323
err=stream.Send(response)
323324
iferr!=nil {

‎coderd/parameters_test.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,8 @@ func TestDynamicParametersOwnerSSHPublicKey(t *testing.T) {
6868
require.Equal(t,-1,preview.ID)
6969
require.Empty(t,preview.Diagnostics)
7070
require.Equal(t,"public_key",preview.Parameters[0].Name)
71-
require.True(t,preview.Parameters[0].Value.Valid())
72-
require.Equal(t,sshKey.PublicKey,preview.Parameters[0].Value.Value.AsString())
71+
require.True(t,preview.Parameters[0].Value.Valid)
72+
require.Equal(t,sshKey.PublicKey,preview.Parameters[0].Value.Value)
7373
}
7474

7575
funcTestDynamicParametersWithTerraformValues(t*testing.T) {
@@ -103,8 +103,8 @@ func TestDynamicParametersWithTerraformValues(t *testing.T) {
103103

104104
require.Len(t,preview.Parameters,1)
105105
require.Equal(t,"jetbrains_ide",preview.Parameters[0].Name)
106-
require.True(t,preview.Parameters[0].Value.Valid())
107-
require.Equal(t,"CL",preview.Parameters[0].Value.AsString())
106+
require.True(t,preview.Parameters[0].Value.Valid)
107+
require.Equal(t,"CL",preview.Parameters[0].Value.Value)
108108
})
109109

110110
// OldProvisioners use the static parameters in the dynamic param flow
@@ -154,8 +154,8 @@ func TestDynamicParametersWithTerraformValues(t *testing.T) {
154154
require.Contains(t,preview.Diagnostics[0].Summary,"required metadata to support dynamic parameters")
155155
require.Len(t,preview.Parameters,1)
156156
require.Equal(t,"jetbrains_ide",preview.Parameters[0].Name)
157-
require.True(t,preview.Parameters[0].Value.Valid())
158-
require.Equal(t,defaultValue,preview.Parameters[0].Value.AsString())
157+
require.True(t,preview.Parameters[0].Value.Valid)
158+
require.Equal(t,defaultValue,preview.Parameters[0].Value.Value)
159159

160160
// Test some inputs
161161
for_,exp:=range []string{defaultValue,"GO","Invalid",defaultValue} {
@@ -182,8 +182,8 @@ func TestDynamicParametersWithTerraformValues(t *testing.T) {
182182
require.Len(t,preview.Parameters[0].Diagnostics,0)
183183
}
184184
require.Equal(t,"jetbrains_ide",preview.Parameters[0].Name)
185-
require.True(t,preview.Parameters[0].Value.Valid())
186-
require.Equal(t,exp,preview.Parameters[0].Value.AsString())
185+
require.True(t,preview.Parameters[0].Value.Valid)
186+
require.Equal(t,exp,preview.Parameters[0].Value.Value)
187187
}
188188
})
189189

‎codersdk/parameters.go

Lines changed: 111 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,121 @@ import (
77
"github.com/google/uuid"
88

99
"github.com/coder/coder/v2/codersdk/wsjson"
10-
previewtypes"github.com/coder/preview/types"
1110
"github.com/coder/websocket"
1211
)
1312

14-
// FriendlyDiagnostic is included to guarantee it is generated in the output
15-
// types. This is used as the type override for `previewtypes.Diagnostic`.
16-
typeFriendlyDiagnostic= previewtypes.FriendlyDiagnostic
13+
typeParameterFormTypestring
1714

18-
// NullHCLString is included to guarantee it is generated in the output
19-
// types. This is used as the type override for `previewtypes.HCLString`.
20-
typeNullHCLString= previewtypes.NullHCLString
15+
const (
16+
ParameterFormTypeDefaultParameterFormType=""
17+
ParameterFormTypeRadioParameterFormType="radio"
18+
ParameterFormTypeSliderParameterFormType="slider"
19+
ParameterFormTypeInputParameterFormType="input"
20+
ParameterFormTypeDropdownParameterFormType="dropdown"
21+
ParameterFormTypeCheckboxParameterFormType="checkbox"
22+
ParameterFormTypeSwitchParameterFormType="switch"
23+
ParameterFormTypeMultiSelectParameterFormType="multi-select"
24+
ParameterFormTypeTagSelectParameterFormType="tag-select"
25+
ParameterFormTypeTextAreaParameterFormType="textarea"
26+
ParameterFormTypeErrorParameterFormType="error"
27+
)
28+
29+
typeOptionTypestring
30+
31+
const (
32+
OptionTypeStringOptionType="string"
33+
OptionTypeNumberOptionType="number"
34+
OptionTypeBooleanOptionType="bool"
35+
OptionTypeListStringOptionType="list(string)"
36+
)
37+
38+
typeDiagnosticSeverityStringstring
39+
40+
const (
41+
DiagnosticSeverityErrorDiagnosticSeverityString="error"
42+
DiagnosticSeverityWarningDiagnosticSeverityString="warning"
43+
)
44+
45+
// FriendlyDiagnostic == previewtypes.FriendlyDiagnostic
46+
// Copied to avoid import deps
47+
typeFriendlyDiagnosticstruct {
48+
SeverityDiagnosticSeverityString`json:"severity"`
49+
Summarystring`json:"summary"`
50+
Detailstring`json:"detail"`
51+
52+
ExtraDiagnosticExtra`json:"extra"`
53+
}
54+
55+
typeDiagnosticExtrastruct {
56+
Codestring`json:"code"`
57+
}
58+
59+
// NullHCLString == `previewtypes.NullHCLString`.
60+
typeNullHCLStringstruct {
61+
Valuestring`json:"value"`
62+
Validbool`json:"valid"`
63+
}
64+
65+
typePreviewParameterstruct {
66+
PreviewParameterData
67+
ValueNullHCLString`json:"value"`
68+
Diagnostics []FriendlyDiagnostic`json:"diagnostics"`
69+
}
70+
71+
typePreviewParameterDatastruct {
72+
Namestring`json:"name"`
73+
DisplayNamestring`json:"display_name"`
74+
Descriptionstring`json:"description"`
75+
TypeOptionType`json:"type"`
76+
FormTypeParameterFormType`json:"form_type"`
77+
StylingPreviewParameterStyling`json:"styling"`
78+
Mutablebool`json:"mutable"`
79+
DefaultValueNullHCLString`json:"default_value"`
80+
Iconstring`json:"icon"`
81+
Options []PreviewParameterOption`json:"options"`
82+
Validations []PreviewParameterValidation`json:"validations"`
83+
Requiredbool`json:"required"`
84+
// legacy_variable_name was removed (= 14)
85+
Orderint64`json:"order"`
86+
Ephemeralbool`json:"ephemeral"`
87+
}
88+
89+
typePreviewParameterStylingstruct {
90+
Placeholder*string`json:"placeholder,omitempty"`
91+
Disabled*bool`json:"disabled,omitempty"`
92+
Label*string`json:"label,omitempty"`
93+
}
94+
95+
typePreviewParameterOptionstruct {
96+
Namestring`json:"name"`
97+
Descriptionstring`json:"description"`
98+
ValueNullHCLString`json:"value"`
99+
Iconstring`json:"icon"`
100+
}
101+
102+
typePreviewParameterValidationstruct {
103+
Errorstring`json:"validation_error"`
104+
105+
// All validation attributes are optional.
106+
Regex*string`json:"validation_regex"`
107+
Min*int64`json:"validation_min"`
108+
Max*int64`json:"validation_max"`
109+
Monotonic*string`json:"validation_monotonic"`
110+
}
111+
112+
typeDynamicParametersRequeststruct {
113+
// ID identifies the request. The response contains the same
114+
// ID so that the client can match it to the request.
115+
IDint`json:"id"`
116+
Inputsmap[string]string`json:"inputs"`
117+
}
118+
119+
typeDynamicParametersResponsestruct {
120+
IDint`json:"id"`
121+
Diagnostics []FriendlyDiagnostic`json:"diagnostics"`
122+
Parameters []PreviewParameter`json:"parameters"`
123+
// TODO: Workspace tags
124+
}
21125

22126
func (c*Client)TemplateVersionDynamicParameters(ctx context.Context,userID,version uuid.UUID) (*wsjson.Stream[DynamicParametersResponse,DynamicParametersRequest],error) {
23127
conn,err:=c.Dial(ctx,fmt.Sprintf("/api/v2/users/%s/templateversions/%s/parameters",userID,version),nil)

‎codersdk/templateversions.go

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@ import (
99
"time"
1010

1111
"github.com/google/uuid"
12-
13-
previewtypes"github.com/coder/preview/types"
1412
)
1513

1614
typeTemplateVersionWarningstring
@@ -125,20 +123,6 @@ func (c *Client) CancelTemplateVersion(ctx context.Context, version uuid.UUID) e
125123
returnnil
126124
}
127125

128-
typeDynamicParametersRequeststruct {
129-
// ID identifies the request. The response contains the same
130-
// ID so that the client can match it to the request.
131-
IDint`json:"id"`
132-
Inputsmap[string]string`json:"inputs"`
133-
}
134-
135-
typeDynamicParametersResponsestruct {
136-
IDint`json:"id"`
137-
Diagnostics previewtypes.Diagnostics`json:"diagnostics"`
138-
Parameters []previewtypes.Parameter`json:"parameters"`
139-
// TODO: Workspace tags
140-
}
141-
142126
// TemplateVersionParameters returns parameters a template version exposes.
143127
func (c*Client)TemplateVersionRichParameters(ctx context.Context,version uuid.UUID) ([]TemplateVersionParameter,error) {
144128
res,err:=c.Request(ctx,http.MethodGet,fmt.Sprintf("/api/v2/templateversions/%s/rich-parameters",version),nil)

‎enterprise/coderd/parameters_test.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,8 @@ func TestDynamicParametersOwnerGroups(t *testing.T) {
7070
require.Equal(t,-1,preview.ID)
7171
require.Empty(t,preview.Diagnostics)
7272
require.Equal(t,"group",preview.Parameters[0].Name)
73-
require.True(t,preview.Parameters[0].Value.Valid())
74-
require.Equal(t,database.EveryoneGroup,preview.Parameters[0].Value.Value.AsString())
73+
require.True(t,preview.Parameters[0].Value.Valid)
74+
require.Equal(t,database.EveryoneGroup,preview.Parameters[0].Value.Value)
7575

7676
// Send a new value, and see it reflected
7777
err=stream.Send(codersdk.DynamicParametersRequest{
@@ -83,8 +83,8 @@ func TestDynamicParametersOwnerGroups(t *testing.T) {
8383
require.Equal(t,1,preview.ID)
8484
require.Empty(t,preview.Diagnostics)
8585
require.Equal(t,"group",preview.Parameters[0].Name)
86-
require.True(t,preview.Parameters[0].Value.Valid())
87-
require.Equal(t,group.Name,preview.Parameters[0].Value.Value.AsString())
86+
require.True(t,preview.Parameters[0].Value.Valid)
87+
require.Equal(t,group.Name,preview.Parameters[0].Value.Value)
8888

8989
// Back to default
9090
err=stream.Send(codersdk.DynamicParametersRequest{
@@ -96,6 +96,6 @@ func TestDynamicParametersOwnerGroups(t *testing.T) {
9696
require.Equal(t,3,preview.ID)
9797
require.Empty(t,preview.Diagnostics)
9898
require.Equal(t,"group",preview.Parameters[0].Name)
99-
require.True(t,preview.Parameters[0].Value.Valid())
100-
require.Equal(t,database.EveryoneGroup,preview.Parameters[0].Value.Value.AsString())
99+
require.True(t,preview.Parameters[0].Value.Valid)
100+
require.Equal(t,database.EveryoneGroup,preview.Parameters[0].Value.Value)
101101
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp