package main
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
"io/ioutil"
|
|
"os"
|
|
"strings"
|
|
|
|
"github.com/Jeffail/gabs"
|
|
"github.com/fatih/color"
|
|
)
|
|
|
|
//dataEntry is the map used to create the array of maps, where the templatejson data is stored
|
|
type dataEntry map[string]string
|
|
|
|
func copyDirRaw(fromDir string, currentDir string, newDir string) {
|
|
filesList, _ := ioutil.ReadDir("./" + fromDir + "/" + currentDir)
|
|
fmt.Println(fromDir + "/" + currentDir)
|
|
c.Green(newDir + "/" + currentDir)
|
|
os.MkdirAll(newDir+"/"+currentDir, os.ModePerm)
|
|
for _, f := range filesList {
|
|
fileNameSplitted := strings.Split(f.Name(), ".")
|
|
if len(fileNameSplitted) > 1 {
|
|
//is a file
|
|
copyFileRaw(fromDir+"/"+currentDir, f.Name(), newDir+"/"+currentDir)
|
|
} else {
|
|
//is a directory
|
|
copyDirRaw(fromDir+"/"+currentDir, f.Name(), newDir+"/"+currentDir)
|
|
}
|
|
}
|
|
}
|
|
|
|
func copyFileRaw(fromDir string, fName string, newDir string) {
|
|
c.Yellow("copying raw " + fromDir + "/" + fName)
|
|
fileContent := readFile(fromDir + "/" + fName)
|
|
writeFile(newDir+"/"+fName, fileContent)
|
|
}
|
|
|
|
func readFile(path string) string {
|
|
dat, err := ioutil.ReadFile(path)
|
|
check(err)
|
|
return string(dat)
|
|
}
|
|
|
|
func getDataFromJson(path string) ([]dataEntry, *gabs.Container) {
|
|
var entries []dataEntry
|
|
file, err := ioutil.ReadFile(path)
|
|
check(err)
|
|
content := string(file)
|
|
var rawEntries []*json.RawMessage
|
|
json.Unmarshal([]byte(content), &rawEntries)
|
|
for i := 0; i < len(rawEntries); i++ {
|
|
rawEntryMarshaled, err := json.Marshal(rawEntries[i])
|
|
check(err)
|
|
var newDataEntry map[string]string
|
|
json.Unmarshal(rawEntryMarshaled, &newDataEntry)
|
|
entries = append(entries, newDataEntry)
|
|
}
|
|
|
|
jsonData := jsonGabs(path)
|
|
return entries, jsonData
|
|
}
|
|
|
|
func jsonGabs(path string) *gabs.Container {
|
|
file, err := ioutil.ReadFile(path)
|
|
check(err)
|
|
jsonParsed, err := gabs.ParseJSON(file)
|
|
img := "img"
|
|
fmt.Println(jsonParsed.S(img))
|
|
return jsonParsed
|
|
}
|
|
|
|
func writeFile(path string, newContent string) {
|
|
err := ioutil.WriteFile(path, []byte(newContent), 0644)
|
|
check(err)
|
|
|
|
color.Green(path + ":")
|
|
color.Blue(newContent)
|
|
}
|
|
|
|
/*func generatePageFromTemplateAndData(templateContent string, entry dataEntry) string {
|
|
var entryContent string
|
|
entryContent = templateContent
|
|
//first, get the map keys
|
|
var keys []string
|
|
for key, _ := range entry {
|
|
keys = append(keys, key)
|
|
}
|
|
//now, replace the keys with the values
|
|
for j := 0; j < len(keys); j++ {
|
|
entryContent = strings.Replace(entryContent, "{{"+keys[j]+"}}", entry[keys[j]], -1)
|
|
}
|
|
return entryContent
|
|
}*/
|
|
func getHtmlAndDataFromRepeatPages(page RepeatPages) (string, []dataEntry, *gabs.Container) {
|
|
templateContent := readFile(rawFolderPath + "/" + page.HtmlPage)
|
|
data, jsonData := getDataFromJson(rawFolderPath + "/" + page.Data)
|
|
return templateContent, data, jsonData
|
|
}
|