clean-unused-caches: Add script to remove redundant yarn cache.

This commit removes redundant yarn cache by removing the old
version directories, i.e. All the directory under `~/.cache/yarn`
except `~/.cache/yarn/v6` (current version directory).

Fixes #15964.
This commit is contained in:
Riken Shah
2021-04-25 08:37:14 +00:00
committed by Tim Abbott
parent c3247128ff
commit 1288dcbaaf
2 changed files with 49 additions and 1 deletions

View File

@@ -4,7 +4,7 @@ import sys
ZULIP_PATH = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
sys.path.append(ZULIP_PATH)
from scripts.lib import clean_emoji_cache, clean_node_cache, clean_venv_cache
from scripts.lib import clean_emoji_cache, clean_node_cache, clean_venv_cache, clean_yarn_cache
from scripts.lib.zulip_tools import parse_cache_script_args
@@ -13,6 +13,7 @@ def main() -> None:
os.chdir(ZULIP_PATH)
clean_venv_cache.main(args)
clean_node_cache.main(args)
clean_yarn_cache.main(args)
clean_emoji_cache.main(args)

View File

@@ -0,0 +1,47 @@
#!/usr/bin/env python3
import argparse
import os
import sys
ZULIP_PATH = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
sys.path.append(ZULIP_PATH)
from scripts.lib.zulip_tools import may_be_perform_purging, parse_cache_script_args
YARN_CACHE_PATH = os.path.expanduser("~/.cache/yarn/")
CURRENT_VERSION = "v6"
def remove_unused_versions_dir(args: argparse.Namespace) -> None:
"""Deletes cache data from obsolete Yarn versions.
Yarn does not provide an interface for removing obsolete data from
~/.cache/yarn for packages that you haven't installed in years; but one
can always remove the cache entirely.
"""
current_version_dir = os.path.join(YARN_CACHE_PATH, CURRENT_VERSION)
dirs_to_purge = set(
[
os.path.join(YARN_CACHE_PATH, directory)
for directory in os.listdir(YARN_CACHE_PATH)
if directory != CURRENT_VERSION
]
)
may_be_perform_purging(
dirs_to_purge,
{current_version_dir},
"yarn cache",
args.dry_run,
args.verbose,
args.no_headings,
)
def main(args: argparse.Namespace) -> None:
remove_unused_versions_dir(args)
if __name__ == "__main__":
args = parse_cache_script_args("This script cleans redundant Zulip yarn caches.")
main(args)