diff --git a/dctl/commands/logout.py b/dctl/commands/logout.py index a520f4e..7ca6835 100644 --- a/dctl/commands/logout.py +++ b/dctl/commands/logout.py @@ -13,7 +13,7 @@ def logout(): session = config.session() headers = {**get_auth_header()} url = f"{config.api_base_url}/auth/logout" - # TODO: Fix, seems like isn't working. - requests.delete(url, headers=headers, params={"session_id": session.id}) + request = requests.delete(url, headers=headers, params={"session_id": session.id}) + request.raise_for_status() config.remove_stored_credentials() click.echo("Logout Succeeded!") diff --git a/dctl/commands/new.py b/dctl/commands/new.py new file mode 100644 index 0000000..c95b54b --- /dev/null +++ b/dctl/commands/new.py @@ -0,0 +1,39 @@ +from enum import Enum + +import click +import requests +from pydantic import BaseModel + +from dctl.config import Config +from dctl.utils.session import get_auth_header + +config = Config() + + +class Template(BaseModel): + source_full_name: str + path: str + branch: str + + +class TemplateType(Enum): + FASTAPI = Template(source_full_name="doseiai/dosei", path="examples/fastapi", branch="main") + + +@click.command() +@click.option( + '--template', + default="fastapi", + type=click.Choice(['fastapi'], case_sensitive=False), + required=True +) +@click.argument('name', nargs=1, default=None, required=True) +def new(template, name): + """New project""" + headers = {**get_auth_header()} + url = f"{config.api_base_url}/projects/test/clone" + response = requests.post(url, headers=headers, json={ + "name": name, + **TemplateType[template.upper()].value.model_dump() + }) + response.raise_for_status() diff --git a/dctl/main.py b/dctl/main.py index e85d8a5..d904f4e 100644 --- a/dctl/main.py +++ b/dctl/main.py @@ -3,6 +3,7 @@ from dctl.commands.login import login from dctl.commands.logout import logout from dctl.commands.logs import logs +from dctl.commands.new import new from dctl.commands.project import project from dctl.config import Config @@ -17,6 +18,7 @@ def cli(): cli.add_command(login) +cli.add_command(new) cli.add_command(logout) cli.add_command(logs) cli.add_command(env)