dockge-cli/dockge_cli/components/run.py
Firq 84571f1692
All checks were successful
/ backend-pylint (push) Successful in 11s
More commands
2024-07-02 21:45:56 +02:00

87 lines
3 KiB
Python

from getpass import getpass
from urllib.parse import urlparse
from . import storage
from .utils import display_help, stack_formatter, status_formatter, generic_formatter
from .parser import Credentials, credentialparser
from .communicate import DockgeConnection
def setup():
con = DockgeConnection()
con.connect_and_login()
return con
def exec_command(command, extra_args):
match command:
case "help":
display_help(extra_args)
case "login":
if len(extra_args) > 0:
credentials = credentialparser.parse_args(extra_args, namespace=Credentials)
storage.put("username", credentials.username, encoded=True)
storage.put("password", credentials.password, encoded=True)
return
storage.put("username", input("Username: "), encoded=True)
storage.put("password", getpass("Password: "), encoded=True)
case "logout":
storage.remove("username")
storage.remove("password")
case "host":
if len(extra_args) > 0:
res = urlparse(extra_args[0])
if all([res.scheme, res.netloc]):
host = extra_args[0].rstrip("/").replace("wss://", "").replace("https://", "")
storage.put("host", host)
else:
raise ValueError(f"Malformed URL {extra_args[0]}")
print(storage.get("host"))
case "exit":
storage.clear()
case "list":
con = setup()
stack_formatter(con.list_stacks())
con.disconnect()
case "status":
if extra_args is None:
raise ValueError
con = setup()
status_formatter(con.list_stack(extra_args[0]))
con.disconnect()
case "restart":
if extra_args is None:
raise ValueError
con = setup()
generic_formatter(con.restart(extra_args[0]))
con.disconnect()
case "update":
if extra_args is None:
raise ValueError
con = setup()
generic_formatter(con.update(extra_args[0]))
con.disconnect()
case "stop":
if extra_args is None:
raise ValueError
con = setup()
generic_formatter(con.stop(extra_args[0]))
con.disconnect()
case "start":
if extra_args is None:
raise ValueError
con = setup()
generic_formatter(con.start(extra_args[0]))
con.disconnect()
case "down":
if extra_args is None:
raise ValueError
con = setup()
generic_formatter(con.down(extra_args[0]))
con.disconnect()
case "debug":
con = setup()
stack_formatter(con.list_stacks())
print("fgo-ta-com", con.list_stack("fgo-ta-com"))
con.disconnect()
case _:
print("Not implemented")