mirror of
https://github.com/zulip/zulip.git
synced 2025-11-16 03:41:58 +00:00
In dev always include the currently active cache in order not to break current installation in case dependencies are updated with bumping the provision version.
57 lines
1.9 KiB
Python
Executable File
57 lines
1.9 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
import argparse
|
|
import os
|
|
import sys
|
|
|
|
if False:
|
|
from typing import Set, Text
|
|
|
|
ZULIP_PATH = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
|
sys.path.append(ZULIP_PATH)
|
|
from scripts.lib.hash_reqs import expand_reqs, hash_deps
|
|
from scripts.lib.zulip_tools import GENERIC_CACHE_SCRIPT_PARSER, \
|
|
get_caches_to_be_purged, get_environment, get_recent_deployments, \
|
|
purge_unused_caches
|
|
|
|
ENV = get_environment()
|
|
VENV_CACHE_DIR = '/srv/zulip-venv-cache'
|
|
if ENV == "travis":
|
|
VENV_CACHE_DIR = os.path.join(os.environ["HOME"], "zulip-venv-cache")
|
|
|
|
def parse_args():
|
|
# type: () -> argparse.Namespace
|
|
parser = argparse.ArgumentParser(description="This script cleans unused zulip venv caches.",
|
|
parents=[GENERIC_CACHE_SCRIPT_PARSER, ])
|
|
args = parser.parse_args()
|
|
return args
|
|
|
|
def get_caches_in_use(threshold_days):
|
|
# type: (int) -> Set[Text]
|
|
setups_to_check = set([ZULIP_PATH, ])
|
|
caches_in_use = set()
|
|
|
|
if ENV == "prod":
|
|
setups_to_check |= get_recent_deployments(threshold_days)
|
|
if ENV == "dev":
|
|
CACHE_SYMLINK = os.path.join(os.path.dirname(ZULIP_PATH), "zulip-py3-venv")
|
|
CURRENT_CACHE = os.path.dirname(os.path.realpath(CACHE_SYMLINK))
|
|
caches_in_use.add(CURRENT_CACHE)
|
|
|
|
for path in setups_to_check:
|
|
for filename in os.listdir(os.path.join(path, "requirements")):
|
|
requirements_file = os.path.join(path, "requirements", filename)
|
|
deps = expand_reqs(requirements_file)
|
|
hash_val = hash_deps(deps)
|
|
caches_in_use.add(os.path.join(VENV_CACHE_DIR, hash_val))
|
|
|
|
return caches_in_use
|
|
|
|
def main():
|
|
# type: () -> None
|
|
args = parse_args()
|
|
caches_in_use = get_caches_in_use(args.threshold_days)
|
|
purge_unused_caches(VENV_CACHE_DIR, caches_in_use, args.threshold_days, args.dry_run, "venv")
|
|
|
|
if __name__ == "__main__":
|
|
main()
|