Fix empty file when using compose config in case of smaller source files

"docker compose config --output out.yml" resulted an empty file
when the generated output was smaller than 4097 bytes.
bufio.Writer doesn't seem necessary since only one write operation will happen.
This way there is no need for a new bufio.Writer that could be flushed.

Thanks for @thaJeztah for the idea of using os.WriteFile

Issue https://github.com/docker/compose/issues/10121

Signed-off-by: Ákos Takács <takacs.akos@it-sziget.hu>
This commit is contained in:
Ákos Takács 2022-12-29 22:29:59 +01:00 committed by Nicolas De loof
parent 1d9657aee2
commit ffce33ec11

View File

@ -17,11 +17,9 @@
package compose
import (
"bufio"
"bytes"
"context"
"fmt"
"io"
"os"
"sort"
"strings"
@ -139,15 +137,10 @@ func runConvert(ctx context.Context, streams api.Streams, backend api.Service, o
return nil
}
var out io.Writer = streams.Out()
if opts.Output != "" && len(content) > 0 {
file, err := os.Create(opts.Output)
if err != nil {
return err
}
out = bufio.NewWriter(file)
return os.WriteFile(opts.Output, content, 0o666)
}
_, err = fmt.Fprint(out, string(content))
_, err = fmt.Fprint(streams.Out(), string(content))
return err
}