| 338 | return self._config[key] |
| 339 | |
| 340 | def Run(self): |
| 341 | # Restore state. |
| 342 | state_file = "%s-state.json" % self._config["PERSISTFILE_BASENAME"] |
| 343 | if not self._state and os.path.exists(state_file): |
| 344 | self._state.update(json.loads(FileToText(state_file))) |
| 345 | |
| 346 | print(">>> Step %d: %s" % (self._number, self._text)) |
| 347 | try: |
| 348 | return self.RunStep() |
| 349 | finally: |
| 350 | # Persist state. |
| 351 | TextToFile(json.dumps(self._state), state_file) |
| 352 | |
| 353 | def RunStep(self): # pragma: no cover |
| 354 | raise NotImplementedError |