1
1
use clap:: Parser ;
2
+ use sbh:: session_buddy:: settings:: get_datetime_value_setting;
3
+ use sbh:: session_buddy:: settings:: get_string_value_setting;
2
4
use serde:: ser:: StdError ;
3
5
4
6
use log:: { error, info} ;
@@ -10,7 +12,50 @@ async fn main() -> Result<(), Box<dyn StdError>> {
10
12
pretty_env_logger:: init ( ) ;
11
13
let args = Args :: parse ( ) ;
12
14
match args. action {
13
- Action :: Backup { db, out } => match database:: backup ( & db, out) . await {
15
+ Action :: Dump { path } => {
16
+ for session in database:: saved_sessions ( & path) . await ? {
17
+ for window in session. windows . iter ( ) {
18
+ match & window. tabs {
19
+ Some ( tabs) => {
20
+ for tab in tabs. iter ( ) {
21
+ match & tab. url {
22
+ Some ( url) => {
23
+ println ! ( "{}" , url) ;
24
+ }
25
+ None => { }
26
+ }
27
+ }
28
+ }
29
+ None => { }
30
+ }
31
+ }
32
+ }
33
+ }
34
+
35
+ Action :: Stats { path } => {
36
+ let installation_id =
37
+ get_string_value_setting ( & path, "Settings" , "installationID" ) . await ?;
38
+
39
+ let installation_date =
40
+ get_datetime_value_setting ( & path, "Settings" , "installationTimeStamp" ) . await ?;
41
+
42
+ let sessions = database:: saved_sessions ( & path) . await ?;
43
+
44
+ let session_count = sessions. len ( ) ;
45
+
46
+ let window_count: i32 = sessions. iter ( ) . map ( |s| s. count_windows ( ) ) . sum ( ) ;
47
+
48
+ let tab_count: i32 = sessions. iter ( ) . map ( |s| s. count_tabs ( ) ) . sum ( ) ;
49
+
50
+ println ! ( "Path: {}" , path. display( ) ) ;
51
+ println ! ( "Installation ID: {}" , installation_id) ;
52
+ println ! ( "Installation Date: {}" , installation_date) ;
53
+ println ! ( "Tabs: {:>5}" , tab_count) ;
54
+ println ! ( "Windows: {:>5}" , window_count) ;
55
+ println ! ( "Sessions: {:>5}" , session_count) ;
56
+ }
57
+
58
+ Action :: Backup { path, out } => match database:: backup ( & path, out) . await {
14
59
Ok ( _) => {
15
60
info ! ( "Database created" ) ;
16
61
}
@@ -37,26 +82,24 @@ async fn main() -> Result<(), Box<dyn StdError>> {
37
82
}
38
83
}
39
84
40
- Action :: Import { database, files } => {
41
- match database:: collect_saved_sessions ( & files) . await {
42
- Ok ( sessions) => {
43
- let mut conn = database:: connect ( & database) . await ?;
44
- match database:: import ( & mut conn, & sessions) . await {
45
- Ok ( ( ) ) => {
46
- info ! ( "Imported {} sessions" , sessions. len( ) ) ;
47
- }
48
- Err ( e) => {
49
- error ! ( "{:?}" , e) ;
50
- std:: process:: exit ( 1 )
51
- }
52
- } ;
53
- }
54
- Err ( e) => {
55
- error ! ( "{:?}" , e) ;
56
- std:: process:: exit ( 1 )
57
- }
85
+ Action :: Import { path, files } => match database:: collect_saved_sessions ( & files) . await {
86
+ Ok ( sessions) => {
87
+ let mut conn = database:: connect ( & path) . await ?;
88
+ match database:: import ( & mut conn, & sessions) . await {
89
+ Ok ( ( ) ) => {
90
+ info ! ( "Imported {} sessions" , sessions. len( ) ) ;
91
+ }
92
+ Err ( e) => {
93
+ error ! ( "{:?}" , e) ;
94
+ std:: process:: exit ( 1 )
95
+ }
96
+ } ;
58
97
}
59
- }
98
+ Err ( e) => {
99
+ error ! ( "{:?}" , e) ;
100
+ std:: process:: exit ( 1 )
101
+ }
102
+ } ,
60
103
61
104
Action :: New { path } => match database:: create ( & path) . await {
62
105
Ok ( result) => {
0 commit comments