feat(scum): add file config workbench
This commit is contained in:
@@ -183,6 +183,38 @@ type GamePluginPageBody struct {
|
||||
BridgeActions []string `json:"bridgeActions,omitempty"`
|
||||
}
|
||||
|
||||
type PluginLogicalDirectoryBody struct {
|
||||
Key string `json:"key"`
|
||||
Label string `json:"label"`
|
||||
Scope string `json:"scope"`
|
||||
}
|
||||
type PluginLogicalFileBody struct {
|
||||
Key string `json:"key"`
|
||||
DirectoryKey string `json:"directoryKey"`
|
||||
Label string `json:"label"`
|
||||
Kind string `json:"kind"`
|
||||
StreamKey string `json:"streamKey,omitempty"`
|
||||
Editable bool `json:"editable,omitempty"`
|
||||
}
|
||||
type PluginConfigFieldBody struct {
|
||||
Key string `json:"key"`
|
||||
FileKey string `json:"fileKey"`
|
||||
ConfigKey string `json:"configKey"`
|
||||
Label string `json:"label"`
|
||||
Description string `json:"description"`
|
||||
Control string `json:"control"`
|
||||
Minimum int `json:"minimum,omitempty"`
|
||||
Maximum int `json:"maximum,omitempty"`
|
||||
DefaultValue string `json:"defaultValue,omitempty"`
|
||||
RestartImpact string `json:"restartImpact"`
|
||||
}
|
||||
type PluginFileWorkspaceBody struct {
|
||||
DefaultDirectoryKey string `json:"defaultDirectoryKey"`
|
||||
Directories []PluginLogicalDirectoryBody `json:"directories"`
|
||||
Files []PluginLogicalFileBody `json:"files"`
|
||||
ConfigFields []PluginConfigFieldBody `json:"configFields"`
|
||||
}
|
||||
|
||||
type GamePluginBridgeBody struct {
|
||||
Actions []string `json:"actions"`
|
||||
}
|
||||
@@ -303,6 +335,7 @@ type GamePluginManifestBody struct {
|
||||
Permissions []string `json:"permissions"`
|
||||
Actions PluginLifecycleActionsBody `json:"actions"`
|
||||
Pages []GamePluginPageBody `json:"pages,omitempty"`
|
||||
FileWorkspace PluginFileWorkspaceBody `json:"fileWorkspace,omitempty"`
|
||||
AI GamePluginManifestAIBody `json:"ai,omitempty"`
|
||||
ProductionLifecycle GamePluginProductionLifecycleBody `json:"productionLifecycle"`
|
||||
RemoteAccess GamePluginRemoteAccessBody `json:"remoteAccess,omitempty"`
|
||||
@@ -332,6 +365,7 @@ type GamePluginCreateRequest struct {
|
||||
LifecycleActions PluginLifecycleActionsBody `json:"lifecycleActions,omitempty"`
|
||||
BridgeActions []string `json:"bridgeActions,omitempty"`
|
||||
Pages []GamePluginPageBody `json:"pages,omitempty"`
|
||||
FileWorkspace PluginFileWorkspaceBody `json:"fileWorkspace,omitempty"`
|
||||
Tags []string `json:"tags,omitempty"`
|
||||
AIPurposes []string `json:"aiPurposes,omitempty"`
|
||||
ProductionLifecycle GamePluginProductionLifecycleBody `json:"productionLifecycle,omitempty"`
|
||||
@@ -358,6 +392,7 @@ type GamePluginResponse struct {
|
||||
LifecycleActions PluginLifecycleActionsBody `json:"lifecycleActions"`
|
||||
BridgeActions []string `json:"bridgeActions"`
|
||||
Pages []GamePluginPageBody `json:"pages"`
|
||||
FileWorkspace PluginFileWorkspaceBody `json:"fileWorkspace,omitempty"`
|
||||
Tags []string `json:"tags"`
|
||||
AIPurposes []string `json:"aiPurposes"`
|
||||
ProductionLifecycle GamePluginProductionLifecycleBody `json:"productionLifecycle"`
|
||||
@@ -933,6 +968,7 @@ func (request GamePluginManifestRegistrationRequest) ToDomain() domain.GamePlugi
|
||||
Permissions: domain.CopyStringSlice(request.Manifest.Permissions),
|
||||
Actions: request.Manifest.Actions.ToDomain(),
|
||||
Pages: pagesToDomain(request.Manifest.Pages),
|
||||
FileWorkspace: fileWorkspaceToDomain(request.Manifest.FileWorkspace),
|
||||
AI: request.Manifest.AI.ToDomain(),
|
||||
ProductionLifecycle: request.Manifest.ProductionLifecycle.ToDomain(),
|
||||
RemoteAccess: request.Manifest.RemoteAccess.ToDomain(),
|
||||
@@ -942,6 +978,34 @@ func (request GamePluginManifestRegistrationRequest) ToDomain() domain.GamePlugi
|
||||
}
|
||||
}
|
||||
|
||||
func fileWorkspaceToDomain(body PluginFileWorkspaceBody) domain.PluginFileWorkspace {
|
||||
workspace := domain.PluginFileWorkspace{DefaultDirectoryKey: body.DefaultDirectoryKey}
|
||||
for _, item := range body.Directories {
|
||||
workspace.Directories = append(workspace.Directories, domain.PluginLogicalDirectory{Key: item.Key, Label: item.Label, Scope: item.Scope})
|
||||
}
|
||||
for _, item := range body.Files {
|
||||
workspace.Files = append(workspace.Files, domain.PluginLogicalFile{Key: item.Key, DirectoryKey: item.DirectoryKey, Label: item.Label, Kind: item.Kind, StreamKey: item.StreamKey, Editable: item.Editable})
|
||||
}
|
||||
for _, item := range body.ConfigFields {
|
||||
workspace.ConfigFields = append(workspace.ConfigFields, domain.PluginConfigField{Key: item.Key, FileKey: item.FileKey, ConfigKey: item.ConfigKey, Label: item.Label, Description: item.Description, Control: item.Control, Minimum: item.Minimum, Maximum: item.Maximum, DefaultValue: item.DefaultValue, RestartImpact: item.RestartImpact})
|
||||
}
|
||||
return workspace
|
||||
}
|
||||
func fileWorkspaceFromDomain(workspace domain.PluginFileWorkspace) PluginFileWorkspaceBody {
|
||||
workspace = domain.CopyPluginFileWorkspace(workspace)
|
||||
body := PluginFileWorkspaceBody{DefaultDirectoryKey: workspace.DefaultDirectoryKey}
|
||||
for _, item := range workspace.Directories {
|
||||
body.Directories = append(body.Directories, PluginLogicalDirectoryBody{Key: item.Key, Label: item.Label, Scope: item.Scope})
|
||||
}
|
||||
for _, item := range workspace.Files {
|
||||
body.Files = append(body.Files, PluginLogicalFileBody{Key: item.Key, DirectoryKey: item.DirectoryKey, Label: item.Label, Kind: item.Kind, StreamKey: item.StreamKey, Editable: item.Editable})
|
||||
}
|
||||
for _, item := range workspace.ConfigFields {
|
||||
body.ConfigFields = append(body.ConfigFields, PluginConfigFieldBody{Key: item.Key, FileKey: item.FileKey, ConfigKey: item.ConfigKey, Label: item.Label, Description: item.Description, Control: item.Control, Minimum: item.Minimum, Maximum: item.Maximum, DefaultValue: item.DefaultValue, RestartImpact: item.RestartImpact})
|
||||
}
|
||||
return body
|
||||
}
|
||||
|
||||
func (bridge GamePluginBridgeBody) ToDomain() domain.GamePluginBridge {
|
||||
return domain.GamePluginBridge{Actions: domain.CopyStringSlice(bridge.Actions)}
|
||||
}
|
||||
@@ -1048,6 +1112,7 @@ func (request GamePluginCreateRequest) ToDomain() domain.GamePlugin {
|
||||
LifecycleActions: request.LifecycleActions.ToDomain(),
|
||||
BridgeActions: domain.CopyStringSlice(request.BridgeActions),
|
||||
Pages: pagesToDomain(request.Pages),
|
||||
FileWorkspace: fileWorkspaceToDomain(request.FileWorkspace),
|
||||
Tags: domain.CopyStringSlice(request.Tags),
|
||||
AIPurposes: domain.CopyStringSlice(request.AIPurposes),
|
||||
ProductionLifecycle: request.ProductionLifecycle.ToDomain(),
|
||||
@@ -1295,6 +1360,7 @@ func GamePluginFromDomain(plugin domain.GamePlugin) GamePluginResponse {
|
||||
LifecycleActions: lifecycleActionsFromDomain(plugin.LifecycleActions),
|
||||
BridgeActions: plugin.BridgeActions,
|
||||
Pages: pagesFromDomain(plugin.Pages),
|
||||
FileWorkspace: fileWorkspaceFromDomain(plugin.FileWorkspace),
|
||||
Tags: plugin.Tags,
|
||||
AIPurposes: plugin.AIPurposes,
|
||||
ProductionLifecycle: productionLifecycleFromDomain(plugin.ProductionLifecycle),
|
||||
|
||||
Reference in New Issue
Block a user