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
}