Files
fes/src/new/new.go
2025-12-07 12:24:47 -05:00

69 lines
1.3 KiB
Go

package new
import (
"fmt"
"os"
"os/exec"
"os/user"
"path/filepath"
"strings"
)
/* try to get git user, if not system user */
func getName() string {
out, err := exec.Command("git", "config", "user.name").Output()
if err == nil {
s := strings.TrimSpace(string(out))
if s != "" {
return s
}
}
u, err := user.Current()
if err == nil && u.Username != "" {
return u.Username
}
return "unknown"
}
/* helper function for writing files */
func write(path string, format string, args ...interface{}) error {
dir := filepath.Dir(path)
if err := os.MkdirAll(dir, 0755); err != nil {
panic(err)
}
f, err := os.OpenFile(path, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0644)
if err != nil {
panic(err)
}
defer f.Close()
_, err = fmt.Fprintf(f, format, args...)
return err
}
/* creates a hello world project */
func Project(dir string) error {
if err := os.Mkdir(dir, 0755); err != nil {
return err
}
if err := os.Chdir(dir); err != nil {
return err
}
name := getName()
write("www/index.lua", `local fes = require("fes")
local site = fes.fes()
-- site.copyright = fes.util.copyright("https://example.com", "%s")
site:h1("Hello, World!")
return site`, name)
write("Fes.toml", `[app]
name = "%s"
version = "0.0.1"
authors = ["%s"]`, dir, name)
return nil
}