Files
aya/cmd/aya/main.go
yakumo.izuru 8be5654567 Colorful messages
git-svn-id: file:///srv/svn/repo/aya/trunk@93 cec141ff-132a-4243-88a5-ce187bd62f94
2025-06-29 02:40:58 +00:00

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)
}
}
}