feat: add OpenIn option to coder_app (#15743)

This PR is the coder/coder part of [the open_in parameter
issue](https://github.com/coder/terraform-provider-coder/issues/297)
aiming to add a new optional parameter to choose how to open modules.

This PR is heavily linked [to this
PR](https://github.com/coder/terraform-provider-coder/pull/321).

ℹ️ For now, some integrations tests can not be pushed as it requires a
release on the terraform-provider repo.
This commit is contained in:
Vincent Vielle
2025-01-03 11:27:02 +01:00
committed by GitHub
parent 3f1795fd92
commit 08463c27d8
34 changed files with 1075 additions and 800 deletions

View File

@ -2151,6 +2151,67 @@ func AllWorkspaceAppHealthValues() []WorkspaceAppHealth {
}
}
type WorkspaceAppOpenIn string
const (
WorkspaceAppOpenInTab WorkspaceAppOpenIn = "tab"
WorkspaceAppOpenInWindow WorkspaceAppOpenIn = "window"
WorkspaceAppOpenInSlimWindow WorkspaceAppOpenIn = "slim-window"
)
func (e *WorkspaceAppOpenIn) Scan(src interface{}) error {
switch s := src.(type) {
case []byte:
*e = WorkspaceAppOpenIn(s)
case string:
*e = WorkspaceAppOpenIn(s)
default:
return fmt.Errorf("unsupported scan type for WorkspaceAppOpenIn: %T", src)
}
return nil
}
type NullWorkspaceAppOpenIn struct {
WorkspaceAppOpenIn WorkspaceAppOpenIn `json:"workspace_app_open_in"`
Valid bool `json:"valid"` // Valid is true if WorkspaceAppOpenIn is not NULL
}
// Scan implements the Scanner interface.
func (ns *NullWorkspaceAppOpenIn) Scan(value interface{}) error {
if value == nil {
ns.WorkspaceAppOpenIn, ns.Valid = "", false
return nil
}
ns.Valid = true
return ns.WorkspaceAppOpenIn.Scan(value)
}
// Value implements the driver Valuer interface.
func (ns NullWorkspaceAppOpenIn) Value() (driver.Value, error) {
if !ns.Valid {
return nil, nil
}
return string(ns.WorkspaceAppOpenIn), nil
}
func (e WorkspaceAppOpenIn) Valid() bool {
switch e {
case WorkspaceAppOpenInTab,
WorkspaceAppOpenInWindow,
WorkspaceAppOpenInSlimWindow:
return true
}
return false
}
func AllWorkspaceAppOpenInValues() []WorkspaceAppOpenIn {
return []WorkspaceAppOpenIn{
WorkspaceAppOpenInTab,
WorkspaceAppOpenInWindow,
WorkspaceAppOpenInSlimWindow,
}
}
type WorkspaceTransition string
const (
@ -3092,7 +3153,8 @@ type WorkspaceApp struct {
// Specifies the order in which to display agent app in user interfaces.
DisplayOrder int32 `db:"display_order" json:"display_order"`
// Determines if the app is not shown in user interfaces.
Hidden bool `db:"hidden" json:"hidden"`
Hidden bool `db:"hidden" json:"hidden"`
OpenIn WorkspaceAppOpenIn `db:"open_in" json:"open_in"`
}
// A record of workspace app usage statistics