@@ -894,6 +894,29 @@ static void GetWalletBalances(UniValue& result)
894
894
result.pushKV (" balances" , balances);
895
895
}
896
896
897
+ /* *
898
+ * GetProgressBar contructs a progress bar with 5% intervals.
899
+ *
900
+ * @param[in] progress The proportion of the progress bar to be filled between 0 and 1.
901
+ * @param[out] progress_bar String representation of the progress bar.
902
+ */
903
+ static void GetProgressBar (double progress, std::string& progress_bar)
904
+ {
905
+ if (progress < 0 || progress > 1 ) return ;
906
+
907
+ static constexpr double INCREMENT{0.05 };
908
+ static const std::string COMPLETE_BAR{" \u2592 " };
909
+ static const std::string INCOMPLETE_BAR{" \u2591 " };
910
+
911
+ for (int i = 0 ; i < progress / INCREMENT; ++i) {
912
+ progress_bar += COMPLETE_BAR;
913
+ }
914
+
915
+ for (int i = 0 ; i < (1 - progress) / INCREMENT; ++i) {
916
+ progress_bar += INCOMPLETE_BAR;
917
+ }
918
+ }
919
+
897
920
/* *
898
921
* ParseGetInfoResult takes in -getinfo result in UniValue object and parses it
899
922
* into a user friendly UniValue string to be printed on the console.
@@ -936,7 +959,17 @@ static void ParseGetInfoResult(UniValue& result)
936
959
std::string result_string = strprintf (" %sChain: %s%s\n " , BLUE, result[" chain" ].getValStr (), RESET);
937
960
result_string += strprintf (" Blocks: %s\n " , result[" blocks" ].getValStr ());
938
961
result_string += strprintf (" Headers: %s\n " , result[" headers" ].getValStr ());
939
- result_string += strprintf (" Verification progress: %.4f%%\n " , result[" verificationprogress" ].get_real () * 100 );
962
+
963
+ const double ibd_progress{result[" verificationprogress" ].get_real ()};
964
+ std::string ibd_progress_bar;
965
+ // Display the progress bar only if IBD progress is less than 99%
966
+ if (ibd_progress < 0.99 ) {
967
+ GetProgressBar (ibd_progress, ibd_progress_bar);
968
+ // Add padding between progress bar and IBD progress
969
+ ibd_progress_bar += " " ;
970
+ }
971
+
972
+ result_string += strprintf (" Verification progress: %s%.4f%%\n " , ibd_progress_bar, ibd_progress * 100 );
940
973
result_string += strprintf (" Difficulty: %s\n\n " , result[" difficulty" ].getValStr ());
941
974
942
975
result_string += strprintf (
0 commit comments