diff options
Diffstat (limited to 'rust')
| -rw-r--r-- | rust/actualbudget_to_schist_transformer/src/main.rs | 17 | ||||
| -rw-r--r-- | rust/actualbudget_to_schist_transformer/src/run.rs | 16 |
2 files changed, 27 insertions, 6 deletions
diff --git a/rust/actualbudget_to_schist_transformer/src/main.rs b/rust/actualbudget_to_schist_transformer/src/main.rs index 987cd72..875ed5a 100644 --- a/rust/actualbudget_to_schist_transformer/src/main.rs +++ b/rust/actualbudget_to_schist_transformer/src/main.rs @@ -1,5 +1,18 @@ -use anyhow::Result; +use anyhow::{bail, Result}; fn main() -> Result<()> { - actualbudget_to_schist_transformer::run::run() + let args: Vec<String> = std::env::args().collect(); + + if args.len() < 2 { + bail!("too few arguments. usage: actualbudget_to_schist_transformer <in> <out>"); + } else if args.len() > 2 { + bail!("too many arguments. usage: actualbudget_to_schist_transformer <in> <out>"); + } + + let in_db_url = args.get(0).unwrap(); + let out_db_url = args.get(1).unwrap(); + + actualbudget_to_schist_transformer::run::run(in_db_url, out_db_url)?; + + Ok(()) } diff --git a/rust/actualbudget_to_schist_transformer/src/run.rs b/rust/actualbudget_to_schist_transformer/src/run.rs index 77f0e45..3c88589 100644 --- a/rust/actualbudget_to_schist_transformer/src/run.rs +++ b/rust/actualbudget_to_schist_transformer/src/run.rs @@ -1,11 +1,19 @@ -use anyhow::Result; +use anyhow::{Context, Result}; use diesel::{Connection, SqliteConnection}; use crate::{actualbudget_state::read_actualbudget_state, schist_state::export_schist_state, transform_state::transform_state}; -pub fn run() -> Result<()> { - let actualbudget_connection = &mut SqliteConnection::establish("in.sqlite").unwrap(); - let schist_connection = &mut SqliteConnection::establish("out.sqlite").unwrap(); +pub fn run(in_db_url: &str, out_db_url: &str) -> Result<()> { + let actualbudget_connection = &mut SqliteConnection::establish(in_db_url) + .with_context(|| format!( + "failed to establish connection to input database at {}", + in_db_url, + ))?; + let schist_connection = &mut SqliteConnection::establish(out_db_url) + .with_context(|| format!( + "failed to establish connection to output database at {}", + out_db_url, + ))?; let actualbudget_state = read_actualbudget_state(actualbudget_connection)?; let schist_state = transform_state(actualbudget_state)?; |
