# -*- coding: utf-8 -*-
"""Cria uma conta no banco do emulador.

    python tools/criar_conta.py <usuario> <senha>

A senha vai por argumento e NAO fica gravada em lugar nenhum: o banco guarda so o
PBKDF2-SHA256 com salt proprio, pelo mesmo _derivar que o login usa. Se a conta ja
existir, a senha e trocada em vez de duplicar a linha (AUTO_REGISTRAR esta desligado,
entao criar aqui e o unico caminho).
"""
import os
import sys

sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "server"))
import db  # noqa: E402


def main() -> int:
    if len(sys.argv) != 3:
        print(__doc__)
        return 2
    usuario, senha = sys.argv[1], sys.argv[2]

    existentes = db.conta_existe(usuario) if hasattr(db, "conta_existe") else None
    if existentes:
        if db.definir_senha(usuario, senha):
            print(f"conta '{usuario}' ja existia -- senha trocada")
            return 0
        print(f"nao consegui trocar a senha de '{usuario}'")
        return 1

    if db.criar_conta(usuario, senha):
        print(f"conta '{usuario}' criada")
        return 0
    # criar_conta falha tambem quando a conta ja existe (chave unica): tenta a troca
    if db.definir_senha(usuario, senha):
        print(f"conta '{usuario}' ja existia -- senha trocada")
        return 0
    print(f"nao consegui criar a conta '{usuario}'")
    return 1


if __name__ == "__main__":
    raise SystemExit(main())
