diff --git a/.diji-config/README.txt b/.diji-config/README.txt new file mode 100644 index 0000000..e69de29 diff --git a/.diji-config/config.txt b/.diji-config/config.txt index 1e248dc..f25c291 100644 --- a/.diji-config/config.txt +++ b/.diji-config/config.txt @@ -1,2 +1,2 @@ // Quick mode skips all the questions besides project name and always uses the default option. -quick-mode = true \ No newline at end of file +quick-mode = false \ No newline at end of file diff --git a/diji.go b/diji.go index d53caaf..80c7008 100644 --- a/diji.go +++ b/diji.go @@ -2,6 +2,7 @@ package main import ( "fmt" + "io" "log" "os" "strings" @@ -13,6 +14,31 @@ func check(e error) { } } +func copy(src, dst string) (int64, error) { + sourceFileStat, err := os.Stat(src) + if err != nil { + return 0, err + } + + if !sourceFileStat.Mode().IsRegular() { + return 0, fmt.Errorf("%s is not a regular file", src) + } + + source, err := os.Open(src) + if err != nil { + return 0, err + } + defer source.Close() + + destination, err := os.Create(dst) + if err != nil { + return 0, err + } + defer destination.Close() + nBytes, err := io.Copy(destination, source) + return nBytes, err +} + func main() { var projname string @@ -21,6 +47,31 @@ func main() { fmt.Println("by KZacharski") fmt.Print("Project name: ") fmt.Scanln(&projname) + var createcss bool = true + var createjs bool = true + configbytes, err := os.ReadFile(".diji-config/config.txt") + if err != nil { + fmt.Print(err) + } + configtext := string(configbytes) + var quickmode bool = strings.Contains(configtext, "quick-mode = true") + fmt.Println(quickmode) + + if quickmode == false { + var cssstr string + var jsstr string + fmt.Print("Create a css file (y/n, default y): ") + fmt.Scanln(&cssstr) + fmt.Print("Create a js file (y/n, default y): ") + fmt.Scanln(&jsstr) + if cssstr == "n" { + createcss = false + } + if jsstr == "n" { + createjs = false + } + } + if err := os.Mkdir(projname, os.ModePerm); err != nil { log.Fatal(err) } @@ -29,21 +80,59 @@ func main() { if err != nil { log.Fatal(err) } - var indexcontent string = ` + var assetspath string = projname + "/assets" + if err := os.Mkdir(assetspath, os.ModePerm); err != nil { + log.Fatal(err) + } + var favpath string = assetspath + "/favicon.png" + copy(".diji-config/defaultfav.png", favpath) + fmt.Println(favpath + " created.") + var indexcontent1 string = ` ` + projname + ` - -` + +` + var csstag string = ` +` + var jstag string = ` +` + var indexcontent2 string = ` +` + if createcss == true { + indexcontent1 = indexcontent1 + csstag + } + if createjs == true { + indexcontent1 = indexcontent1 + jstag + } + var indexcontent string = indexcontent1 + indexcontent2 _, err2 := index.WriteString(indexcontent) check(err2) defer index.Close() fmt.Println(indname + " created.") - configbytes, err := os.ReadFile(".diji-config/config.txt") - if err != nil { - fmt.Print(err) + + if createcss == true { + var cssname string = projname + "/style.css" + var csscontent string = `body { +font-family: sans-serif; +}` + style, err := os.Create(cssname) + if err != nil { + log.Fatal(err) + } + _, err2 := style.WriteString(csscontent) + check(err2) + defer style.Close() + fmt.Println(cssname + " created.") } - configtext := string(configbytes) - var quickmode bool = strings.Contains(configtext, "quick-mode = true") - fmt.Println(quickmode) + if createjs == true { + var jsname string = projname + "/script.js" + script, err := os.Create(jsname) + if err != nil { + log.Fatal(err) + } + defer script.Close() + fmt.Println(jsname + " created.") + } + }