Mercurial > yakumo_izuru > aya
changeset 60:cf7277e42ece draft
Add serve function, update documentation accordingly
Signed-off-by: Izuru Yakumo <yakumo.izuru@chaotic.ninja>
author | yakumo.izuru |
---|---|
date | Fri, 21 Apr 2023 23:06:28 +0000 |
parents | ed3aa9aaad0a |
children | e8f54da51137 |
files | README.md aya.1 cmd/aya/main.go |
diffstat | 3 files changed, 38 insertions(+), 26 deletions(-) [+] |
line wrap: on
line diff
--- a/README.md Fri Apr 21 20:25:31 2023 +0000 +++ b/README.md Fri Apr 21 23:06:28 2023 +0000 @@ -17,7 +17,7 @@ Build it manually assuming you have Go installed: - $ go install marisa.chaotic.ninja/aya@latest + $ go install marisa.chaotic.ninja/aya/cmd/aya@latest ## Ideology @@ -66,10 +66,10 @@ echo $timestamp \ "<item>" \ "<title>$title</title>" \ - "<link>http://ayaerge.com/$url</link>" \ + "<link>http://zserge.com/$url</link>" \ "<description>$descr</description>" \ "<pubDate>$(date --date @$timestamp -R)</pubDate>" \ - "<guid>http://ayaerge.com/$url</guid>" \ + "<guid>http://zserge.com/$url</guid>" \ "</item>" fi done | sort -r -n | cut -d' ' -f2- @@ -93,12 +93,14 @@ `aya build <file>` re-builds one file and prints resulting content to stdout. -`aya watch` rebuilds your site every time you modify any file. +`aya serve` serves your site over HTTP. `aya var <filename> [var1 var2...]` prints a list of variables defined in the header of a given markdown file, or the values of certain variables (even if it's an empty string). +`aya watch` rebuilds your site every time you modify any file. + ## License The software is distributed under the MIT license.
--- a/aya.1 Fri Apr 21 20:25:31 2023 +0000 +++ b/aya.1 Fri Apr 21 23:06:28 2023 +0000 @@ -16,21 +16,22 @@ .It Fast (of course) .El .Sh USAGE -.Ss (Re-)build your site. -.Nm -.Cm build -.Ss (Re-)build one file and prints resulting content to standard output. +.Bl -tag +.It build +(Re-)build a site or a file in particular +.It serve +Serve generated site over HTTP +.It var +Print a list of variables defined in a given markdown file. +.It watch +(Re-)build a site if any file changed +.Sh HISTORY .Nm -.Cm build -.Ar <file> -.Ss (Re-)build your site every time you modify any file. -.Nm -.Cm watch -.Ss Print a list of variables defined in the header of a given markdown file. -.Nm -.Cm var -.Ar <file> -.Ar <var1> <var2> ... +was originally forked from prologic/zs by Izuru +out of disgust with the latest revision, so he +used a earlier commit as a base, and then +eventually reimplemented older features from +zserge's original project. .Sh AUTHORS .Nm is maintained by Izuru Yakumo
--- a/cmd/aya/main.go Fri Apr 21 20:25:31 2023 +0000 +++ b/cmd/aya/main.go Fri Apr 21 23:06:28 2023 +0000 @@ -4,7 +4,7 @@ "bytes" "fmt" "io" - "io/ioutil" + "net/http" "os" "os/exec" "path/filepath" @@ -59,7 +59,7 @@ // stderr is printed to aya stderr, command output is returned as a string. func run(vars Vars, cmd string, args ...string) (string, error) { // First check if partial exists (.html) - if b, err := ioutil.ReadFile(filepath.Join(AYADIR, cmd+".html")); err == nil { + if b, err := os.ReadFile(filepath.Join(AYADIR, cmd+".html")); err == nil { return string(b), nil } @@ -90,7 +90,7 @@ // content by an empty line. Header can be either YAML or JSON. // If no empty newline is found - file is treated as content-only. func getVars(path string, globals Vars) (Vars, string, error) { - b, err := ioutil.ReadFile(path) + b, err := os.ReadFile(path) if err != nil { return nil, "", err } @@ -359,6 +359,12 @@ time.Sleep(1 * time.Second) } } +// Serve the public directory over HTTP +func servePubDir() { + rootdir := http.Dir(PUBDIR) + http.Handle("/", http.FileServer(rootdir)) + log.Fatal(http.ListenAndServe(":8000", nil)) +} func init() { // prepend .aya to $PATH, so plugins will be found before OS commands @@ -372,9 +378,10 @@ fmt.Printf("\n") fmt.Printf("Where <command> is:\n") fmt.Printf("\tbuild\tGenerate site\n") + fmt.Printf("\tserve\tServe %v over HTTP\n", PUBDIR) + fmt.Printf("\tvar\tQuery variable(s) from a markdown file\n") + fmt.Printf("\tversion\tPrint program version and exit\n") fmt.Printf("\twatch\t(Re)generate site while looking for changes\n") - fmt.Printf("\tvar\tQuery a variable from a markdown file\n") - fmt.Printf("\tversion\tPrint version and exit\n") fmt.Printf("\n") fmt.Printf("Other commands may be dynamically added by plugins found in %v\n", AYADIR) os.Exit(0) @@ -397,8 +404,8 @@ } else { fmt.Println("ERROR: too many arguments") } - case "watch": - buildAll(true) + case "serve": + servePubDir() case "var": if len(args) == 0 { fmt.Println("var: filename expected") @@ -420,8 +427,10 @@ fmt.Println(strings.TrimSpace(s)) } case "version": - fmt.Printf("%v\n", aya.Version) + fmt.Printf("%v\n", aya.FullVersion()) os.Exit(0) + case "watch": + buildAll(true) default: if s, err := run(globals(), cmd, args...); err != nil { fmt.Println(err)