When a process is running for a long time, allow the user to interrupt it (e.g. by pressing ctrl-c). Once interrupted, it should prompt whether the user wants it to Resume what it was doing, Skip the step it was on and proceed with the next one, write the data collected so far and then exit, or exit immediately.
All such actions should be handled gracefully (e.g. if it was downloading data, the rows that were already populated should show up in the final result if the user selects to stop the step it was on and proceed to the next one, etc).
When a process is running for a long time, allow the user to interrupt it (e.g. by pressing ctrl-c). Once interrupted, it should prompt whether the user wants it to Resume what it was doing, Skip the step it was on and proceed with the next one, write the data collected so far and then exit, or exit immediately.
All such actions should be handled gracefully (e.g. if it was downloading data, the rows that were already populated should show up in the final result if the user selects to stop the step it was on and proceed to the next one, etc).