mirror of
https://github.com/NVIDIA/nvidia-container-toolkit
synced 2024-11-25 05:21:33 +00:00
Properly create output for config file
Signed-off-by: Evan Lezar <elezar@nvidia.com>
This commit is contained in:
parent
f86a5abeb6
commit
5bf2209fdb
@ -19,7 +19,6 @@ package config
|
|||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
@ -111,7 +110,19 @@ func run(c *cli.Context, opts *options) error {
|
|||||||
cfgToml.Set(key, value)
|
cfgToml.Set(key, value)
|
||||||
}
|
}
|
||||||
|
|
||||||
cfgToml.Save(os.Stdout)
|
if err := opts.EnsureOutputFolder(); err != nil {
|
||||||
|
return fmt.Errorf("failed to create output directory: %v", err)
|
||||||
|
}
|
||||||
|
output, err := opts.CreateOutput()
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("failed to open output file: %v", err)
|
||||||
|
}
|
||||||
|
defer output.Close()
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
cfgToml.Save(output)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -39,13 +39,23 @@ func (o Options) Validate() error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetOutput returns the effective output
|
||||||
|
func (o Options) GetOutput() string {
|
||||||
|
if o.InPlace {
|
||||||
|
return o.Config
|
||||||
|
}
|
||||||
|
|
||||||
|
return o.Output
|
||||||
|
}
|
||||||
|
|
||||||
// EnsureOutputFolder creates the output folder if it does not exist.
|
// EnsureOutputFolder creates the output folder if it does not exist.
|
||||||
// If the output folder is not specified (i.e. output to STDOUT), it is ignored.
|
// If the output folder is not specified (i.e. output to STDOUT), it is ignored.
|
||||||
func (o Options) EnsureOutputFolder() error {
|
func (o Options) EnsureOutputFolder() error {
|
||||||
if o.Output == "" {
|
output := o.GetOutput()
|
||||||
|
if output == "" {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
if dir := filepath.Dir(o.Output); dir != "" {
|
if dir := filepath.Dir(output); dir != "" {
|
||||||
return os.MkdirAll(dir, 0755)
|
return os.MkdirAll(dir, 0755)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
@ -53,11 +63,12 @@ func (o Options) EnsureOutputFolder() error {
|
|||||||
|
|
||||||
// CreateOutput creates the writer for the output.
|
// CreateOutput creates the writer for the output.
|
||||||
func (o Options) CreateOutput() (io.WriteCloser, error) {
|
func (o Options) CreateOutput() (io.WriteCloser, error) {
|
||||||
if o.Output != "" {
|
output := o.GetOutput()
|
||||||
return os.Create(o.Output)
|
if output == "" {
|
||||||
|
return nullCloser{os.Stdout}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
return nullCloser{os.Stdout}, nil
|
return os.Create(output)
|
||||||
}
|
}
|
||||||
|
|
||||||
// nullCloser is a writer that does nothing on Close.
|
// nullCloser is a writer that does nothing on Close.
|
||||||
|
Loading…
Reference in New Issue
Block a user