Files
greq/internal/storage/writer.go
T
Mester Gábor 2dd6519168 Initial commit
2026-03-19 07:12:03 +01:00

37 lines
832 B
Go

package storage
import (
"os"
"path/filepath"
"strings"
"gopkg.in/yaml.v3"
)
// SaveRequest writes rf to .greq/requests/<folder>/<slug>.yaml.
// folder may be empty (places the file directly in requests/).
func SaveRequest(rf RequestFile, folder string) (string, error) {
dir := filepath.Join(RootDir, "requests")
if folder != "" {
dir = filepath.Join(dir, folder)
}
if err := os.MkdirAll(dir, 0o755); err != nil {
return "", err
}
slug := strings.ToLower(strings.ReplaceAll(rf.Name, " ", "_"))
slug = strings.Map(func(r rune) rune {
if (r >= 'a' && r <= 'z') || (r >= '0' && r <= '9') || r == '_' || r == '-' {
return r
}
return '_'
}, slug)
path := filepath.Join(dir, slug+".yaml")
data, err := yaml.Marshal(&rf)
if err != nil {
return "", err
}
return path, os.WriteFile(path, data, 0o644)
}