49 lines
1.0 KiB
Go
49 lines
1.0 KiB
Go
package generator
|
|
|
|
import (
|
|
"errors"
|
|
"log"
|
|
"os"
|
|
"text/template"
|
|
|
|
"git.vvoid.camp/cisgo/pkg/config"
|
|
)
|
|
|
|
type Generator struct {
|
|
Config config.Config
|
|
Template *template.Template
|
|
}
|
|
|
|
func NewGenerator(config config.Config, template *template.Template) *Generator {
|
|
return &Generator{
|
|
Config: config,
|
|
Template: template,
|
|
}
|
|
}
|
|
|
|
func (g *Generator) generateAP(ap config.AccessPoint, outputdir string) error {
|
|
f, err := os.Create(outputdir + "/" + ap.Name + ".txt")
|
|
if err != nil {
|
|
return errors.New("Could not create file: " + err.Error())
|
|
}
|
|
defer f.Close()
|
|
err = g.Template.Execute(f, ap)
|
|
if err != nil {
|
|
return errors.New("Could not execute template: " + err.Error())
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func (g *Generator) Generate(outputdir string) error {
|
|
|
|
for _, ap := range g.Config.AccessPoints {
|
|
log.Println("Generating AP: " + ap.Name)
|
|
err := g.generateAP(ap, outputdir)
|
|
if err != nil {
|
|
return errors.New("Error generating AP " + ap.Name + ": " + err.Error())
|
|
}
|
|
}
|
|
return nil
|
|
}
|