"""初始管理员只能用命令行创建，不在代码里写死账号（文档第 11 节第 2 项）。"""
import getpass
import sys

from flyway.auth.service import create_user
from flyway.db import get_session_factory


def main(argv: list[str]) -> int:
    if len(argv) != 2 or argv[0] != "create-admin":
        print("usage: python -m flyway.cli create-admin <username>")
        return 2
    password = getpass.getpass("Password: ")
    if password != getpass.getpass("Repeat: "):
        print("Passwords do not match.")
        return 1
    with get_session_factory()() as s, s.begin():
        create_user(s, argv[1], password, admin=True)
    print(f"Administrator {argv[1]} created.")
    return 0


if __name__ == "__main__":
    sys.exit(main(sys.argv[1:]))
