-module(http_ffi). -export([serve/1]). serve(Port) -> {ok, Pattern} = re:compile("name *= *\"(?.+)\""), {ok, Toml} = file:read_file("gleam.toml"), {match, [Name]} = re:run(Toml, Pattern, [{capture, all_names, binary}]), Html = << "\n" "\n" "\n" " \n" " \n" " Lustre preview server\n" "\n" " \n" "\n" "\n" "
\n" "\n" "" >>, file:write_file("build/dev/javascript/index.html", Html), AbsPath = string:trim( filename:absname("build/dev/javascript"), trailing, "/." ), inets:start(), Address = {127, 0, 0, 1}, {ok, Pid} = httpd:start_service([ {bind_address, Address}, {document_root, AbsPath}, {server_root, AbsPath}, {directory_index, ["index.html"]}, {server_name, "localhost"}, {port, Port}, {default_type, "text/html"}, {mime_types, mime_types()}, {modules, [mod_alias, mod_dir, mod_get]} ]), receive {From, shutdown} -> ok = httpd:stop_service(Pid), From ! done end. mime_types() -> [ {"html", "text/html"}, {"htm", "text/html"}, {"js", "text/javascript"}, {"mjs", "text/javascript"}, {"css", "text/css"}, {"gif", "image/gif"}, {"jpg", "image/jpeg"}, {"jpeg", "image/jpeg"}, {"png", "image/png"} ].