54 lines
938 B
Go
54 lines
938 B
Go
|
|
package mkflex
|
||
|
|
|
||
|
|
import (
|
||
|
|
"context"
|
||
|
|
"os"
|
||
|
|
|
||
|
|
conutils "codeberg.org/danjones000/utils/convids"
|
||
|
|
mkutils "codeberg.org/danjones000/utils/mkflex"
|
||
|
|
"gopkg.in/yaml.v3"
|
||
|
|
)
|
||
|
|
|
||
|
|
func NewApp(ctx context.Context, name string, args []string, dataPath, templatePath, outPath string) (*App, error) {
|
||
|
|
var err error
|
||
|
|
a := App{
|
||
|
|
Name: name,
|
||
|
|
Path: outPath,
|
||
|
|
}
|
||
|
|
|
||
|
|
a.Data, err = conutils.NewData(dataPath)
|
||
|
|
if err != nil {
|
||
|
|
return nil, err
|
||
|
|
}
|
||
|
|
|
||
|
|
a.Config, err = mkutils.NewConfig(templatePath)
|
||
|
|
if err != nil {
|
||
|
|
return nil, err
|
||
|
|
}
|
||
|
|
|
||
|
|
return &a, nil
|
||
|
|
}
|
||
|
|
|
||
|
|
type App struct {
|
||
|
|
Name string
|
||
|
|
Data *conutils.Data
|
||
|
|
Path string
|
||
|
|
Config *mkutils.Config
|
||
|
|
}
|
||
|
|
|
||
|
|
func (a *App) Run(ctx context.Context) error {
|
||
|
|
out, err := os.Create(a.Path)
|
||
|
|
if err != nil {
|
||
|
|
return err
|
||
|
|
}
|
||
|
|
enc := yaml.NewEncoder(out)
|
||
|
|
enc.SetIndent(2)
|
||
|
|
|
||
|
|
if err := mkutils.AddShows(a.Config, a.Data); err != nil {
|
||
|
|
return err
|
||
|
|
}
|
||
|
|
delete(a.Config.Templates, "x-aliases")
|
||
|
|
|
||
|
|
return enc.Encode(a.Config)
|
||
|
|
}
|