mirror of
https://github.com/LukeHagar/sailpoint-cli.git
synced 2025-12-06 04:21:15 +00:00
73 lines
1.3 KiB
Go
73 lines
1.3 KiB
Go
package util
|
|
|
|
import (
|
|
"encoding/json"
|
|
"regexp"
|
|
"strings"
|
|
|
|
"github.com/charmbracelet/glamour"
|
|
"github.com/charmbracelet/log"
|
|
"github.com/mrz1836/go-sanitize"
|
|
)
|
|
|
|
var renderer *glamour.TermRenderer
|
|
|
|
func init() {
|
|
var err error
|
|
renderer, err = glamour.NewTermRenderer(
|
|
// detect background color and pick either the default dark or light theme
|
|
glamour.WithAutoStyle(),
|
|
)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
}
|
|
|
|
func PrettyPrint(v interface{}) string {
|
|
b, err := json.MarshalIndent(v, "", " ")
|
|
if err != nil {
|
|
log.Error("Error marshalling interface", "error", err)
|
|
}
|
|
return (string(b))
|
|
}
|
|
|
|
func SanitizeFileName(fileName string) string {
|
|
return sanitize.PathName(fileName)
|
|
}
|
|
|
|
func RenderMarkdown(markdown string) string {
|
|
out, err := renderer.Render(markdown)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
return out
|
|
}
|
|
|
|
type Help struct {
|
|
Long string
|
|
Example string
|
|
}
|
|
|
|
func ParseHelp(help string) Help {
|
|
helpParser, err := regexp.Compile(`==([A-Za-z]+)==([\s\S]*?)====`)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
matches := helpParser.FindAllStringSubmatch(help, -1)
|
|
|
|
var helpObj Help
|
|
for _, set := range matches {
|
|
switch strings.ToLower(set[1]) {
|
|
case "long":
|
|
helpObj.Long = RenderMarkdown(set[2])
|
|
case "example":
|
|
helpObj.Example = RenderMarkdown(set[2])
|
|
}
|
|
}
|
|
|
|
return helpObj
|
|
}
|