* Colored report data is generated during obj instantiation
* Code has been moved into its own function
* Entire colored string is now stored for each Obj
* (Should make show_selection, etc more mode/Obj agnostic)
* loopback_dev vs image_path is now better separated
* losetup is called in ImageObj.set_details()
* loopback -D is still called during program cleanup/wrapup
* get_device_size_in_bytes() has been renamed get_size_in_bytes()
* load_map() is called on BlockPair() instantiation
* This partially replaces resume_from_map()
* Also fixed improper method declarations lacking the self argument
Added two classes:
* BlockPair()
* Track source/dest pair specific data
* update_progress() method for its own data
* RecoveryState()
* Track BlockPair objects and overall state
* update_progress() method for overall data
Reasons:
* Code readability
* Better status updates, code currently split between:
* get_recovery_scope_size()
* resume_from_map()
* update_progress()
* Functions that should probably be merged into other functions:
* get_recovery_scope_size()
* set_dest_image_paths()
* check_dest_paths()
* Logic that needs to be cleaned up:
* Calculating overall recovery size
* Pass "Done"ness and status strings need separated
* Pass "Done"ness at the device and overall levels
* Updating output for side pane status display
* --test-mode disabled by default
* Fixed bug that prevented escaping auto_run via Ctrl-c
* Fixed no-trim / no-scrape flag handling
* Only proceed device(s) have been selected in menu_select_children
* Added read_map_file() which uses ddrescuelog to create dict of current state
* Added --test-mode= option to expert menu
* Add size (in bytes) to all devs
* Allows to calculate real total percent recovered
* Detect 100% completion via ddrescuelog -D
* Moved mark_complete / mark_incomplete code to update_progress()
* Update progress every 30s during ddrescue passes
* Fixed auto_run logic
* Enabled by default
* Based on static thresholds per pass.
* Pass 1: 85%
* Pass 2: 98%
* If using child devices, all must be above the threshold to continue
* Updating device / child device status/progress done in mark_*() functions
* Add current pass description to main menu
* Current pass (overall) only updated if all children have passed
* Fix Pass 4 crash
* Refresh rate is now handled by 'watch --interval'
* Allows for much simpler ddrescue execution / tracking
* Removed all 'SMART Report' sections from functions/ddrescue.py
* functions/hw_diags.py has been further extended
* Supports full device paths (only for displaying attributes ATM)
* Adds a timestamp when only displaying attributes
* Common code moved to select_device()
* Existing select_device() renamed menu_select_device()
* Fixed skip_device code
* Refactored source/dest vars into dicts
* Added confirmation after source/dest are selected