Refactor(autocompletions): use inventoryStore
This commit is contained in:
@@ -8,7 +8,9 @@ from types import ModuleType
|
|||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
from clan_lib.cmd import run
|
from clan_lib.cmd import run
|
||||||
|
from clan_lib.flake.flake import Flake
|
||||||
from clan_lib.nix import nix_eval
|
from clan_lib.nix import nix_eval
|
||||||
|
from clan_lib.persist.inventory_store import InventoryStore
|
||||||
|
|
||||||
"""
|
"""
|
||||||
This module provides dynamic completions.
|
This module provides dynamic completions.
|
||||||
@@ -311,45 +313,11 @@ def complete_tags(
|
|||||||
flake = clan_dir_result
|
flake = clan_dir_result
|
||||||
else:
|
else:
|
||||||
flake = "."
|
flake = "."
|
||||||
computed_tags_result = json.loads(
|
|
||||||
run(
|
|
||||||
nix_eval(
|
|
||||||
flags=[
|
|
||||||
f"{flake}#clanInternals.inventory.tags",
|
|
||||||
"--apply",
|
|
||||||
"builtins.attrNames",
|
|
||||||
],
|
|
||||||
),
|
|
||||||
).stdout.strip()
|
|
||||||
)
|
|
||||||
|
|
||||||
tags.extend(computed_tags_result)
|
inventory_store = InventoryStore(Flake(str(flake)))
|
||||||
except subprocess.CalledProcessError:
|
inventory = inventory_store.get_readonly_raw()
|
||||||
pass
|
if "tags" in inventory:
|
||||||
|
tags.extend(inventory["tags"].keys())
|
||||||
def run_services_tags_cmd() -> None:
|
|
||||||
services_tags: list[str] = []
|
|
||||||
try:
|
|
||||||
if (clan_dir_result := clan_dir(None)) is not None:
|
|
||||||
flake = clan_dir_result
|
|
||||||
else:
|
|
||||||
flake = "."
|
|
||||||
services_tags_result = json.loads(
|
|
||||||
run(
|
|
||||||
nix_eval(
|
|
||||||
flags=[
|
|
||||||
f"{flake}#clanInternals.inventory.services",
|
|
||||||
],
|
|
||||||
),
|
|
||||||
).stdout.strip()
|
|
||||||
)
|
|
||||||
for service in services_tags_result.values():
|
|
||||||
for environment in service.values():
|
|
||||||
roles = environment.get("roles", {})
|
|
||||||
for role_details in roles.values():
|
|
||||||
services_tags += role_details.get("tags", [])
|
|
||||||
|
|
||||||
tags.extend(services_tags)
|
|
||||||
|
|
||||||
except subprocess.CalledProcessError:
|
except subprocess.CalledProcessError:
|
||||||
pass
|
pass
|
||||||
@@ -361,15 +329,11 @@ def complete_tags(
|
|||||||
flake = clan_dir_result
|
flake = clan_dir_result
|
||||||
else:
|
else:
|
||||||
flake = "."
|
flake = "."
|
||||||
machine_tags_result = json.loads(
|
inventory_store = InventoryStore(Flake(str(flake)))
|
||||||
run(
|
inventory = inventory_store.get_readonly_raw()
|
||||||
nix_eval(
|
machine_tags_result = inventory.get("machines")
|
||||||
flags=[
|
if machine_tags_result is None:
|
||||||
f"{flake}#clanInternals.inventory.machines",
|
return
|
||||||
],
|
|
||||||
),
|
|
||||||
).stdout.strip()
|
|
||||||
)
|
|
||||||
|
|
||||||
for machine in machine_tags_result.values():
|
for machine in machine_tags_result.values():
|
||||||
machine_tags.extend(machine.get("tags", []))
|
machine_tags.extend(machine.get("tags", []))
|
||||||
@@ -385,7 +349,6 @@ def complete_tags(
|
|||||||
|
|
||||||
functions_to_run = [
|
functions_to_run = [
|
||||||
run_computed_tags_cmd,
|
run_computed_tags_cmd,
|
||||||
run_services_tags_cmd,
|
|
||||||
run_machines_tags_cmd,
|
run_machines_tags_cmd,
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user