Add serve function, update documentation accordingly
Signed-off-by: Izuru Yakumo <yakumo.izuru@chaotic.ninja> git-svn-id: file:///srv/svn/repo/aya/trunk@61 cec141ff-132a-4243-88a5-ce187bd62f94
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user