summaryrefslogtreecommitdiff
path: root/rust
diff options
context:
space:
mode:
authorJoe Carstairs <me@joeac.net>2024-11-27 18:44:23 +0000
committerJoe Carstairs <me@joeac.net>2024-11-27 18:44:23 +0000
commit817f6cb7e48e2517dd1612c14357d9aa066a9e53 (patch)
treeb70feb6250bdd65764612aed90938e567bdb9723 /rust
parentb9612b1dfa275be6649f2b54517aac4574f0efc4 (diff)
AB transformer takes DB urls as command line arguments
Diffstat (limited to 'rust')
-rw-r--r--rust/actualbudget_to_schist_transformer/src/main.rs17
-rw-r--r--rust/actualbudget_to_schist_transformer/src/run.rs16
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)?;