Fix rendering of streaming response (#876)

## Changes

The update to the Go SDK v0.23.0 in #772 included a change to make the
billable usage API return its streaming response. This still did not
make the command print out the CSV returned by the API, however. To do
so, we call `cmdio.RenderReader` in case the response is a byte stream.

Note: there is an opportunity to parse the CSV and return JSON if
requested, but that is out of scope for this PR (it is a rather big
customization of the command).

Fixes #574.

## Tests

Manually confirmed that `databricks account billable-usage download` now
returns CSV.
This commit is contained in:
Pieter Noordhuis 2023-10-17 12:07:55 +02:00 committed by GitHub
parent da4397276b
commit 4bf32cb666
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 4 deletions

View File

@ -269,8 +269,13 @@ func init() {
return err
}
{{ if .Response -}}
return cmdio.Render(ctx, response)
{{- if .IsResponseByteStream -}}
defer response.{{.ResponseBodyField.PascalName}}.Close()
return cmdio.RenderReader(ctx, response.{{.ResponseBodyField.PascalName}})
{{- else -}}
return cmdio.Render(ctx, response)
{{- end -}}
{{ else -}}
return nil
{{- end -}}
{{- end -}}

View File

@ -85,7 +85,8 @@ func newDownload() *cobra.Command {
if err != nil {
return err
}
return cmdio.Render(ctx, response)
defer response.Contents.Close()
return cmdio.RenderReader(ctx, response.Contents)
}
// Disable completions since they are not applicable.