dotune 0.1.2

A cross-platform dotfile manager configured with Lua
use std::sync::Arc;

use mlua::prelude::*;

use super::lua_exec::execute_root_script;
use crate::cli;
use crate::model::{Instruction, SystemInfo};

pub fn run_config_scripts(
    cli_args: &cli::Args,
    system_info: Arc<SystemInfo>,
) -> LuaResult<Vec<Instruction>> {
    let lua = Lua::new_with(
        LuaStdLib::STRING | LuaStdLib::TABLE | LuaStdLib::UTF8,
        LuaOptions::default(),
    )?;

    lua.set_app_data(Vec::<Instruction>::new());

    execute_root_script(&lua, cli_args, system_info)?;

    Ok(lua
        .remove_app_data::<Vec<Instruction>>()
        .expect("instruction list is initialized before executing scripts"))
}