#!/usr/bin/env python3
"""Fake `docker` for tests: serves canned `ps`/`inspect` data and records `stop`s.

FAKE_DOCKER_CONTAINERS is a JSON list of inspect records (the shape tt reads:
Id/Name/Config.Image/Mounts). FAKE_DOCKER_STOP_LOG collects stopped ids.
"""

import json
import os
import sys


def _containers() -> list:
    return json.loads(os.environ.get("FAKE_DOCKER_CONTAINERS") or "[]")


def main() -> int:
    args = sys.argv[1:]
    if args[:1] == ["ps"]:
        for entry in _containers():
            print(str(entry.get("Id", ""))[:12])
        return 0
    if args[:1] == ["inspect"]:
        # `--format {{json .}}` is an option value, so only bare ids are targets
        wanted = [a for a in args[1:] if not a.startswith("-") and not a.startswith("{{")]
        for entry in _containers():
            if str(entry.get("Id", ""))[:12] in wanted:
                print(json.dumps(entry))
        return 0
    if args[:1] == ["stop"]:
        log = os.environ.get("FAKE_DOCKER_STOP_LOG")
        if log:
            with open(log, "a") as fh:
                for target in args[1:]:
                    fh.write(target + "\n")
        return 0
    return 0


if __name__ == "__main__":
    sys.exit(main())
