1
+ // Copyright (C) 2023, AltaModa Technologies, LLC. All rights reserved.
2
+ //
3
+ // This project is licensed under the terms of the MIT license (cf. LICENSE file in root).
4
+ //
5
+
6
+ extern crate pta_ledger;
7
+ extern crate pta_parser;
8
+
9
+
10
+ use log:: { info, warn, error} ;
11
+
12
+ // TODO: how to isolate pest so clients can just use lib (w/o requiring pest as here)
13
+ use pta_ledger:: ledger_builder:: LedgerBuilder ;
14
+
15
+
16
+
17
+ fn main ( ) -> Result < ( ) , Box < dyn std:: error:: Error > > {
18
+ // TODO: CLI improvements
19
+ // - exec with path of file to parse
20
+ // - optionally output parse results (should be equivalent to input file)
21
+
22
+ // TODO: consider flag to use init_timed to include time per line
23
+ pretty_env_logger:: init ( ) ;
24
+
25
+ let pb = std:: env:: current_dir ( ) ?;
26
+ let p = pb. join ( "testdata/basic-ledger" ) ;
27
+
28
+ info ! ( "Input file: {:?}" , p) ;
29
+
30
+ let mut bldr = LedgerBuilder :: default ( ) ;
31
+ match std:: fs:: read_to_string ( p) {
32
+ Ok ( ledger) => {
33
+ info ! ( "String length from input: {}" , ledger. len( ) ) ;
34
+ match bldr. from_string ( & ledger) {
35
+ Ok ( _parsed) => {
36
+ info ! ( "Successfully parsed into ParsedLedger" ) ;
37
+ return Ok ( ( ) ) ;
38
+ } ,
39
+
40
+ Err ( e) => {
41
+ error ! ( "LedgerBuilder failed with {:}" , e) ;
42
+ return Err ( e) ;
43
+ }
44
+ }
45
+ }
46
+
47
+ Err ( e) => {
48
+ warn ! ( "failed to read file as string; {e}" ) ;
49
+ return Err ( Box :: new ( e) ) ;
50
+ }
51
+ }
52
+
53
+ }
54
+
55
+
56
+
57
+ #[ cfg( test) ]
58
+ mod cli_tests {
59
+
60
+ use pta_parser:: parsers:: generic:: Parser ;
61
+
62
+ #[ test]
63
+ fn can_create_parser ( ) {
64
+ // simply verifies that the parser can be instantiated, ensuring accessibility
65
+ let _ = Parser { } ;
66
+ }
67
+ }
0 commit comments