pub const MANAGED_MARKER: &str = "# klasp:managed";
pub fn render(schema_version: u32) -> String {
format!(
"#!/usr/bin/env bash\n\
{marker} v{ver} — generated by `klasp install`. Do not edit; re-run install instead.\n\
export KLASP_GATE_SCHEMA={ver}\n\
exec klasp gate \"$@\"\n",
marker = MANAGED_MARKER,
ver = schema_version,
)
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn render_v2_contains_marker_export_and_exec() {
let s = render(2);
assert!(s.starts_with("#!/usr/bin/env bash\n"));
assert!(s.contains(MANAGED_MARKER));
assert!(s.contains("export KLASP_GATE_SCHEMA=2\n"));
assert!(s.contains("exec klasp gate \"$@\"\n"));
}
#[test]
fn render_parameterises_schema_version() {
let s = render(7);
assert!(s.contains("# klasp:managed v7"));
assert!(s.contains("export KLASP_GATE_SCHEMA=7"));
}
#[test]
fn render_ends_with_newline() {
assert!(render(1).ends_with('\n'));
}
}