Lines
97.5 %
Functions
37.5 %
mod server;
use review_harvest::index::{check_index, read_entries, write_index};
use std::{error::Error, path::PathBuf};
const HELP: &str = "\
update_ldpc
USAGE:
update_ldpc DIR
FLAGS:
-h, --help Prints help information
";
#[derive(Debug)]
struct Args {
dir: PathBuf,
}
fn parse_path(s: &std::ffi::OsStr) -> Result<std::path::PathBuf, &'static str> {
Ok(s.into())
fn parse_args() -> Result<Args, pico_args::Error> {
let mut pargs = pico_args::Arguments::from_env();
// Help has a higher priority and should be handled separately.
if pargs.contains(["-h", "--help"]) {
print!("{}", HELP);
std::process::exit(0);
let args = Args {
dir: pargs.free_from_os_str(parse_path)?,
};
let remaining_arguments = pargs.finish();
if !remaining_arguments.is_empty() {
eprintln!("There are unused arguments:");
for remaining in remaining_arguments {
if let Ok(remaining) = remaining.into_string() {
eprintln!("Unused argument: {}", remaining);
eprint!("{}", HELP);
std::process::exit(1);
Ok(args)
fn main() -> Result<(), Box<dyn Error>> {
let args = match parse_args() {
Ok(v) => v,
Err(e) => {
eprintln!("Error: {}.", e);
let dir = &args.dir;
let entries = read_entries(dir)?;
write_index(dir, &entries)?;
check_index(dir)?;
Ok(())