added utf8 and footer, with comp time

This commit is contained in:
Simon Kellet 2026-03-09 22:50:04 +00:00
parent 7b62c1f31c
commit 33b5ee725a
3 changed files with 29 additions and 5 deletions

1
.gitignore vendored
View File

@ -1,3 +1,4 @@
cm cm
.DS_Store .DS_Store
test/ test/
website_update.sh

View File

@ -4,13 +4,13 @@ import "core:fmt"
import vmem "core:mem/virtual" import vmem "core:mem/virtual"
import "core:os" import "core:os"
import "core:strings" import "core:strings"
import "core:time"
print_usage :: proc() { print_usage :: proc() {
fmt.println("Usage:\n\tcm [working dir] [output dir]\nNote:USE FULL PATH!") fmt.println("Usage:\n\tcm [working dir] [output dir]\nNote:USE FULL PATH!")
os.exit(0) os.exit(0)
} }
main :: proc() { main :: proc() {
if len(os.args) <= 2 || len(os.args) > 3 { if len(os.args) <= 2 || len(os.args) > 3 {
print_usage() print_usage()
@ -26,10 +26,14 @@ main :: proc() {
arena_alloc := vmem.arena_allocator(&arena) arena_alloc := vmem.arena_allocator(&arena)
defer vmem.arena_destroy(&arena) //clean defer vmem.arena_destroy(&arena) //clean
start := time.tick_now()
md_files := walk_tree_and_get_md_names(directory, arena_alloc) md_files := walk_tree_and_get_md_names(directory, arena_alloc)
end := time.tick_since(start)
for file, i in md_files { for file, i in md_files {
os.change_directory(directory) os.change_directory(directory)
fmt.printfln("INFO: Parsing %s from .MD to HTML...", file)
html, parse_err := parse_file_md_to_html(file, arena_alloc) html, parse_err := parse_file_md_to_html(file, arena_alloc)
if parse_err != nil { if parse_err != nil {
@ -37,18 +41,35 @@ main :: proc() {
} }
filename := strings.split(file, directory) filename := strings.split(file, directory)
//fmt.printfln("INFO: filename: %s", filename)
trimmed_filename := strings.trim_right(filename[1], ".md") trimmed_filename := strings.trim_right(filename[1], ".md")
//fmt.printfln("INFO: trimmed_filename: %s", trimmed_filename)
sb := strings.builder_make()
strings.write_string(&sb, fmt.aprintf("%v", trimmed_filename, allocator = arena_alloc))
strings.write_string(&sb, ".html")
os.change_directory(output_dir) os.change_directory(output_dir)
sb := strings.builder_make(arena_alloc)
strings.write_string(&sb, fmt.aprintf("%v", trimmed_filename, allocator = arena_alloc))
strings.write_string(&sb, ".html")
full_filename := strings.to_string(sb) full_filename := strings.to_string(sb)
file, file_err := os.create(full_filename) file, file_err := os.create(full_filename)
os.write_string(file, UTF8_PREFIX)
os.write_string(file, CSS_PREFIX) os.write_string(file, CSS_PREFIX)
os.write_string(file, MASTODON_PREFIX) os.write_string(file, MASTODON_PREFIX)
os.write_string(file, html) os.write_string(file, html)
if trimmed_filename == "index" {
buf: [1024]u8
date := time.now()
end := time.tick_since(start)
os.write_string(file, "<br><footer><hr />This site was generated with love on ")
os.write_string(file, fmt.aprintf("%s ", time.to_string_dd_mm_yy(date, buf[:])))
os.write_string(file, fmt.aprintf("in %v ", time.duration_round(end, time.Nanosecond)))
os.write_string(file, "<font color=#ea76cb><3</font> </footer><br>")
}
fmt.printfln("INFO: Wrote %s into HTML!", md_files[i])
} }
} }

View File

@ -8,9 +8,11 @@ import cm "vendor:commonmark"
MD_SUFFIX :: ".md" MD_SUFFIX :: ".md"
UTF8_PREFIX :: "<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />"
CSS_PREFIX :: "<head><link rel=\"stylesheet\" href=\"./css/style.css\">" CSS_PREFIX :: "<head><link rel=\"stylesheet\" href=\"./css/style.css\">"
MASTODON_PREFIX :: "<a rel=me href=https://linuxrocks.online/@simonkellet></a>" MASTODON_PREFIX :: "<a rel=me href=https://linuxrocks.online/@simonkellet></a>"
walk_tree_and_get_md_names :: proc(path: string, allocator: runtime.Allocator) -> [dynamic]string { walk_tree_and_get_md_names :: proc(path: string, allocator: runtime.Allocator) -> [dynamic]string {
files := make([dynamic]string, allocator) files := make([dynamic]string, allocator)