Jelajahi Sumber

:wrench: add legacy file clean support

China Kassapa 2 bulan lalu
induk
melakukan
4634b7256b

+ 39 - 10
deploy/roles/mint-v2.3/files/clean.py

@@ -1,17 +1,46 @@
 #!/usr/bin/env python3
 
 import logging
+import argparse
+import os
+import sys
+import shutil
 
 logger = logging.getLogger(__name__)
 
-def launch(keeps):
-    # TODO
-    root = "change-me"
-    logger.warning("try to clean %s and keep %d records", root, keeps)
-    logger.info("done.")
-    
+
+def launch(root, keeps, debug):
+    logger.warning("try to clean %s and keep recent %d items", root, keeps)
+    items = os.listdir(root)
+    logger.debug("found %d files", len(items))
+    if len(items) <= keeps:
+        return
+    items.sort(key=lambda it: os.path.getmtime(
+        os.path.join(root, it)), reverse=True)
+    items = items[keeps:]
+    for it in items:
+        it = os.path.join(root, it)
+        logger.warning("delete %s", it)
+        if not debug:
+            shutil.rmtree(it)
+
+
 if __name__ == "__main__":
-    logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(levelname).1s %(name)s: %(message)s')
-    # TODO
-    launch(7)
-    
+    parser = argparse.ArgumentParser(
+        prog='mint',
+        description='Clean legacy files',
+        epilog='https://github.com/iapt-platform/mint')
+    parser.add_argument('-k', '--keep', type=int, default=7)
+    parser.add_argument('-d', '--debug', action='store_true')
+    parser.add_argument('-v', '--version', action='version',
+                        version='%(prog)s v2026.1.17')
+    args = parser.parse_args()
+    logging.basicConfig(
+        level=logging.DEBUG if args.debug else logging.INFO, format='%(asctime)s %(levelname).1s %(name)s: %(message)s')
+    logging.debug('run on debug mode')
+    if args.keep < 2:
+        logging.error("keeps must lager than 2")
+        sys.exit(1)
+    root = os.getcwd()
+    launch(root, args.keep, args.debug)
+    logger.info("done.")

+ 2 - 2
deploy/roles/mint-v2.3/tasks/config.yml

@@ -18,12 +18,12 @@
 
 - name: Upload ai-translate.toml
   ansible.builtin.template:
-    src: ai-translate.j2
+    src: ai-translate.toml.j2
     dest: "{{ app_deploy_target }}/ai-translate/config.toml"
     mode: "0444"
 
 - name: Upload open-ai-server.json
   ansible.builtin.template:
-    src: open-ai-server.json
+    src: open-ai-server.json.j2
     dest: "{{ app_deploy_target }}/open-ai-server/config.json"
     mode: "0444"

+ 1 - 2
deploy/roles/mint-v2.3/templates/clean.service.j2

@@ -6,8 +6,7 @@ After=network-online.target
 [Service]
 Type=oneshot
 User=root
-Group=root
-ExecStart=/usr/bin/python3 clean.py -k {{ app_deploy_keeps }}
+ExecStart=/usr/bin/python3 clean.py -d -k {{ app_deploy_keeps }}
 WorkingDirectory={{ app_deploy_target | dirname }}
 
 [Install]