package main import ( "fmt" "github.com/otiai10/copy" "os" "path/filepath" ) func main() { // show usage if config file is missing if len(os.Args) < 2 { fmt.Println("Usage: godocs ") os.Exit(1) } // read config file specified in the command line cfg := readConfig(os.Args[1]) // create temporary target directory tmp := createTempDir("godocs") defer os.RemoveAll(tmp) // gather all sites in docsRoot sites := getSites(cfg) for _, site := range sites { // collect all entries entries := findEntries(site.sourcePath) // render all entries createPageMap(&site, entries) // create navigation item slice createNavSlice(&site, cfg) // output the site generateSite(site, cfg, tmp) } // copy CSS file to generation directory err := copy.Copy(cfg.CssFile, filepath.Join(tmp, "style.css")) if err != nil { panic(err) } // if we are here, generation succeeded, so we move the generated content to the target directory err = os.RemoveAll(cfg.TargetDir) if err != nil { panic(err) } err = os.Rename(tmp, cfg.TargetDir) if err != nil { panic(err) } // fix because for some reason the generated directory ends up with the wrong permissions err = os.Chmod(cfg.TargetDir, 0755) if err != nil { panic(err) } }