package main import ( "flag" "fmt" "jack/models" "log" "os" "path/filepath" cp "github.com/otiai10/copy" ) func walk(rootDir string) ([]string, error) { var files []string err := filepath.Walk(rootDir, func(path string, info os.FileInfo, err error) error { _, file := filepath.Split(path) ext := filepath.Ext(file) if !info.IsDir() && ext == ".md" { files = append(files, path) } return nil }) if err != nil { log.Println(err) } return files, err } func main() { var rootDir *string var outputDir *string defaultOutputDir, err := os.MkdirTemp("", "go-jack") if err != nil { panic(err) } rootDir = flag.String("dir", ".", "Specify the directory to parse.") outputDir = flag.String("out", defaultOutputDir, "Specify the output directory") flag.Usage = func() { fmt.Printf("Jack expects: \n") fmt.Printf("./jack -dir -out \n") } flag.Parse() copyErr := cp.Copy(*rootDir, *outputDir) if copyErr != nil { fmt.Println(copyErr) } files, _ := walk(*outputDir) site := models.Site{Name: "Grimboite", OutputDir: *outputDir} site.Categories = make(map[string]*models.Category) for _, file := range files { article := models.Article{ File: file, } article.FromFile() site.Append(&article) } site.WriteRootPage() site.Build() fmt.Println("HTML files were written to: ", *outputDir) fmt.Println("Number of parsed articles: ", len(site.Articles)) }