Add support for storage command and crawler output

Partially addresses issue #3 by adding a simple `magellan list devices` command to list storage devices. To close the issue, this PR still requires including storage device information in the `crawler`'s output.

Reviewed-on: towk/magellan-ng#5
This commit is contained in:
David Allen 2025-05-03 16:58:17 -06:00
parent d236649b05
commit b2111ddcb2
Signed by: towk
GPG key ID: 0430CDBE22619155
20 changed files with 450 additions and 18 deletions

View file

@ -1,6 +1,8 @@
package util
import "fmt"
import (
"fmt"
)
// FormatErrorList() is a wrapper function that unifies error list formatting
// and makes printing error lists consistent.

25
internal/util/print.go Normal file
View file

@ -0,0 +1,25 @@
package util
import (
"encoding/json"
"fmt"
"github.com/rs/zerolog/log"
"gopkg.in/yaml.v2"
)
func PrintJSON(data any) {
b, err := json.MarshalIndent(data, "", " ")
if err != nil {
log.Error().Err(err).Msgf("failed to marshal scanned results to JSON")
}
fmt.Println(string(b))
}
func PrintYAML(data any) {
b, err := yaml.Marshal(data)
if err != nil {
log.Error().Err(err).Msgf("failed to marshal scanned results to JSON")
}
fmt.Printf("%s\n", string(b))
}

10
internal/util/strings.go Normal file
View file

@ -0,0 +1,10 @@
package util
import "strings"
func TidyJSON(s string) string {
s = strings.ReplaceAll(s, "\n", "")
s = strings.ReplaceAll(s, "\t", "")
s = strings.ReplaceAll(s, " ", "")
return strings.ReplaceAll(s, "\"", "'")
}