92 lines
1.9 KiB
Go
92 lines
1.9 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
"strings"
|
|
|
|
"mahou-no-mori.yakumo.dev/aya"
|
|
)
|
|
|
|
// Define global constants here
|
|
const (
|
|
AYADIR = ".aya"
|
|
PUBDIR = ".pub"
|
|
)
|
|
|
|
type Vars map[string]string
|
|
|
|
// Initialize the environment
|
|
func init() {
|
|
// prepend .aya to $PATH, so plugins will be found before OS commands
|
|
p := os.Getenv("PATH")
|
|
p = os.Getenv("PWD") + "/" + AYADIR + ":" + p
|
|
os.Setenv("PATH", p)
|
|
}
|
|
|
|
// Main loop
|
|
func main() {
|
|
if len(os.Args) == 1 {
|
|
fmt.Println("No command supplied. See 'aya help'")
|
|
os.Exit(1)
|
|
}
|
|
cmd := os.Args[1]
|
|
args := os.Args[2:]
|
|
switch cmd {
|
|
case "build":
|
|
if len(args) == 0 {
|
|
buildAll(false)
|
|
} else if len(args) == 1 {
|
|
if err := build(args[0], os.Stdout, globals()); err != nil {
|
|
log.Fatalf("\033[0;31m%s\033[0m\n", "[build] " + err.Error())
|
|
}
|
|
} else {
|
|
log.Fatalf("\033[0;31m%s\033[0m\n", "Too many arguments")
|
|
}
|
|
case "clean":
|
|
fmt.Printf("\033[0;37m%s\033[0m\n", "Removing generated artifacts...")
|
|
os.RemoveAll(PUBDIR)
|
|
case "help":
|
|
aya.PrintUsage()
|
|
case "serve":
|
|
d, err := os.Stat(PUBDIR)
|
|
if err != nil {
|
|
log.Fatalf("\033[0;31m%s\033[0m\n", "I see, you want me to serve a non-existent directory, huh?")
|
|
} else {
|
|
aya.HttpServe(fmt.Sprint(d), 8000)
|
|
}
|
|
case "var":
|
|
if len(args) == 0 {
|
|
log.Fatalf("\033[0;31m%s\033[0m\n", "A filename was expected, but I didn't get any")
|
|
} else {
|
|
s := ""
|
|
if vars, _, err := getVars(args[0], Vars{}); err != nil {
|
|
log.Fatalf("\033[0;31m%s\033[0m\n", "[var]" + err.Error())
|
|
} else {
|
|
if len(args) > 1 {
|
|
for _, a := range args[1:] {
|
|
s = s + vars[a] + "\n"
|
|
}
|
|
} else {
|
|
for k, v := range vars {
|
|
s = s + k + ":" + v + "\n"
|
|
}
|
|
}
|
|
}
|
|
fmt.Println(strings.TrimSpace(s))
|
|
}
|
|
case "version":
|
|
fmt.Println(aya.PrintVersion())
|
|
os.Exit(0)
|
|
case "watch":
|
|
buildAll(true)
|
|
default:
|
|
if s, err := run(globals(), cmd, args...); err != nil {
|
|
log.Fatal(err)
|
|
} else {
|
|
fmt.Println(s)
|
|
}
|
|
}
|
|
}
|