From 2776294de043cc9fccd3dae0d66f4cb22a55cfb9 Mon Sep 17 00:00:00 2001 From: Johannes Kirschbauer Date: Tue, 29 Jul 2025 17:04:15 +0200 Subject: [PATCH] templates: url add support for home and abspath --- .../clan_lib/templates/template_url.py | 5 ++-- .../clan_lib/templates/template_url_test.py | 24 ++++++++++++++++++- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/pkgs/clan-cli/clan_lib/templates/template_url.py b/pkgs/clan-cli/clan_lib/templates/template_url.py index ae625153b..bbb2237f9 100644 --- a/pkgs/clan-cli/clan_lib/templates/template_url.py +++ b/pkgs/clan-cli/clan_lib/templates/template_url.py @@ -84,9 +84,10 @@ def transform_url(template_type: str, identifier: str, flake: Flake) -> tuple[st flake_ref = str(flake.path) if "#" not in identifier: - # ./ . or ../ .. are relative paths + # Local path references are not transformed + # return flake_ref=identifier, template='default' if ( - identifier.startswith(("./", "../")) + identifier.startswith(("/", "~/", "./", "../")) or identifier == "." or identifier == ".." ): diff --git a/pkgs/clan-cli/clan_lib/templates/template_url_test.py b/pkgs/clan-cli/clan_lib/templates/template_url_test.py index acc203501..5b85ae7c2 100644 --- a/pkgs/clan-cli/clan_lib/templates/template_url_test.py +++ b/pkgs/clan-cli/clan_lib/templates/template_url_test.py @@ -239,7 +239,7 @@ def test_internal_dot_template() -> None: assert flake_ref == str(local_path.path) -def test_explizit_path_default() -> None: +def test_explizit_rel_path_default() -> None: user_input = "./path/to/flake" expected_selector = "clan.templates.machine.default" @@ -248,3 +248,25 @@ def test_explizit_path_default() -> None: ) assert selector == expected_selector assert flake_ref == user_input + + +def test_explizit_abs_path_default() -> None: + user_input = "/path/to/flake" + expected_selector = "clan.templates.machine.default" + + flake_ref, selector = transform_url( + machine_template_type, user_input, flake=local_path + ) + assert selector == expected_selector + assert flake_ref == user_input + + +def test_explizit_home_path_default() -> None: + user_input = "~/path/to/flake" + expected_selector = "clan.templates.machine.default" + + flake_ref, selector = transform_url( + machine_template_type, user_input, flake=local_path + ) + assert selector == expected_selector + assert flake_ref == user_input