import os.path
import sys

from piket_client.gui import PiketMainWindow

icons_dir = PiketMainWindow.icons_dir

systemd_user_dir = os.path.expanduser("~/.config/systemd/user")

python_interpreter_dir = os.path.dirname(sys.executable)
uwsgi_path = os.path.join(python_interpreter_dir, "uwsgi")
piket_client_path = os.path.join(python_interpreter_dir, "piket-client")
piket_manage_people_path = os.path.join(python_interpreter_dir, "piket-manage-people")

server_template = f"""[Unit]
Description=piket server daemon

[Service]
ExecStart={uwsgi_path} --http :5000 --master --threads 2 --module piket_server:app
KillSignal=SIGINT
Type=notify
NotifyAccess=all
Environment=SENTRY_DSN={os.environ.get("SENTRY_DSN")}

[Install]
WantedBy=default.target
"""

client_template = f"""[Unit]
Description=piket client
Requires=piket-server.service
After=piket-server.service

[Service]
ExecStart={piket_client_path}
Environment=SENTRY_DSN={os.environ.get("SENTRY_DSN")}

[Install]
WantedBy=graphical.target
"""

os.makedirs(systemd_user_dir, exist_ok=True)

with open(os.path.join(systemd_user_dir, "piket-server.service"), "w") as f:
    f.write(server_template)

with open(os.path.join(systemd_user_dir, "piket-client.service"), "w") as f:
    f.write(client_template)

# Desktop files
main_template = f"""[Desktop Entry]
Version=0.1.0
Type=Application
Name=Start Bierlijst
Terminal=False
Comment=V-V-V-OUWEN!!!
Exec=systemctl --user start piket-client
Icon={os.path.join(icons_dir, "white_beer_bottle.svg")}
"""

manage_people = f"""[Desktop Entry]
Version=0.1.0
Type=Application
Name=Personen aanwezig
Terminal=False
Comment=Stel in wie er is.
Exec={sys.executable} -m piket_client.set_active
Icon={os.path.join(icons_dir, "white_add_person.svg")}
"""

with open(
    os.path.join(os.path.expanduser("~/Desktop"), "piket-client.desktop"), "w"
) as f:
    f.write(main_template)

with open(
    os.path.join(os.path.expanduser("~/Desktop"), "piket-manage-people.desktop"), "w"
) as f:
    f.write(manage_people)

print("Done! Don't forget to systemctl --user daemon-reload.")