up2k non-e2d fixes:

* respect noforget when loading snaps
* ...but actually forget deleted files otherwise
* insert empty need/hash as necessary
This commit is contained in:
ed 2024-10-13 22:10:27 +00:00
parent 414de88925
commit 705f598b1a

View file

@ -1016,6 +1016,7 @@ class Up2k(object):
vpath = k vpath = k
_, flags = self._expr_idx_filter(flags) _, flags = self._expr_idx_filter(flags)
n4g = bool(flags.get("noforget"))
ft = "\033[0;32m{}{:.0}" ft = "\033[0;32m{}{:.0}"
ff = "\033[0;35m{}{:.0}" ff = "\033[0;35m{}{:.0}"
@ -1073,21 +1074,35 @@ class Up2k(object):
for job in reg2.values(): for job in reg2.values():
job["dwrk"] = job["wark"] job["dwrk"] = job["wark"]
rm = []
for k, job in reg2.items(): for k, job in reg2.items():
job["ptop"] = ptop job["ptop"] = ptop
if "done" in job:
job["need"] = job["hash"] = emptylist
else:
if "need" not in job:
job["need"] = []
if "hash" not in job:
job["hash"] = []
fp = djoin(ptop, job["prel"], job["name"]) fp = djoin(ptop, job["prel"], job["name"])
if bos.path.exists(fp): if bos.path.exists(fp):
reg[k] = job reg[k] = job
if "done" in job: if "done" in job:
job["need"] = job["hash"] = emptylist
continue continue
job["poke"] = time.time() job["poke"] = time.time()
job["busy"] = {} job["busy"] = {}
else: else:
self.log("ign deleted file in snap: [{}]".format(fp)) self.log("ign deleted file in snap: [{}]".format(fp))
if not n4g:
rm.append(k)
continue
for x in rm:
del reg2[x]
if drp is None: if drp is None:
drp = [k for k, v in reg.items() if not v.get("need", [])] drp = [k for k, v in reg.items() if not v["need"]]
else: else:
drp = [x for x in drp if x in reg] drp = [x for x in drp if x in reg]