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 "))) }