life-noc/scripts/life_noc_input.py

91 lines
2.5 KiB
Python
Executable file
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env python3
from __future__ import annotations
from pathlib import Path
import sys
import argparse
import yaml
ROOT = Path(__file__).resolve().parents[1]
if str(ROOT) not in sys.path:
sys.path.insert(0, str(ROOT))
from lib.life_noc_inputs import list_items, get_item, set_item, complete_item
def cmd_set(args: argparse.Namespace) -> int:
set_item(args.domain, args.item_key, args.value, origin=args.origin)
print(f"Mis à jour: {args.domain} -> {args.item_key}")
return 0
def cmd_complete(args: argparse.Namespace) -> int:
complete_item(args.domain, args.item_key, origin=args.origin)
print(f"Complété: {args.domain} -> {args.item_key}")
return 0
def cmd_get(args: argparse.Namespace) -> int:
try:
item = get_item(args.domain, args.item_key)
except KeyError:
print(f"Item introuvable: {args.item_key}", file=sys.stderr)
return 1
print(
yaml.safe_dump(
{args.item_key: item},
sort_keys=False,
allow_unicode=True,
).strip()
)
return 0
def cmd_list(args: argparse.Namespace) -> int:
for key in list_items(args.domain):
print(key)
return 0
def build_parser() -> argparse.ArgumentParser:
parser = argparse.ArgumentParser(description="Gestion des intrants Life-NOC")
sub = parser.add_subparsers(dest="command", required=True)
p_set = sub.add_parser("set", help="Met à jour un intrant")
p_set.add_argument("domain")
p_set.add_argument("item_key")
p_set.add_argument("value")
p_set.add_argument("--origin", default="manual")
p_set.set_defaults(func=cmd_set)
p_complete = sub.add_parser("complete", help="Marque un item comme complété maintenant")
p_complete.add_argument("domain")
p_complete.add_argument("item_key")
p_complete.add_argument("--origin", default="manual")
p_complete.set_defaults(func=cmd_complete)
p_get = sub.add_parser("get", help="Lit un intrant")
p_get.add_argument("domain")
p_get.add_argument("item_key")
p_get.set_defaults(func=cmd_get)
p_list = sub.add_parser("list", help="Liste les intrants dun domaine")
p_list.add_argument("domain")
p_list.set_defaults(func=cmd_list)
return parser
def main() -> int:
parser = build_parser()
args = parser.parse_args()
try:
return args.func(args)
except ValueError as exc:
print(f"Erreur: {exc}", file=sys.stderr)
return 1
if __name__ == "__main__":
raise SystemExit(main())