mirror of
https://github.com/opencloud-eu/opencloud.git
synced 2025-12-21 03:50:44 -06:00
66 lines
1.6 KiB
Go
66 lines
1.6 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"io/ioutil"
|
|
"log"
|
|
"os"
|
|
"os/exec"
|
|
"path"
|
|
"path/filepath"
|
|
"strings"
|
|
"text/template"
|
|
)
|
|
|
|
var targets = map[string]string{
|
|
"example-config-generator.go.tmpl": "output/exampleconfig/example-config-generator.go",
|
|
"extractor.go.tmpl": "output/env/runner.go",
|
|
}
|
|
|
|
func main() {
|
|
fmt.Println("Getting relevant packages")
|
|
paths, err := filepath.Glob("../../extensions/*/pkg/config/defaults/defaultconfig.go")
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
replacer := strings.NewReplacer(
|
|
"../../", "github.com/owncloud/ocis/",
|
|
"/defaultconfig.go", "",
|
|
)
|
|
for i := range paths {
|
|
paths[i] = replacer.Replace(paths[i])
|
|
}
|
|
|
|
for template, output := range targets {
|
|
GenerateIntermediateCode(template, output, paths)
|
|
RunIntermediateCode(output)
|
|
}
|
|
fmt.Println("Cleaning up")
|
|
os.RemoveAll("output")
|
|
}
|
|
|
|
func GenerateIntermediateCode(templatePath string, intermediateCodePath string, paths []string) {
|
|
content, err := ioutil.ReadFile(templatePath)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
fmt.Println("Generating intermediate go code for " + intermediateCodePath + " using template " + templatePath)
|
|
tpl := template.Must(template.New("").Parse(string(content)))
|
|
os.MkdirAll(path.Dir(intermediateCodePath), 0700)
|
|
runner, err := os.Create(intermediateCodePath)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
tpl.Execute(runner, paths)
|
|
}
|
|
|
|
func RunIntermediateCode(intermediateCodePath string) {
|
|
fmt.Println("Running intermediate go code for " + intermediateCodePath)
|
|
os.Setenv("OCIS_BASE_DATA_PATH", "~/.ocis")
|
|
out, err := exec.Command("go", "run", intermediateCodePath).Output()
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
fmt.Println(string(out))
|
|
}
|