72 lines
2.6 KiB
Go
72 lines
2.6 KiB
Go
package main
|
|
|
|
import (
|
|
"apigo.cloud/git/apigo/gojs"
|
|
"apigo.cloud/git/apigo/plugin"
|
|
"fmt"
|
|
"github.com/ssgo/u"
|
|
"path/filepath"
|
|
"strings"
|
|
{{- range.imports}}
|
|
_ "{{.}}"
|
|
{{- end}}
|
|
)
|
|
|
|
func writeModule(id, name, exportCode, interfaceCode string, modules *[]string, imports *[]string) {
|
|
idParts := strings.Split(id, "/")
|
|
filename := filepath.Join("node_modules", filepath.Join(idParts...))
|
|
interfaceFilename := filename
|
|
if len(idParts) == 1 {
|
|
filename = filepath.Join(filename, "index.ts")
|
|
interfaceFilename = filepath.Join(interfaceFilename+"Type", "index.ts")
|
|
}else{
|
|
filename += ".ts"
|
|
interfaceFilename += "Type.ts"
|
|
}
|
|
if err := u.WriteFile(filepath.Join("..", filename), exportCode); err != nil {
|
|
fmt.Println(u.Cyan(id), "-", name, u.BRed(err.Error()))
|
|
} else {
|
|
if interfaceCode != "" {
|
|
_ = u.WriteFile(filepath.Join("..", interfaceFilename), interfaceCode)
|
|
}
|
|
fmt.Println(u.Cyan(id), "-", name, u.BGreen("OK"), u.Dim(">> "+filename))
|
|
//(*modules) = u.AppendUniqueString(*modules, fmt.Sprint("\"", idParts[0], "\": \"v0.0.0\""))
|
|
(*modules) = u.AppendUniqueString(*modules, idParts[0])
|
|
(*imports) = u.AppendUniqueString(*imports, fmt.Sprint("import ", idParts[len(idParts)-1], " from '"+id+"'"))
|
|
}
|
|
}
|
|
|
|
func main() {
|
|
modules := make([]string, 0)
|
|
imports := make([]string, 0)
|
|
for _, plg := range plugin.List() {
|
|
if exportCode, interfaceCode := gojs.MakePluginCode(&plg); exportCode != "" {
|
|
writeModule(plg.Id, plg.Name, exportCode, interfaceCode, &modules, &imports)
|
|
}
|
|
}
|
|
packageJsonFile := filepath.Join("..", "package.json")
|
|
oldPackageJson, _ := u.ReadFile(packageJsonFile)
|
|
insertModulesPostfix := ""
|
|
if oldPackageJson == "" {
|
|
oldPackageJson = "{\n \"devDependencies\": {\n\n }\n}"
|
|
} else if !strings.Contains(oldPackageJson, "\"devDependencies\": {") {
|
|
oldPackageJson = strings.Replace(oldPackageJson, "{", "{\n \"devDependencies\": {\n\n },", 1)
|
|
} else {
|
|
insertModulesPostfix = ","
|
|
}
|
|
insertModules := make([]string, 0)
|
|
for _, mod := range modules {
|
|
if !strings.Contains(oldPackageJson, "\""+mod+"\":") {
|
|
insertModules = u.AppendUniqueString(insertModules, fmt.Sprint("\"", mod, "\": \"v0.0.0\""))
|
|
}
|
|
}
|
|
if len(insertModules) > 0 {
|
|
newPackageJson := strings.Replace(oldPackageJson, "\"devDependencies\": {", "\"devDependencies\": {\n "+strings.Join(insertModules, ",\n ")+insertModulesPostfix, 1)
|
|
//_ = u.WriteFile("../package.json", "{\n \"devDependencies\": {\n "+strings.Join(modules, ",\n ")+"\n }\n}")
|
|
_ = u.WriteFile("../package.json", newPackageJson)
|
|
}
|
|
fmt.Println()
|
|
fmt.Println("Usage:")
|
|
fmt.Println(" " + u.Magenta(strings.Join(imports, "\n ")))
|
|
}
|