diff --git a/internal/command/workspace_output.go b/internal/command/workspace_output.go index 15486a6..2043dba 100644 --- a/internal/command/workspace_output.go +++ b/internal/command/workspace_output.go @@ -50,11 +50,13 @@ func (c *WorkspaceOutputCommand) Run(args []string) int { } workspaceOutputs := []*WorkspaceOutput{} + workspaceOutputsMapping := make(map[string]interface{}) for _, svo := range svoList.Items { workspaceOutputs = append(workspaceOutputs, &WorkspaceOutput{ Name: svo.Name, Value: svo.Value, }) + workspaceOutputsMapping[svo.Name] = svo.Value } c.addOutputWithOpts("outputs", workspaceOutputs, &outputOpts{ @@ -62,6 +64,11 @@ func (c *WorkspaceOutputCommand) Run(args []string) int { multiLine: true, platformOut: true, }) + c.addOutputWithOpts("mapping", workspaceOutputsMapping, &outputOpts{ + stdOut: true, + multiLine: true, + platformOut: true, + }) c.addOutput("status", string(Success)) c.writer.OutputResult(c.closeOutput()) return 0 diff --git a/internal/command/workspace_output_test.go b/internal/command/workspace_output_test.go index 35cb253..dd8bf96 100644 --- a/internal/command/workspace_output_test.go +++ b/internal/command/workspace_output_test.go @@ -103,8 +103,9 @@ func TestWorkspaceOutputListCommand_Output(t *testing.T) { stdout := ui.OutputWriter.String() var outputVal struct { - Outputs []WorkspaceOutput `json:"outputs"` - Status string `json:"status"` + Outputs []WorkspaceOutput `json:"outputs"` + Mapping map[string]interface{} `json:"mapping"` + Status string `json:"status"` } json.Unmarshal([]byte(stdout), &outputVal) @@ -115,6 +116,13 @@ func TestWorkspaceOutputListCommand_Output(t *testing.T) { t.Fatalf("expected %q but received %q", string(expectVal), string(actualVal)) } } + for _, o := range tc.svoList { + actualVal, _ := json.Marshal(outputVal.Mapping[o.Name]) + expectVal, _ := json.Marshal(o.Value) + if !strings.Contains(string(actualVal), string(expectVal)) { + t.Fatalf("expected %q but received %q", string(expectVal), string(actualVal)) + } + } }) } }