// SPDX-FileCopyrightText: edef // SPDX-License-Identifier: OSL-3.0 use { clap::StructOpt, fossil::Directory, prost::Message, std::{ io::{self, Write}, path::{Path, PathBuf}, }, }; #[derive(clap::Parser)] struct Args { #[clap(name = "PATH")] paths: Vec, } fn main() { let args = Args::parse(); let store = fossil::Store::open("fossil.db").unwrap(); let mut root = Directory::new(); for name in args.paths { let path = Path::new(&name); let name = path .file_name() .and_then(|s| s.to_str()) .expect("invalid path") .to_owned(); root.children.insert(name, store.add_path(path)); } let mut stdout = io::stdout(); stdout.write_all(&root.into_pb().encode_to_vec()).unwrap(); }