From f2e451e6680d3c178683c9dc8f2ddeb0dae5d7d6 Mon Sep 17 00:00:00 2001 From: Matthew Rich Date: Wed, 3 Apr 2024 11:47:55 -0700 Subject: [PATCH] add cli test --- cli_test.go | 20 ++++++++++++++++++++ cmd/cli/main.go | 34 ++++++++++++++++++++-------------- 2 files changed, 40 insertions(+), 14 deletions(-) create mode 100644 cli_test.go diff --git a/cli_test.go b/cli_test.go new file mode 100644 index 0000000..95de1b7 --- /dev/null +++ b/cli_test.go @@ -0,0 +1,20 @@ +// Copyright 2024 Matthew Rich . All rights reserved. + +package main + +import ( + "github.com/stretchr/testify/assert" + "os" + "os/exec" + "testing" + "errors" +) + +func TestCli(t *testing.T) { + if _, e := os.Stat("./decl"); errors.Is(e, os.ErrNotExist) { + t.Skip("cli not built") + } + yaml, cliErr := exec.Command("./decl", "-import-resource", "file://decl").Output() + assert.Nil(t, cliErr) + assert.Greater(t, len(yaml), 0) +} diff --git a/cmd/cli/main.go b/cmd/cli/main.go index f7759b0..2a3b5fa 100644 --- a/cmd/cli/main.go +++ b/cmd/cli/main.go @@ -5,14 +5,15 @@ import ( "os" "flag" "log" - "log/slog" -_ "fmt" + "log/slog" + "fmt" _ "gopkg.in/yaml.v3" "decl/internal/resource" ) func main() { + fmt.Print("debugging\n") var programLevel = new(slog.LevelVar) logger := slog.New(slog.NewTextHandler(os.Stderr, &slog.HandlerOptions{Level: programLevel})) slog.SetDefault(logger) @@ -22,6 +23,7 @@ func main() { programLevel.Set(slog.LevelError) } + fmt.Print("debugging: flags\n") file := flag.String("resource-file", "", "Resource file path") resourceUri := flag.String("import-resource", "", "Add an existing resource") @@ -30,31 +32,35 @@ func main() { var resourceFile *os.File var inputFileErr error - if *file != "" { - resourceFile,inputFileErr = os.Open(*file) - } else { + slog.Info("args", "resource-file", *file, "import-resource", *resourceUri) + if *file == "-" { if stdinInfo, stdinErr := os.Stdin.Stat(); stdinErr == nil { if (stdinInfo.Mode() & os.ModeCharDevice) == 0 { resourceFile = os.Stdin } } else { - return + inputFileErr = stdinErr } + } else if *file != "" { + resourceFile,inputFileErr = os.Open(*file) } if inputFileErr != nil { log.Fatal(inputFileErr) } - + d := resource.NewDocument() - if e := d.Load(resourceFile); e != nil { - log.Fatal(e) - } - if applyErr := d.Apply(); applyErr != nil { - log.Fatal(applyErr) - } - + slog.Info("loading resource document", "file", resourceFile) + if *file != "" { + if e := d.Load(resourceFile); e != nil { + log.Fatal(e) + } + if applyErr := d.Apply(); applyErr != nil { + log.Fatal(applyErr) + } + } if *resourceUri != "" { + slog.Info("importing resource: %s\n", *resourceUri) d.AddResource(*resourceUri) }