]> Nishi Git Mirror - aya.git/commitdiff
Add serve function, update documentation accordingly 0.5.4
authorIzuru Yakumo <yakumo.izuru@chaotic.ninja>
Fri, 21 Apr 2023 23:06:28 +0000 (20:06 -0300)
committerIzuru Yakumo <yakumo.izuru@chaotic.ninja>
Fri, 21 Apr 2023 23:06:28 +0000 (20:06 -0300)
Signed-off-by: Izuru Yakumo <yakumo.izuru@chaotic.ninja>
README.md
aya.1
cmd/aya/main.go

index 0d61b733337de023b8be0c6a7951d92f5f63808b..18c65c359fa88c155f2d027bad0995267eafbd74 100644 (file)
--- a/README.md
+++ b/README.md
@@ -17,7 +17,7 @@ This crow tengu stands for 'the fastest one in Gensokyo' and yes this is also a
 
 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 @@ for f in ./blog/*.md ; do
                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 @@ content generation, or additional commands, like LESS to CSS conversion:
 
 `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.
diff --git a/aya.1 b/aya.1
index 33e2b088ecc90f9060826e8b8f233edbc2cdb91c..b9b7661023c3048bbf61926a013cd81079c3e5e3 100644 (file)
--- a/aya.1
+++ b/aya.1
@@ -16,21 +16,22 @@ Does it need one?
 .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 
index d440d3f3d996c6d8b10ebfaafeed7bc6906e2319..cb2a5a6c8b3ae2bd22af66f5f8546631eb0858ab 100644 (file)
@@ -4,7 +4,7 @@ import (
        "bytes"
        "fmt"
        "io"
-       "io/ioutil"
+       "net/http"
        "os"
        "os/exec"
        "path/filepath"
@@ -59,7 +59,7 @@ func globals() Vars {
 // 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 @@ func run(vars Vars, cmd string, args ...string) (string, error) {
 // 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 @@ func buildAll(watch bool) {
                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 @@ func printUsage() {
        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 @@ func main() {
                } 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 @@ func main() {
                        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)