mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
chore: set wsbuilder to use preview parameters (#18474)
Use richer `previewtypes.Parameter` for `wsbuilder`. This is a pre-requirement to adding dynamic parameter validation. The richer type contains more information than the `db` parameter, so the conversion is lossless.
This commit is contained in:
@@ -21,6 +21,7 @@ import (
|
||||
"github.com/coder/coder/v2/coderd/rbac"
|
||||
"github.com/coder/coder/v2/coderd/rbac/policy"
|
||||
"github.com/coder/coder/v2/coderd/render"
|
||||
"github.com/coder/coder/v2/coderd/util/ptr"
|
||||
"github.com/coder/coder/v2/coderd/workspaceapps/appurl"
|
||||
"github.com/coder/coder/v2/codersdk"
|
||||
"github.com/coder/coder/v2/provisionersdk/proto"
|
||||
@@ -96,6 +97,49 @@ func TemplateVersionParameters(params []database.TemplateVersionParameter) ([]co
|
||||
return out, nil
|
||||
}
|
||||
|
||||
func TemplateVersionParameterFromPreview(param previewtypes.Parameter) (codersdk.TemplateVersionParameter, error) {
|
||||
descriptionPlaintext, err := render.PlaintextFromMarkdown(param.Description)
|
||||
if err != nil {
|
||||
return codersdk.TemplateVersionParameter{}, err
|
||||
}
|
||||
|
||||
sdkParam := codersdk.TemplateVersionParameter{
|
||||
Name: param.Name,
|
||||
DisplayName: param.DisplayName,
|
||||
Description: param.Description,
|
||||
DescriptionPlaintext: descriptionPlaintext,
|
||||
Type: string(param.Type),
|
||||
FormType: string(param.FormType),
|
||||
Mutable: param.Mutable,
|
||||
DefaultValue: param.DefaultValue.AsString(),
|
||||
Icon: param.Icon,
|
||||
Required: param.Required,
|
||||
Ephemeral: param.Ephemeral,
|
||||
Options: List(param.Options, TemplateVersionParameterOptionFromPreview),
|
||||
// Validation set after
|
||||
}
|
||||
if len(param.Validations) > 0 {
|
||||
validation := param.Validations[0]
|
||||
sdkParam.ValidationError = validation.Error
|
||||
if validation.Monotonic != nil {
|
||||
sdkParam.ValidationMonotonic = codersdk.ValidationMonotonicOrder(*validation.Monotonic)
|
||||
}
|
||||
if validation.Regex != nil {
|
||||
sdkParam.ValidationRegex = *validation.Regex
|
||||
}
|
||||
if validation.Min != nil {
|
||||
//nolint:gosec // No other choice
|
||||
sdkParam.ValidationMin = ptr.Ref(int32(*validation.Min))
|
||||
}
|
||||
if validation.Max != nil {
|
||||
//nolint:gosec // No other choice
|
||||
sdkParam.ValidationMax = ptr.Ref(int32(*validation.Max))
|
||||
}
|
||||
}
|
||||
|
||||
return sdkParam, nil
|
||||
}
|
||||
|
||||
func TemplateVersionParameter(param database.TemplateVersionParameter) (codersdk.TemplateVersionParameter, error) {
|
||||
options, err := templateVersionParameterOptions(param.Options)
|
||||
if err != nil {
|
||||
@@ -299,6 +343,15 @@ func templateVersionParameterOptions(rawOptions json.RawMessage) ([]codersdk.Tem
|
||||
return options, nil
|
||||
}
|
||||
|
||||
func TemplateVersionParameterOptionFromPreview(option *previewtypes.ParameterOption) codersdk.TemplateVersionParameterOption {
|
||||
return codersdk.TemplateVersionParameterOption{
|
||||
Name: option.Name,
|
||||
Description: option.Description,
|
||||
Value: option.Value.AsString(),
|
||||
Icon: option.Icon,
|
||||
}
|
||||
}
|
||||
|
||||
func OAuth2ProviderApp(accessURL *url.URL, dbApp database.OAuth2ProviderApp) codersdk.OAuth2ProviderApp {
|
||||
return codersdk.OAuth2ProviderApp{
|
||||
ID: dbApp.ID,
|
||||
|
||||
Reference in New Issue
Block a user