From c46638f589a161ff97260e781526f2a4e7744cfb Mon Sep 17 00:00:00 2001 From: DavHau Date: Fri, 17 Nov 2023 18:26:44 +0700 Subject: [PATCH] api/flake/history: implement review requests --- pkgs/clan-cli/clan_cli/flakes/__init__.py | 4 ++-- pkgs/clan-cli/clan_cli/flakes/add.py | 8 -------- .../flakes/{list_history.py => history.py} | 9 --------- pkgs/clan-cli/clan_cli/webui/routers/flake.py | 10 +++++----- pkgs/clan-cli/tests/test_flake_api.py | 16 ++++++++-------- 5 files changed, 15 insertions(+), 32 deletions(-) rename pkgs/clan-cli/clan_cli/flakes/{list_history.py => history.py} (72%) diff --git a/pkgs/clan-cli/clan_cli/flakes/__init__.py b/pkgs/clan-cli/clan_cli/flakes/__init__.py index 8c36f76e7..556233537 100644 --- a/pkgs/clan-cli/clan_cli/flakes/__init__.py +++ b/pkgs/clan-cli/clan_cli/flakes/__init__.py @@ -2,7 +2,7 @@ import argparse from clan_cli.flakes.add import register_add_parser -from clan_cli.flakes.list_history import register_list_parser +from clan_cli.flakes.history import register_list_parser from .create import register_create_parser @@ -19,5 +19,5 @@ def register_parser(parser: argparse.ArgumentParser) -> None: register_create_parser(create_parser) add_parser = subparser.add_parser("add", help="Add a clan flake") register_add_parser(add_parser) - list_parser = subparser.add_parser("list", help="List clan flakes") + list_parser = subparser.add_parser("list", help="List recently used flakes") register_list_parser(list_parser) diff --git a/pkgs/clan-cli/clan_cli/flakes/add.py b/pkgs/clan-cli/clan_cli/flakes/add.py index 8b2327305..b745ef490 100644 --- a/pkgs/clan-cli/clan_cli/flakes/add.py +++ b/pkgs/clan-cli/clan_cli/flakes/add.py @@ -3,18 +3,10 @@ import argparse from pathlib import Path from typing import Dict -from pydantic import AnyUrl -from pydantic.tools import parse_obj_as - from clan_cli.dirs import user_history_file from ..async_cmd import CmdOut, runforcli -DEFAULT_URL: AnyUrl = parse_obj_as( - AnyUrl, - "git+https://git.clan.lol/clan/clan-core?new-clan", -) - async def add_flake(path: Path) -> Dict[str, CmdOut]: user_history_file().parent.mkdir(parents=True, exist_ok=True) diff --git a/pkgs/clan-cli/clan_cli/flakes/list_history.py b/pkgs/clan-cli/clan_cli/flakes/history.py similarity index 72% rename from pkgs/clan-cli/clan_cli/flakes/list_history.py rename to pkgs/clan-cli/clan_cli/flakes/history.py index ff2bab0b9..035cf3e8b 100644 --- a/pkgs/clan-cli/clan_cli/flakes/list_history.py +++ b/pkgs/clan-cli/clan_cli/flakes/history.py @@ -2,19 +2,10 @@ import argparse from pathlib import Path -from pydantic import AnyUrl -from pydantic.tools import parse_obj_as - from clan_cli.dirs import user_history_file -DEFAULT_URL: AnyUrl = parse_obj_as( - AnyUrl, - "git+https://git.clan.lol/clan/clan-core?new-clan", -) - def list_history() -> list[Path]: - user_history_file().parent.mkdir(parents=True, exist_ok=True) if not user_history_file().exists(): return [] # read path lines from history file diff --git a/pkgs/clan-cli/clan_cli/webui/routers/flake.py b/pkgs/clan-cli/clan_cli/webui/routers/flake.py index b1c2dbb56..ca876b784 100644 --- a/pkgs/clan-cli/clan_cli/webui/routers/flake.py +++ b/pkgs/clan-cli/clan_cli/webui/routers/flake.py @@ -46,14 +46,14 @@ async def get_attrs(url: AnyUrl | Path) -> list[str]: return flake_attrs -@router.put("/api/flake/add", tags=[Tags.flake]) -async def add_flake(flake_dir: Path) -> None: +@router.post("/api/flake/history", tags=[Tags.flake]) +async def flake_history_append(flake_dir: Path) -> None: await add.add_flake(flake_dir) -@router.get("/api/flake/list_history", tags=[Tags.flake]) -async def list_flakes() -> list[Path]: - return flakes.list_history.list_history() +@router.get("/api/flake/history", tags=[Tags.flake]) +async def flake_history_list() -> list[Path]: + return flakes.history.list_history() # TODO: Check for directory traversal diff --git a/pkgs/clan-cli/tests/test_flake_api.py b/pkgs/clan-cli/tests/test_flake_api.py index ba6efc4e9..0b1e7040c 100644 --- a/pkgs/clan-cli/tests/test_flake_api.py +++ b/pkgs/clan-cli/tests/test_flake_api.py @@ -11,11 +11,11 @@ from clan_cli.dirs import user_history_file log = logging.getLogger(__name__) -def test_flake_add( +def test_flake_history_append( api: TestClient, test_flake: FlakeForTest, temporary_home: Path ) -> None: - response = api.put( - f"/api/flake/add?flake_dir={str(test_flake.path)}", + response = api.post( + f"/api/flake/history?flake_dir={str(test_flake.path)}", json={}, ) assert response.status_code == 200, response.json() @@ -23,25 +23,25 @@ def test_flake_add( assert open(user_history_file()).read().strip() == str(test_flake.path) -def test_flake_list( +def test_flake_history_list( api: TestClient, test_flake: FlakeForTest, temporary_home: Path ) -> None: response = api.get( - "/api/flake/list_history", + "/api/flake/history", ) assert response.status_code == 200, response.text assert response.json() == [] # add the test_flake - response = api.put( - f"/api/flake/add?flake_dir={str(test_flake.path)}", + response = api.post( + f"/api/flake/history?flake_dir={str(test_flake.path)}", json={}, ) assert response.status_code == 200, response.text # list the flakes again response = api.get( - "/api/flake/list_history", + "/api/flake/history", ) assert response.status_code == 200, response.text assert response.json() == [str(test_flake.path)]