rust-mv3u/src/main.rs

52 lines
1.4 KiB
Rust
Raw Normal View History

2018-10-28 11:24:37 +01:00
use std::fs::File;
use std::io::{BufRead, BufReader, Result};
use std::collections::HashMap;
2018-11-10 22:18:28 +01:00
use std::env;
2018-10-28 11:24:37 +01:00
use std::fs;
2018-11-10 22:18:28 +01:00
use std::process;
2018-10-28 11:24:37 +01:00
2018-11-11 10:55:33 +01:00
fn apply_renames(filename: &String, renames: &HashMap<String, String>) -> Result<()> {
let mut outputs = Vec::new();
let pls_file = File::open(filename)?;
for entry in BufReader::new(pls_file).lines() {
let entry = entry?;
let new = renames.get(&entry).unwrap_or(&entry).to_string();
outputs.push(new);
}
let data = outputs.join("\n");
fs::write(filename, data).expect("unable to write");
Ok(())
}
2018-10-28 11:24:37 +01:00
fn main() -> Result<()> {
2018-11-10 22:18:28 +01:00
let args: Vec<String> = env::args().collect();
if args.len() < 3 {
println!("At least two arguments are required");
process::exit(1);
}
let rename_file = &args[1];
let file = File::open(rename_file)?;
2018-10-28 11:24:37 +01:00
let mut renames = HashMap::new();
for line in BufReader::new(file).lines() {
let line = line?;
let split: Vec<&str> = line.split("\t\t").collect();
renames.insert(split[0].to_string(), split[1].to_string());
}
2018-11-11 10:55:33 +01:00
for r in &args[2..] {
try!(apply_renames(&r, &renames));
2018-10-28 11:24:37 +01:00
/*
2018-11-11 10:55:33 +01:00
match apply_renames(&r, &renames) {
Ok(()) => println!("Successfully processed renames for {}", r)
},
_ => println!("Error processing {}", r);
2018-10-28 11:24:37 +01:00
*/
}
2018-11-11 10:55:33 +01:00
Ok(())
2018-10-28 11:24:37 +01:00
}