diff --git a/TODOS.md b/TODOS.md index 84bcdde..d0bc715 100644 --- a/TODOS.md +++ b/TODOS.md @@ -15,6 +15,7 @@ - [ ] ensure sidenote numbers render in display order and not in declaration order. - [x] Search up for `thor.json` files. - [ ] OpenGraph meta tags — verify all fields match production site +- [ ] Add Opt-in deflist support. - [ ] set opengraph tags / description automatically if unset. (Like hugo does) - [ ] Table of contents support. - [ ] Nav items should be active when the current page is selected. diff --git a/content.odin b/content.odin index 6de0e3d..ed67afa 100644 --- a/content.odin +++ b/content.odin @@ -217,47 +217,8 @@ strip_extension :: proc(name: string) -> string { return name[:dot] } -// copy_static_dir recursively copies all files from static_dir to output_dir. -// Silently skips if static_dir doesn't exist. -copy_static_dir :: proc(static_dir: string, output_dir: string) { - if !os.exists(static_dir) { - return - } - copy_static_recursive(static_dir, "", output_dir) -} - -copy_static_recursive :: proc(current: string, rel_prefix: string, output_dir: string) { - entries, err := os.read_all_directory_by_path(current, context.allocator) - if err != nil { - log.warnf("thor: cannot read %s: %v", current, err) - return - } - defer os.file_info_slice_delete(entries, context.allocator) - - for entry in entries { - rel := rel_prefix == "" ? entry.name : fmt.tprintf("%s/%s", rel_prefix, entry.name) - switch entry.type { - case .Regular: - dest := fmt.tprintf("%s/%s", output_dir, rel) - if idx := strings.last_index(dest, "/"); idx >= 0 { - if err := os.make_directory_all(dest[:idx]); err != nil && err != .Exist { - log.warnf("thor: cannot create %s: %v", dest[:idx], err) - continue - } - } - if err := os.copy_file(dest, entry.fullpath); err != nil { - log.warnf("thor: cannot copy %s: %v", entry.fullpath, err) - } - case .Directory: - copy_static_recursive(entry.fullpath, rel, output_dir) - case .Undetermined, .Symlink, .Named_Pipe, .Socket, .Block_Device, .Character_Device: - } - } -} - // copy_assets_dir recursively copies files from assets_dir to output_dir. -// .css files are minified when .Minify is enabled; all other files are copied -// verbatim with a warning suggesting they belong in static/. +// .css files are minified when .Minify is enabled; all other files are copied verbatim. // Silently skips if assets_dir doesn't exist. copy_assets_dir :: proc(assets_dir: string, output_dir: string, features: bit_set[Feature]) { if !os.exists(assets_dir) { @@ -299,9 +260,6 @@ copy_assets_recursive :: proc( minified := minify_css(string(data)) write_file(dest, minified) } else { - if !strings.has_suffix(entry.name, ".css") { - log.warnf("thor: %s is not a CSS file; consider moving it to static/", entry.fullpath) - } if err := os.copy_file(dest, entry.fullpath); err != nil { log.warnf("thor: cannot copy %s: %v", entry.fullpath, err) } diff --git a/render.odin b/render.odin index e501a07..ae3e960 100644 --- a/render.odin +++ b/render.odin @@ -134,10 +134,7 @@ render_site :: proc(pages: []Page, config: Site) { sitemap := generate_sitemap(pages, config.base_url) write_file(fmt.tprintf("%s/sitemap.xml", config.output_dir), sitemap) - // Copy static directory (favicon, CSS, images, etc.) - copy_static_dir(config.static_dir, config.output_dir) - - // Copy and maybe minify assets directory + // Copy and optionally minify assets directory copy_assets_dir(config.assets_dir, config.output_dir, config.features) // Generate robots.txt diff --git a/site.odin b/site.odin index e4a1381..c255996 100644 --- a/site.odin +++ b/site.odin @@ -17,7 +17,6 @@ Site :: struct { base_url: string, config_path: string, content_dir: string, - static_dir: string, assets_dir: string, output_dir: string, layouts_dir: string, @@ -38,7 +37,6 @@ Flags :: struct { description: string, base_url: string `args:"name=base-url"`, content_dir: string `args:"name=content"`, - static_dir: string `args:"name=static"`, assets_dir: string `args:"name=assets"`, output_dir: string `args:"name=output"`, layouts_dir: string, @@ -87,9 +85,6 @@ init_site :: proc(site: ^Site, args: []string) { if site.content_dir == "" { site.content_dir = fmt.tprintf("%s/content", config_dir) } - if site.static_dir == "" { - site.static_dir = fmt.tprintf("%s/static", config_dir) - } if site.assets_dir == "" { site.assets_dir = fmt.tprintf("%s/assets", config_dir) } @@ -133,9 +128,6 @@ merge_flags :: proc(config: ^Flags, flags: Flags) { if flags.content_dir != "" { config.content_dir = flags.content_dir } - if flags.static_dir != "" { - config.static_dir = flags.static_dir - } if flags.assets_dir != "" { config.assets_dir = flags.assets_dir } @@ -164,7 +156,6 @@ site_apply_flags :: proc(site: ^Site, flags: Flags) { site.base_url = flags.base_url site.config_path = flags.config_path site.content_dir = flags.content_dir - site.static_dir = flags.static_dir site.assets_dir = flags.assets_dir site.output_dir = flags.output_dir site.layouts_dir = flags.layouts_dir