60 lines
1.2 KiB
Go
60 lines
1.2 KiB
Go
package fetcher
|
||
import (
|
||
"log"
|
||
"project.hechon.fr/internal/config"
|
||
"project.hechon.fr/internal/models"
|
||
"gopkg.in/yaml.v3"
|
||
"os"
|
||
"path"
|
||
"strconv"
|
||
)
|
||
|
||
|
||
func SaveChapter(cfg config.Cfg, chapter *config.Chapter) (error){
|
||
var chapterYaml models.Yaml
|
||
|
||
for i, verse:= range chapter.Verses{
|
||
strophe := models.Strophe{}
|
||
parts := SplitInPart(verse, cfg.ProperName)
|
||
for _, part := range parts{
|
||
line := models.Line{
|
||
Verse: i+1,
|
||
Text: part,
|
||
Who: "",
|
||
To: "",
|
||
Of: "",
|
||
}
|
||
|
||
strophe.Lines = append(strophe.Lines, line)
|
||
}
|
||
chapterYaml.Strophes = append(chapterYaml.Strophes, strophe)
|
||
log.Printf("%v", parts)
|
||
}
|
||
|
||
yamlData, err := yaml.Marshal(chapterYaml)
|
||
if err != nil{
|
||
|
||
log.Printf("failed unpacking this yaml struct:%v", chapterYaml)
|
||
return err
|
||
}
|
||
|
||
fileName := path.Join(cfg.YamlPath, cfg.Book.Name + strconv.Itoa(chapter.Number) + ".yaml")
|
||
_,err = os.Stat(fileName)
|
||
if err == nil {
|
||
err = os.Remove(fileName)
|
||
if err != nil {
|
||
log.Printf("can’t remove %v: %v", fileName, err)
|
||
return err
|
||
}
|
||
}
|
||
|
||
err = os.WriteFile(fileName, yamlData, 0600)
|
||
if err != nil{
|
||
log.Printf("can’t write into %v", fileName)
|
||
return err
|
||
}
|
||
|
||
return nil
|
||
}
|
||
|