Move reading musicdb to own function
This commit is contained in:
parent
63d75fd6b6
commit
dc02995496
51
src/main.rs
51
src/main.rs
|
@ -118,6 +118,30 @@ fn get_basename(path: &PathBuf) -> Option<&str> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn read_musicdb(path: &PathBuf) -> Result<musicdb::MusicDB> {
|
||||||
|
let extension = path.extension().and_then(|ext| ext.to_str()).unwrap_or("");
|
||||||
|
|
||||||
|
match extension {
|
||||||
|
"arc" => {
|
||||||
|
let arc_data = fs::read(path)
|
||||||
|
.with_context(|| format!("failed to read musicdb ARC file {}", path.display()))?;
|
||||||
|
|
||||||
|
musicdb::MusicDB::parse_from_startup_arc(&arc_data)
|
||||||
|
.context("failed to parse musicdb from ARC file")
|
||||||
|
}
|
||||||
|
_ => {
|
||||||
|
if extension != "xml" {
|
||||||
|
warn!("Did not find known extension (arc, xml), trying to parse as XML");
|
||||||
|
}
|
||||||
|
|
||||||
|
let musicdb_data = fs::read_to_string(path)
|
||||||
|
.with_context(|| format!("failed to read musicdb XML file {}", path.display()))?;
|
||||||
|
|
||||||
|
musicdb::MusicDB::parse(&musicdb_data).context("failed to parse musicdb XML")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fn main() -> Result<()> {
|
fn main() -> Result<()> {
|
||||||
pretty_env_logger::init();
|
pretty_env_logger::init();
|
||||||
|
|
||||||
|
@ -190,32 +214,7 @@ fn main() -> Result<()> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
SubCommand::MusicDB(opts) => {
|
SubCommand::MusicDB(opts) => {
|
||||||
let extension = opts
|
let musicdb = read_musicdb(&opts.file)?;
|
||||||
.file
|
|
||||||
.extension()
|
|
||||||
.and_then(|ext| ext.to_str())
|
|
||||||
.unwrap_or("");
|
|
||||||
let musicdb = match extension {
|
|
||||||
"arc" => {
|
|
||||||
let arc_data = fs::read(&opts.file).with_context(|| {
|
|
||||||
format!("failed to read musicdb ARC file {}", &opts.file.display())
|
|
||||||
})?;
|
|
||||||
|
|
||||||
musicdb::MusicDB::parse_from_startup_arc(&arc_data)
|
|
||||||
.context("failed to parse musicdb from ARC file")?
|
|
||||||
}
|
|
||||||
_ => {
|
|
||||||
if extension != "xml" {
|
|
||||||
warn!("Did not find known extension (arc, xml), trying to parse as XML");
|
|
||||||
}
|
|
||||||
|
|
||||||
let musicdb_data = fs::read_to_string(&opts.file).with_context(|| {
|
|
||||||
format!("failed to read musicdb XML file {}", &opts.file.display())
|
|
||||||
})?;
|
|
||||||
|
|
||||||
musicdb::MusicDB::parse(&musicdb_data).context("failed to parse musicdb XML")?
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
let mut tw = TabWriter::new(io::stdout());
|
let mut tw = TabWriter::new(io::stdout());
|
||||||
|
|
||||||
|
|
Reference in a new issue