github.hscsec.cn/aerogo/aero@v1.0.0/cmd/aero/main.go (about) 1 package main 2 3 import ( 4 "encoding/json" 5 "flag" 6 "fmt" 7 "io/ioutil" 8 "os" 9 "path/filepath" 10 11 "github.com/aerogo/aero" 12 13 "github.com/fatih/color" 14 ) 15 16 var newApp bool 17 18 // Shell flags 19 func init() { 20 flag.BoolVar(&newApp, "newapp", false, "Creates the basic structure of a new app in an empty directory") 21 } 22 23 // Main 24 func main() { 25 flag.Parse() 26 27 if !newApp { 28 flag.Usage() 29 return 30 } 31 32 faint := color.New(color.Faint).SprintFunc() 33 34 color.Yellow("Creating new app...") 35 println() 36 37 fmt.Println(color.GreenString(" ✔ "), ".gitignore") 38 gitignore() 39 40 fmt.Println(color.GreenString(" ✔ "), "config.json") 41 config() 42 43 fmt.Println(color.GreenString(" ✔ "), "tsconfig.json") 44 tsconfig() 45 46 fmt.Println(color.GreenString(" ✔ "), "main.go") 47 mainFile() 48 49 fmt.Println(color.GreenString(" ✔ "), "main_test.go") 50 mainTestFile() 51 52 fmt.Println(color.GreenString(" ✔ "), faint("layout")) 53 createDirectory("layout") 54 55 fmt.Println(color.GreenString(" ✔ "), faint("pages")) 56 createDirectory("pages") 57 58 fmt.Println(color.GreenString(" ✔ "), faint("scripts")) 59 createDirectory("scripts") 60 panicOnError(ioutil.WriteFile("scripts/main.ts", []byte(`console.log("Hello World")`), 0644)) 61 62 fmt.Println(color.GreenString(" ✔ "), faint("security")) 63 createDirectory("security") 64 gitignoreAll("security") 65 66 fmt.Println(color.GreenString(" ✔ "), faint("styles")) 67 createDirectory("styles") 68 69 println() 70 color.Green("Finished.") 71 } 72 73 func createDirectory(name string) { 74 err := os.Mkdir(name, 0777) 75 76 if err != nil && !os.IsExist(err) { 77 panic(err) 78 } 79 } 80 81 func mainFile() { 82 err := ioutil.WriteFile("main.go", []byte(mainCode), 0644) 83 panicOnError(err) 84 } 85 86 func mainTestFile() { 87 err := ioutil.WriteFile("main_test.go", []byte(mainTestCode), 0644) 88 panicOnError(err) 89 } 90 91 func config() { 92 config := aero.Configuration{} 93 config.Reset() 94 config.Styles = []string{} 95 config.Fonts = []string{} 96 config.Push = []string{} 97 config.Scripts.Main = "main" 98 bytes, err := json.MarshalIndent(config, "", "\t") 99 panicOnError(err) 100 101 err = ioutil.WriteFile("config.json", bytes, 0644) 102 panicOnError(err) 103 } 104 105 func tsconfig() { 106 err := ioutil.WriteFile("tsconfig.json", []byte(tsconfigText), 0644) 107 panicOnError(err) 108 } 109 110 func gitignoreAll(directory string) { 111 err := ioutil.WriteFile(directory+"/.gitignore", []byte("*"), 0644) 112 panicOnError(err) 113 } 114 115 func gitignore() { 116 // Ignore current directory name as binary 117 wd, err := os.Getwd() 118 panicOnError(err) 119 120 binaryName := "/" + filepath.Base(wd) 121 err = ioutil.WriteFile(".gitignore", []byte(gitignoreText+"\n"+binaryName+"\n"), 0644) 122 panicOnError(err) 123 } 124 125 func panicOnError(err error) { 126 if err != nil { 127 panic(err) 128 } 129 }