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
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-
`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.
.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
"bytes"
"fmt"
"io"
- "io/ioutil"
+ "net/http"
"os"
"os/exec"
"path/filepath"
// 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
}
// 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
}
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
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)
} 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")
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)