From 2802d9459b4c7f04cd40ffed4193fbef14e3a13e Mon Sep 17 00:00:00 2001 From: vx-clutch Date: Sat, 29 Nov 2025 13:00:45 -0500 Subject: [PATCH] alpha p3 --- README.md | 118 ++--------------------------------------------- TODO | 3 +- core/builtin.lua | 10 ++-- 3 files changed, 13 insertions(+), 118 deletions(-) diff --git a/README.md b/README.md index e48472c..601507b 100644 --- a/README.md +++ b/README.md @@ -1,127 +1,17 @@ # Fes -A lightweight static site generator built with Go and Lua. Write your websites in Lua and generate beautiful HTML with a modern dark theme. - -## Features - -- 🚀 **Simple & Fast**: Minimal setup, fast development workflow -- 🎨 **Beautiful Default Theme**: Modern dark theme with clean typography -- 📝 **Lua-Powered**: Write your site logic in Lua for flexibility -- ⚙️ **TOML Configuration**: Simple configuration via `Fes.toml` -- 🔧 **Easy CLI**: Two simple commands to get started - -## Installation - -### Prerequisites - -- Go 1.25.4 or later -- Git (for author name detection) - -### Build from Source - -```bash -git clone https://git.vxserver.dev/fSD/fes.git -cd fes -go build -o fes -``` +A lightweight, static, and opinionated microframework. ## Usage -### Create a New Project - -```bash -fes new -``` - -This creates a new project directory with: -- `www/index.lua` - Your main Lua file -- `Fes.toml` - Project configuration - -### Run Development Server - -```bash -fes run [-p ] -``` - -Starts a local development server (default port: 3000). - -Example: -```bash -fes run my-site -p 8080 -``` - -## Project Structure - -``` -my-site/ -├── Fes.toml # Project configuration -└── www/ - └── index.lua # Main Lua file -``` - -## Configuration - -Edit `Fes.toml` to configure your site: - -```toml -[site] -name = "My Site" -version = "0.0.1" -authors = ["Your Name"] - -[fes] -version = "1.0.0" -CUSTOM_CSS = "" # Optional custom CSS -``` - -## Writing Your Site - -Your `www/index.lua` file should use the Fes API to build your site: - +This is the `fes new ` output ```lua local fes = require("fes") -local site = fes.site_builder() +local site = fes.fes() site:h1("Hello, World!") -site:h2("Welcome to Fes") -site:custom("

This is a custom HTML paragraph.

") return site ``` -### Available Methods - -- `site:h1(text)` - Heading 1 -- `site:h2(text)` - Heading 2 -- `site:h3(text)` - Heading 3 -- `site:h4(text)` - Heading 4 -- `site:h5(text)` - Heading 5 -- `site:h6(text)` - Heading 6 -- `site:custom(html)` - Insert custom HTML -- `site:version()` - Get site version from config - -### Standard Library - -Access version information via `fes.std`: - -```lua -local fes = require("fes") -local site = fes.site_builder() - -site:h2("Fes version: " .. fes.std.fes_version()) -site:h2("Site version: " .. fes.std.site_version()) - -return site -``` - -## Example - -See the `test/` directory for a complete example project. - -## License - -ISC License - -Copyright (c) 2025 fSD - -See `COPYING` for full license text. +This can be ran with `fes run .` where `.` is the location of the Fes.toml diff --git a/TODO b/TODO index 9b9fd43..2922f0f 100644 --- a/TODO +++ b/TODO @@ -1,2 +1,3 @@ -Make this static ( cannot find core.std everywhere ) Add an interval element +Add a way to pass data to sites on load via fes.bus +Fire emoji default favicon diff --git a/core/builtin.lua b/core/builtin.lua index 26321f8..3479946 100644 --- a/core/builtin.lua +++ b/core/builtin.lua @@ -19,12 +19,14 @@ function M.fes(header, footer) version = site_config.version or "", title = site_config.title or "Document", copyright = site_config.copyright or "© The Copyright Holder", + favicon = "/image/favicon.ico", header = header or [[ + {{TITLE}} @@ -409,7 +411,9 @@ for name, func in pairs(std) do end function M:build() - local header = self.header:gsub("{{TITLE}}", self.title or "Document") + local header = self.header + header = header:gsub("{{TITLE}}", self.title or "Document") + header = header:gsub("{{FAVICON}}", self.favicon or "") local footer = self.footer:gsub("{{COPYRIGHT}}", self.copyright or "© The Copyright Holder") return header .. table.concat(self.parts, "\n") .. footer end