-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathexport.rs
66 lines (59 loc) · 1.9 KB
/
export.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
/*
* Tackler-NG 2024
*
* SPDX-License-Identifier: Apache-2.0
*/
use crate::kernel::Settings;
use crate::model::TxnSet;
pub use equity_exporter::EquityExporter;
pub use equity_exporter::EquitySettings;
use std::error::Error;
use std::io;
use std::path::Path;
use crate::config::ExportType;
pub use identity_exporter::IdentityExporter;
use tackler_rs::create_output_file;
mod equity_exporter;
mod identity_exporter;
pub trait Export {
fn write_export<W: io::Write + ?Sized>(
&self,
cfg: &Settings,
w: &mut W,
txns: &TxnSet<'_>,
) -> Result<(), Box<dyn Error>>;
}
pub fn write_exports<ProgW: io::Write + ?Sized>(
output_dir: &Path,
output_name: &str,
exports: &Vec<ExportType>,
txn_set: &TxnSet<'_>,
settings: &mut Settings,
prog_writer: &mut Option<Box<ProgW>>,
) -> Result<(), Box<dyn Error>> {
for e in exports {
match e {
ExportType::Equity => {
let eq_exporter = EquityExporter {
export_settings: EquitySettings::from(settings)?,
};
let (mut out_writer, path) =
create_output_file(output_dir, output_name, "equity", "txn")?;
eq_exporter.write_export(settings, &mut out_writer, txn_set)?;
if let Some(p) = prog_writer.as_mut() {
writeln!(p, "{:>21} : {}", "Equity Export", path)?;
}
}
ExportType::Identity => {
let id_exporter = IdentityExporter {};
let (mut out_writer, path) =
create_output_file(output_dir, output_name, "identity", "txn")?;
id_exporter.write_export(settings, &mut out_writer, txn_set)?;
if let Some(p) = prog_writer.as_mut() {
writeln!(p, "{:>21} : {}", "Identity Export", path)?;
}
}
}
}
Ok(())
}