From cace53f8cdd3fe04ceef2801e15a5f7fe8706630 Mon Sep 17 00:00:00 2001 From: Tab Atkins-Bittner Date: Tue, 7 Dec 2021 12:12:54 -0800 Subject: [PATCH] Forgot to add boilerplate folder to the update cleanup step! --- bikeshed/update/README.md | 12 ++++++++++++ bikeshed/update/main.py | 5 ++++- bikeshed/update/manifest.py | 12 ++++++++---- 3 files changed, 24 insertions(+), 5 deletions(-) create mode 100644 bikeshed/update/README.md diff --git a/bikeshed/update/README.md b/bikeshed/update/README.md new file mode 100644 index 0000000000..0d5447d5af --- /dev/null +++ b/bikeshed/update/README.md @@ -0,0 +1,12 @@ +Adding New Update Folders/Files +=============================== + +When adding new folders, files, or types of updateable data entirely, +make sure to update `manifest.py`'s +`knownFiles` (for top-level files) +and `knownFolders` (for top-level folders), +so it knows where to look when generating manifests. + +Also update `main.py`'s `cleanupFiles()`, +so it knows where it can *delete* files, +otherwise phantom paths will stick around over time. \ No newline at end of file diff --git a/bikeshed/update/main.py b/bikeshed/update/main.py index cc8ac7749a..e6549df6c6 100644 --- a/bikeshed/update/main.py +++ b/bikeshed/update/main.py @@ -62,7 +62,7 @@ def update( # fmt: on cleanupFiles(path, touchedPaths=touchedPaths, dryRun=dryRun) - manifest.createManifest(path=path, dryRun=dryRun) + return manifest.createManifest(path=path, dryRun=dryRun) def fixupDataFiles(): @@ -136,6 +136,9 @@ def cleanupFiles(root, touchedPaths, dryRun=False): if touchedPaths["mdn"] is not None: deletableFolders.extend(["mdn"]) paths.update(touchedPaths["mdn"]) + if touchedPaths["boilerplate"] is not None: + deletableFolders.extend(["boilerplate"]) + paths.update(touchedPaths["boilerplate"]) say("Cleaning up old data files...") oldPaths = [] diff --git a/bikeshed/update/manifest.py b/bikeshed/update/manifest.py index 904ce6e2df..db4f7cacc4 100644 --- a/bikeshed/update/manifest.py +++ b/bikeshed/update/manifest.py @@ -164,7 +164,6 @@ def updateByManifest(path, dryRun=False): for filePath, hash in remoteFiles.items(): if hash != localFiles.get(filePath): newPaths.append(filePath) - if not dryRun: deletedPaths = [] for filePath in localFiles: @@ -174,25 +173,30 @@ def updateByManifest(path, dryRun=False): if deletedPaths: print("Deleted {} old data file{}.".format(len(deletedPaths), "s" if len(deletedPaths) > 1 else "")) + newManifest = None if not dryRun: if newPaths: say(f"Updating {len(newPaths)} file{'s' if len(newPaths) > 1 else ''}...") goodPaths, badPaths = asyncio.run(updateFiles(path, newPaths)) + newManifest = createFinishedManifest(remoteManifest, goodPaths, badPaths) try: with open(os.path.join(path, "manifest.txt"), "w", encoding="utf-8") as fh: - fh.write(createFinishedManifest(remoteManifest, goodPaths, badPaths)) + fh.write(newManifest) except Exception as e: warn(f"Couldn't save new manifest file.\n{e}") return False + if newManifest is None: + newManifest = createManifest(path, dryRun=True) + if not badPaths: say("Done!") - return True + return newManifest else: phrase = f"were {len(badPaths)} errors" if len(badPaths) > 1 else "was 1 error" die( f"Done, but there {phrase} (of {len(newPaths)} total) in downloading or saving. Run `bikeshed update` again to retry." ) - return True + return newManifest async def updateFiles(localPrefix, newPaths):