From 221781bd0b194b213eea4fcf2393ddacf453a5bb Mon Sep 17 00:00:00 2001 From: Evan Lezar Date: Tue, 28 Feb 2023 14:20:11 +0200 Subject: [PATCH] Use full path for output spec Signed-off-by: Evan Lezar --- cmd/nvidia-ctk/cdi/generate/generate.go | 23 ++++++++--------------- 1 file changed, 8 insertions(+), 15 deletions(-) diff --git a/cmd/nvidia-ctk/cdi/generate/generate.go b/cmd/nvidia-ctk/cdi/generate/generate.go index 4e930e05..008145ad 100644 --- a/cmd/nvidia-ctk/cdi/generate/generate.go +++ b/cmd/nvidia-ctk/cdi/generate/generate.go @@ -167,11 +167,15 @@ func (m command) run(c *cli.Context, cfg *config) error { return nil } - err = createParentDirsIfRequired(cfg.output) - if err != nil { - return fmt.Errorf("failed to create parent folders for output file: %v", err) + path := cfg.output + if filepath.Clean(filepath.Dir(path)) == "." { + pwd, err := os.Getwd() + if err != nil { + return fmt.Errorf("failed to get current working directory: %v", err) + } + path = filepath.Join(pwd, path) } - return spec.Save(cfg.output) + return spec.Save(path) } func formatFromFilename(filename string) string { @@ -270,14 +274,3 @@ func MergeDeviceSpecs(deviceSpecs []specs.Device, mergedDeviceName string) (spec } return merged, nil } - -// createParentDirsIfRequired creates the parent folders of the specified path if requried. -// Note that MkdirAll does not specifically check whether the specified path is non-empty and raises an error if it is. -// The path will be empty if filename in the current folder is specified, for example -func createParentDirsIfRequired(filename string) error { - dir := filepath.Dir(filename) - if dir == "" { - return nil - } - return os.MkdirAll(dir, 0755) -}