github.com/kotovmak/go-admin@v1.1.1/adm/plugin.go (about) 1 package main 2 3 import ( 4 "bytes" 5 "fmt" 6 "go/format" 7 "io/ioutil" 8 "os" 9 "strings" 10 "text/template" 11 12 "github.com/mgutz/ansi" 13 ) 14 15 func getPluginTemplate(modulePath, pluginName string) { 16 data := PluginTmplData{ 17 ModulePath: modulePath, 18 PluginName: pluginName, 19 PluginTitle: strings.Title(pluginName), 20 } 21 checkError(ioutil.WriteFile("./"+pluginName+".go", parsePluginTmpl("main", data), 0644)) 22 checkError(ioutil.WriteFile("./router.go", parsePluginTmpl("router", data), 0644)) 23 checkError(os.Mkdir("controller", os.ModePerm)) 24 checkError(ioutil.WriteFile("./controller/common.go", parsePluginTmpl("controller", data), 0644)) 25 checkError(ioutil.WriteFile("./controller/example.go", parsePluginTmpl("controller_example", data), 0644)) 26 checkError(os.Mkdir("guard", os.ModePerm)) 27 checkError(ioutil.WriteFile("./guard/guard.go", parsePluginTmpl("guard", data), 0644)) 28 checkError(ioutil.WriteFile("./guard/example.go", parsePluginTmpl("guard_example", data), 0644)) 29 checkError(os.Mkdir("modules", os.ModePerm)) 30 checkError(os.Mkdir("./modules/language", os.ModePerm)) 31 checkError(ioutil.WriteFile("./modules/language/language.go", parsePluginTmpl("language", data), 0644)) 32 checkError(ioutil.WriteFile("./modules/language/cn.go", parsePluginTmpl("language_cn", data), 0644)) 33 checkError(ioutil.WriteFile("./modules/language/en.go", parsePluginTmpl("language_en", data), 0644)) 34 checkError(ioutil.WriteFile("./Makefile", []byte(pluginTemplate["makefile"]), 0644)) 35 checkError(os.Mkdir("example", os.ModePerm)) 36 checkError(os.Mkdir("tests", os.ModePerm)) 37 fmt.Println() 38 fmt.Println(ansi.Color(getWord("Generate plugin template success~~🍺🍺"), "green")) 39 fmt.Println() 40 } 41 42 type PluginTmplData struct { 43 PluginName string 44 PluginTitle string 45 ModulePath string 46 } 47 48 func parsePluginTmpl(name string, data PluginTmplData) []byte { 49 t, err := template.New("plugin").Parse(pluginTemplate[name]) 50 checkError(err) 51 buf := new(bytes.Buffer) 52 checkError(t.Execute(buf, data)) 53 c, err := format.Source(buf.Bytes()) 54 checkError(err) 55 return c 56 }