package main import ( "apigo.cloud/git/apigo/gojs" "apigo.cloud/git/apigo/plugin" "fmt" "github.com/ssgo/u" "path" "strings" {{- range.imports}} _ "{{.}}" {{- end}} ) const consoleModuleCode = `export default { "log": function (...args: any): void {return}, "info": function (...args: any): void {return}, "warn": function (...args: any): void {return}, "error": function (...args: any): void {return}, "input": function (): string {return}, }` const loggerModuleCode = `export default { "debug": function (message: string, ext?: Object): void {return}, "info": function (message: string, ext?: Object): void {return}, "warn": function (message: string, ext?: Object): void {return}, "error": function (message: string, ext?: Object): void {return}, }` func writeModule(id, name, code string, modules *[]string, imports *[]string) { idParts := strings.Split(id, "/") filename := path.Join("node_modules", path.Join(idParts...)+u.StringIf(len(idParts) == 1, "/index.ts", ".ts")) if err := u.WriteFile("../"+filename, code); err != nil { fmt.Println(u.Cyan(id), "-", name, u.BRed(err.Error())) } else { fmt.Println(u.Cyan(id), "-", name, u.BGreen("OK"), u.Dim(">> "+filename)) (*modules) = u.AppendUniqueString(*modules, fmt.Sprint("\"", idParts[0], "\": \"v0.0.0\"")) (*imports) = u.AppendUniqueString(*imports, fmt.Sprint("import ", idParts[len(idParts)-1], " from '"+id+"'")) } } func main() { modules := make([]string, 0) imports := make([]string, 0) writeModule("console", "终端工具", consoleModuleCode, &modules, &imports) writeModule("logger", "日志工具", loggerModuleCode, &modules, &imports) for _, plg := range plugin.List() { if code := gojs.MakePluginCode(&plg); code != "" { writeModule(plg.Id, plg.Name, code, &modules, &imports) } } _ = u.WriteFile("../package.json", "{\n \"devDependencies\": {\n "+strings.Join(modules, ",\n ")+"\n }\n}") fmt.Println() fmt.Println("Usage:") fmt.Println(" " + u.Magenta(strings.Join(imports, "\n "))) }