]> git.proxmox.com Git - rustc.git/blob - src/tools/collect-license-metadata/src/main.rs
New upstream version 1.67.1+dfsg1
[rustc.git] / src / tools / collect-license-metadata / src / main.rs
1 mod licenses;
2 mod path_tree;
3 mod reuse;
4
5 use crate::licenses::LicensesInterner;
6 use anyhow::Error;
7 use std::path::PathBuf;
8
9 fn main() -> Result<(), Error> {
10 let reuse_exe: PathBuf = std::env::var_os("REUSE_EXE").expect("Missing REUSE_EXE").into();
11 let dest: PathBuf = std::env::var_os("DEST").expect("Missing DEST").into();
12
13 let mut interner = LicensesInterner::new();
14 let paths = crate::reuse::collect(&reuse_exe, &mut interner)?;
15
16 let mut tree = crate::path_tree::build(paths);
17 tree.simplify();
18
19 if let Some(parent) = dest.parent() {
20 std::fs::create_dir_all(parent)?;
21 }
22 std::fs::write(
23 &dest,
24 &serde_json::to_vec_pretty(&serde_json::json!({
25 "files": crate::path_tree::expand_interned_licenses(tree, &interner),
26 }))?,
27 )?;
28
29 Ok(())
30 }