feat: write quarto assignment with encryption
This commit is contained in:
@@ -195,6 +195,55 @@ pub(crate) fn export(cli: &Cli, sub: &ExportCommand) -> Result<Outcome> {
|
||||
}
|
||||
Ok(Outcome::Ok)
|
||||
}
|
||||
ExportCommand::Site {
|
||||
id,
|
||||
form,
|
||||
out,
|
||||
password,
|
||||
assets,
|
||||
} => {
|
||||
{
|
||||
use coursebank::site;
|
||||
let record = load_record(&catalog, id)?;
|
||||
let form = pick_form(&record, form)?;
|
||||
let dir = out.clone().unwrap_or(build);
|
||||
std::fs::create_dir_all(&dir)?;
|
||||
|
||||
let rendered = site::render(
|
||||
&catalog,
|
||||
&record,
|
||||
site::Options {
|
||||
form,
|
||||
password: password.clone(),
|
||||
},
|
||||
)?;
|
||||
|
||||
let qmd = dir.join("_questions.qmd");
|
||||
yaml::write_text(&qmd, &rendered.questions_qmd)?;
|
||||
let json = dir.join(format!("{}-solutions.json", rendered.page));
|
||||
yaml::write_text(&json, &rendered.solutions_json)?;
|
||||
|
||||
if let Some(asset_dir) = assets {
|
||||
std::fs::create_dir_all(asset_dir)?;
|
||||
for (name, body) in site::assets() {
|
||||
let path = asset_dir.join(name);
|
||||
yaml::write_text(&path, body)?;
|
||||
if !cli.quiet {
|
||||
println!("wrote {}", path.display());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// The password cannot be recovered from the files; always print it.
|
||||
println!("password for {}: {}", rendered.page, rendered.password);
|
||||
if !cli.quiet {
|
||||
println!("wrote {}", qmd.display());
|
||||
println!("wrote {}", json.display());
|
||||
println!("\nInclude in the page with: {{{{< include _questions.qmd >}}}}");
|
||||
}
|
||||
Ok(Outcome::Ok)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user