ollie/data/tools/logseq

62 lines
1.7 KiB
Python
Executable File

#!/usr/bin/env python3
import json
import os
import subprocess
import sys
sys.path.insert(0, os.environ.get('OLLIE_TOOLS_PATH', os.path.dirname(os.path.abspath(__file__))))
from _lib.args import parse_args
RESERVED_KEYS = {"command"}
def to_flags(raw: dict) -> list[str]:
"""Convert all non-reserved keys to --key=value flags."""
flags = []
for key, value in raw.items():
if key in RESERVED_KEYS:
continue
if isinstance(value, str):
try:
parsed = json.loads(value)
if isinstance(parsed, dict):
for k, v in parsed.items():
flags.append(f"--{k}={v}")
continue
elif isinstance(parsed, list):
for item in parsed:
flags.append(f"--{key}={item}")
continue
except (json.JSONDecodeError, TypeError):
pass
flags.append(f"--{key}={value}")
elif isinstance(value, list):
for item in value:
flags.append(f"--{key}={item}")
elif isinstance(value, bool):
if value:
flags.append(f"--{key}")
elif isinstance(value, dict):
flags.append(f"--{key}={json.dumps(value)}")
else:
flags.append(f"--{key}={value}")
return flags
args = parse_args()
raw = args.raw()
command = args.require("command")
cmd = ["logseq-cli", command] + to_flags(raw)
result = subprocess.run(cmd, capture_output=True, text=True)
if result.stdout:
sys.stdout.write(result.stdout)
if result.stderr:
sys.stderr.write(result.stderr)
sys.exit(result.returncode)