@@ -138,13 +138,19 @@ fn main() {
138
138
println ! ( "{:<17}\t {:<46}\t {:<7}" , "Name" , "Path" , "Status" ) ;
139
139
}
140
140
let filters = list_m. value_of ( "filter" ) . unwrap_or_default ( ) . to_lowercase ( ) ;
141
+ let mut exercises_done: u16 = 0 ;
141
142
exercises. iter ( ) . for_each ( |e| {
142
143
let fname = format ! ( "{}" , e. path. display( ) ) ;
143
144
let filter_cond = filters
144
145
. split ( ',' )
145
146
. filter ( |f| !f. trim ( ) . is_empty ( ) )
146
147
. any ( |f| e. name . contains ( & f) || fname. contains ( & f) ) ;
147
- let status = if e. looks_done ( ) { "Done" } else { "Pending" } ;
148
+ let status = if e. looks_done ( ) {
149
+ exercises_done = exercises_done + 1 ;
150
+ "Done"
151
+ } else {
152
+ "Pending"
153
+ } ;
148
154
let solve_cond = {
149
155
( e. looks_done ( ) && list_m. is_present ( "solved" ) )
150
156
|| ( !e. looks_done ( ) && list_m. is_present ( "unsolved" ) )
@@ -173,6 +179,13 @@ fn main() {
173
179
}
174
180
}
175
181
} ) ;
182
+ let percentage_progress = exercises_done as f32 / exercises. len ( ) as f32 ;
183
+ println ! (
184
+ "Progress: You completed {} / {} exercises ({:.2} %)." ,
185
+ exercises_done,
186
+ exercises. len( ) ,
187
+ percentage_progress
188
+ ) ;
176
189
std:: process:: exit ( 0 ) ;
177
190
}
178
191
@@ -314,7 +327,7 @@ fn watch(exercises: &[Exercise], verbose: bool) -> notify::Result<()> {
314
327
. chain (
315
328
exercises
316
329
. iter ( )
317
- . filter ( |e| !e. looks_done ( ) && !filepath. ends_with ( & e. path ) )
330
+ . filter ( |e| !e. looks_done ( ) && !filepath. ends_with ( & e. path ) ) ,
318
331
) ;
319
332
clear_screen ( ) ;
320
333
match verify ( pending_exercises, verbose) {
0 commit comments