Mercurial > yakumo_izuru > aya
changeset 7:11073a30f71f draft
simplified build process, added pre and post build hooks
author | zaitsev.serge |
---|---|
date | Fri, 05 Dec 2014 19:03:33 +0000 |
parents | cb66f5b86616 |
children | 90f73028f891 |
files | zs.go |
diffstat | 1 files changed, 25 insertions(+), 25 deletions(-) [+] |
line wrap: on
line diff
--- a/zs.go Fri Dec 05 18:26:15 2014 +0000 +++ b/zs.go Fri Dec 05 19:03:33 2014 +0000 @@ -37,7 +37,6 @@ v := map[string]string{ "file": path, "url": url, - "outdir": PUBDIR, "output": filepath.Join(PUBDIR, url), "layout": "index.html", } @@ -89,10 +88,12 @@ } func env(vars map[string]string) []string { - env := []string{"ZS=" + os.Args[0]} + env := []string{"ZS=" + os.Args[0], "ZS_OUTDIR=" + PUBDIR} env = append(env, os.Environ()...) - for k, v := range vars { - env = append(env, "ZS_"+strings.ToUpper(k)+"="+v) + if vars != nil { + for k, v := range vars { + env = append(env, "ZS_"+strings.ToUpper(k)+"="+v) + } } return env } @@ -159,35 +160,21 @@ return nil } -func copyFile(path string) error { - if in, err := os.Open(path); err != nil { - return err - } else { +func copyFile(path string) (err error) { + var in, out *os.File + if in, err = os.Open(path); err == nil { defer in.Close() - if stat, err := in.Stat(); err != nil { - return err - } else { - // Directory? - if stat.Mode().IsDir() { - os.Mkdir(filepath.Join(PUBDIR, path), 0755) - return nil - } - if !stat.Mode().IsRegular() { - return nil - } - } - if out, err := os.Create(filepath.Join(PUBDIR, path)); err != nil { - return err - } else { + if out, err = os.Create(filepath.Join(PUBDIR, path)); err == nil { defer out.Close() _, err = io.Copy(out, in) - return err } } + return err } func buildAll(once bool) { lastModified := time.Unix(0, 0) + modified := false for { os.Mkdir(PUBDIR, 0755) err := filepath.Walk(".", func(path string, info os.FileInfo, err error) error { @@ -196,7 +183,15 @@ return nil } - if info.ModTime().After(lastModified) { + if info.IsDir() { + os.Mkdir(filepath.Join(PUBDIR, path), 0755) + return nil + } else if info.ModTime().After(lastModified) { + if !modified { + // About to be modified, so run pre-build hook + run(filepath.Join(ZSDIR, "pre"), []string{}, nil, nil) + modified = true + } ext := filepath.Ext(path) if ext == ".md" || ext == "mkd" { log.Println("mkd: ", path) @@ -211,6 +206,11 @@ if err != nil { log.Println("ERROR:", err) } + if modified { + // Something was modified, so post-build hook + run(filepath.Join(ZSDIR, "post"), []string{}, nil, nil) + modified = false + } lastModified = time.Now() if once { break