From 3bfd3a4ad55934c0e687dbf5dd81ae5e63053600 Mon Sep 17 00:00:00 2001 From: LordMZTE Date: Mon, 24 Jan 2022 18:48:23 +0100 Subject: [PATCH] libify --- Cargo.toml | 12 +++++------- src/lib.rs | 13 +++++++++++++ src/main.rs | 18 ------------------ src/renderer.rs | 16 +--------------- src/script.rs | 16 +--------------- 5 files changed, 20 insertions(+), 55 deletions(-) create mode 100644 src/lib.rs delete mode 100644 src/main.rs diff --git a/Cargo.toml b/Cargo.toml index 6bc70d2..781b879 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,24 +1,22 @@ [package] name = "stundenplaner" version = "0.1.0" -edition = "2018" +edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html +[lib] +crate-type = ["cdylib"] + [dependencies] anyhow = "1.0.44" structopt = "0.3.23" tera = "1.12.1" -[dependencies.minify-html] -version = "0.8.0" -features = ["js-esbuild"] - [dependencies.mlua] version = "0.7.3" -features = ["luajit", "macros", "serialize"] +features = ["luajit", "module", "macros", "serialize"] [dependencies.serde] version = "1.0.130" features = ["derive"] - diff --git a/src/lib.rs b/src/lib.rs new file mode 100644 index 0000000..f725d97 --- /dev/null +++ b/src/lib.rs @@ -0,0 +1,13 @@ +use mlua::prelude::*; + +mod renderer; +mod script; + +#[mlua::lua_module] +fn stundenplaner(lua: &Lua) -> LuaResult { + let exports = lua.create_table()?; + + exports.set("render", lua.create_function(script::lua_render)?)?; + + Ok(exports) +} diff --git a/src/main.rs b/src/main.rs deleted file mode 100644 index c3971e0..0000000 --- a/src/main.rs +++ /dev/null @@ -1,18 +0,0 @@ -use std::path::PathBuf; -use structopt::StructOpt; - -mod renderer; -mod script; - -#[derive(StructOpt)] -struct Opt { - infile: PathBuf, -} - -fn main() -> anyhow::Result<()> { - let opt = Opt::from_args(); - - script::run_buildscript(opt.infile)?; - - Ok(()) -} diff --git a/src/renderer.rs b/src/renderer.rs index 983c9ef..ae53fa4 100644 --- a/src/renderer.rs +++ b/src/renderer.rs @@ -36,21 +36,7 @@ pub fn render(sdata: ScriptData) -> anyhow::Result> { ) .context("failed to render template")?; - Ok(minify_html::minify( - rendered.as_bytes(), - &minify_html::Cfg { - do_not_minify_doctype: true, - ensure_spec_compliant_unquoted_attribute_values: false, - keep_closing_tags: true, - keep_html_and_head_opening_tags: true, - keep_spaces_between_attributes: true, - keep_comments: false, - minify_css: true, - minify_js: true, - remove_bangs: true, - remove_processing_instructions: false, - }, - )) + Ok(rendered.into_bytes()) } #[derive(Debug, Serialize)] diff --git a/src/script.rs b/src/script.rs index ac32fd7..e493408 100644 --- a/src/script.rs +++ b/src/script.rs @@ -4,21 +4,7 @@ use std::{fs, path::PathBuf, sync::Arc}; use crate::renderer; -pub fn run_buildscript(infile: PathBuf) -> anyhow::Result<()> { - let script = std::fs::read(infile)?; - - // required to allow C lua libs - let lua = unsafe { Lua::unsafe_new() }; - - lua.globals() - .set("render", lua.create_function(lua_render)?)?; - - lua.load(&script).exec()?; - - Ok(()) -} - -fn lua_render<'lua>(lua: &'lua Lua, args: Table<'lua>) -> Result<(), mlua::Error> { +pub fn lua_render<'lua>(lua: &'lua Lua, args: Table<'lua>) -> Result<(), mlua::Error> { let args = lua.from_value_with::(Value::Table(args), DeserializeOptions::default())?; let path = args.outfile.clone();