diff options
| author | Joe Carstairs <me@joeac.net> | 2024-11-27 18:44:23 +0000 |
|---|---|---|
| committer | Joe Carstairs <me@joeac.net> | 2024-11-27 18:44:23 +0000 |
| commit | 817f6cb7e48e2517dd1612c14357d9aa066a9e53 (patch) | |
| tree | b70feb6250bdd65764612aed90938e567bdb9723 /rust | |
| parent | b9612b1dfa275be6649f2b54517aac4574f0efc4 (diff) | |
AB transformer takes DB urls as command line arguments
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)?; |
