54 lines
1.7 KiB
Python
54 lines
1.7 KiB
Python
import argparse
|
||
import json
|
||
from erminig.controllers.evezh import check
|
||
from erminig.models.db import init_db
|
||
|
||
|
||
def main():
|
||
parser = argparse.ArgumentParser(description="Evezh – Veille logicielle artisanale")
|
||
subparsers = parser.add_subparsers(dest="command")
|
||
|
||
init_parser = subparsers.add_parser("init", help="Initialiser la base de données")
|
||
|
||
check_parser = subparsers.add_parser("check")
|
||
check_parser.add_argument("--config")
|
||
check_parser.add_argument("--output")
|
||
check_parser.add_argument("--stdout", action="store_true")
|
||
|
||
sync_parser = subparsers.add_parser("sync")
|
||
sync_parser.add_argument("--config", required=True)
|
||
sync_parser.add_argument("--db", required=True)
|
||
|
||
args = parser.parse_args()
|
||
|
||
if args.command == "init":
|
||
init_db()
|
||
|
||
if args.command == "check":
|
||
state = check.load_state(args.output) if args.output else {}
|
||
results = check.check_versions(args.config, state)
|
||
new_state = {}
|
||
updated = []
|
||
|
||
for r in results:
|
||
name, version, url = r["name"], r["version"], r["url"]
|
||
if state.get(name, {}).get("version") != version:
|
||
updated.append(r)
|
||
new_state[name] = {"version": version, "url": url}
|
||
|
||
if args.output:
|
||
check.save_state(args.output, new_state)
|
||
|
||
if updated:
|
||
print(f"\n{len(updated)} mise(s) à jour détectée(s) :")
|
||
for r in updated:
|
||
print(f" - {r['name']} → {r['version']}")
|
||
else:
|
||
print("Aucun changement détecté.")
|
||
|
||
if args.stdout:
|
||
print("\n--- Résultat complet ---")
|
||
print(json.dumps(results, indent=2))
|
||
|
||
elif args.command == "sync":
|
||
check.sync_db(args.config)
|