Source code for pymyinstall.win_installer.win_setup_mark_step
"""
Functions to remember a step was done, uses files.
:githublink:`%|py|5`
"""
import os
import datetime
import sys
if sys.version_info[0] == 2:
from codecs import open
[docs]def mark_step(folder, step_name, content=""):
"""
create a file to remember was done (running it again takes times)
:param folder: folder where to write
:param step_name: step_name
:param content: what to write in the file
:return: created file name
:githublink:`%|py|21`
"""
name = os.path.join(folder, "log.step.{0}.txt".format(step_name))
with open(name, "w", encoding="utf8") as f:
f.write("# -- STEP {0} DONE --\n\n".format(step_name))
f.write("# -- {0}\n\n".format(datetime.datetime.now()))
if content is not None:
f.write(content)
f.write("\n# -- {0}".format(datetime.datetime.now()))
return name
[docs]def is_step_done(folder, step_name):
"""
checks a file was written with function :func:`mark_step <pymyinstall.win_installer.win_setup_mark_step.mark_step>`
:param folder: folder where to write
:param step_name: step_name
:return: boolean
:githublink:`%|py|39`
"""
name = os.path.join(folder, "log.step.{0}.txt".format(step_name))
if not os.path.exists(name):
return False
s = "# -- STEP {0} DONE --\n\n".format(step_name)
with open(name, "r", encoding="utf8") as f:
content = f.read()
if content.startswith(s):
with open(name, "a", encoding="utf8") as f:
f.write("\n# skip {0}".format(datetime.datetime.now()))
return True
else:
return False