at main 1.4 kB view raw
1import gleam/dict 2import gleam/io 3import gleam/list 4import gleam/string 5import lustre/ssg 6import website/common 7import website/data/posts 8import website/data/projects 9import website/page/index 10import website/page/post 11import website/page/project 12 13pub fn main() { 14 let projects = 15 dict.from_list( 16 projects.all() 17 |> list.map(fn(project) { #(project.id, project) }), 18 ) 19 let posts = 20 dict.from_list( 21 posts.all() 22 |> list.map(fn(post) { #(post.id, post) }), 23 ) 24 25 let build = 26 ssg.new("./priv") 27 |> ssg.add_static_route( 28 "/", 29 index.view(posts: posts.all(), projects: projects.all()) 30 |> common.wrapper("Home", _), 31 ) 32 |> ssg.add_static_route( 33 "/projects", 34 project.view_all(projects.all()) |> common.wrapper("Projects", _), 35 ) 36 |> ssg.add_dynamic_route("/projects", projects, fn(p) { 37 project.view(p) |> common.wrapper(p.title, _) 38 }) 39 |> ssg.add_static_route( 40 "/posts", 41 post.view_all(posts.all()) |> common.wrapper("Posts", _), 42 ) 43 |> ssg.add_dynamic_route("/posts", posts, fn(p) { 44 post.view(p) |> common.wrapper(p.title, _) 45 }) 46 |> ssg.use_index_routes() 47 |> ssg.add_static_dir("./src/static/") 48 |> ssg.build() 49 50 case build { 51 Ok(_) -> io.println("Build succeeded!") 52 Error(e) -> { 53 io.println_error("Build failed!\n" <> string.inspect(e)) 54 } 55 } 56}