use docblock::SourceFile;
use sha2::{Digest, Sha256};
pub fn sign_source(source: &str) -> String {
let mut source_file = SourceFile::from_source(source);
let hash = hex::encode(Sha256::digest(source_file.rest.as_bytes()));
source_file.set_directive("generated", None);
source_file.set_directive("signed_source", Some(&hash));
source_file.to_source()
}
#[cfg(test)]
mod tests {
use super::*;
use k9::*;
#[test]
fn test_signature() {
let source = r#"
let a = "hello world";
console.log(1 + a);
"#;
let signed = sign_source(source);
snapshot!(
signed,
r#"
/*
* @generated
* @signed_source 9c5583c9e6a1018a3ea5e32943816cd0dadd967f714aba23e31d67fd388a417d
*/
let a = "hello world";
console.log(1 + a);
"#
);
}
}