Merge pull request 'vars: get rid of meta.json' (#2082) from DavHau/clan-core:DavHau-dave into main
This commit is contained in:
@@ -21,8 +21,7 @@ in
|
||||
flip mapAttrsToList vars.generators (
|
||||
gen_name: generator:
|
||||
flip mapAttrsToList (relevantFiles generator) (
|
||||
fname: file:
|
||||
lib.trace file {
|
||||
fname: _file: {
|
||||
name = fname;
|
||||
generator = gen_name;
|
||||
inherit (generator) share;
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import json
|
||||
import shutil
|
||||
from abc import ABC, abstractmethod
|
||||
from dataclasses import dataclass
|
||||
@@ -98,6 +97,10 @@ class StoreBase(ABC):
|
||||
override this method to implement the actual creation of the file
|
||||
"""
|
||||
|
||||
@abstractmethod
|
||||
def exists(self, generator_name: str, name: str, shared: bool = False) -> bool:
|
||||
pass
|
||||
|
||||
@property
|
||||
@abstractmethod
|
||||
def is_secret_store(self) -> bool:
|
||||
@@ -117,17 +120,6 @@ class StoreBase(ABC):
|
||||
/ self.rel_dir(generator_name, var_name, shared)
|
||||
)
|
||||
|
||||
def exists(self, generator_name: str, name: str, shared: bool = False) -> bool:
|
||||
directory = self.directory(generator_name, name, shared)
|
||||
if not (directory / "meta.json").exists():
|
||||
return False
|
||||
with (directory / "meta.json").open() as f:
|
||||
meta = json.load(f)
|
||||
# check if is secret, as secret and public store names could collide (eg. 'vm')
|
||||
if meta.get("secret") != self.is_secret_store:
|
||||
return False
|
||||
return meta.get("store") == self.store_name
|
||||
|
||||
def set(
|
||||
self,
|
||||
generator_name: str,
|
||||
@@ -143,12 +135,6 @@ class StoreBase(ABC):
|
||||
# re-create directory
|
||||
directory.mkdir(parents=True, exist_ok=True)
|
||||
new_file = self._set(generator_name, var_name, value, shared, deployed)
|
||||
meta = {
|
||||
"secret": self.is_secret_store,
|
||||
"store": self.store_name,
|
||||
}
|
||||
with (directory / "meta.json").open("w") as file:
|
||||
json.dump(meta, file, indent=2)
|
||||
return new_file
|
||||
|
||||
def get_all(self) -> list[Var]:
|
||||
|
||||
@@ -35,3 +35,6 @@ class FactStore(FactStoreBase):
|
||||
# get a single fact
|
||||
def get(self, generator_name: str, name: str, shared: bool = False) -> bytes:
|
||||
return (self.directory(generator_name, name, shared) / "value").read_bytes()
|
||||
|
||||
def exists(self, generator_name: str, name: str, shared: bool = False) -> bool:
|
||||
return (self.directory(generator_name, name, shared) / "value").exists()
|
||||
|
||||
@@ -66,8 +66,6 @@ class SecretStore(SecretStoreBase):
|
||||
).stdout
|
||||
|
||||
def exists(self, generator_name: str, name: str, shared: bool = False) -> bool:
|
||||
if not super().exists(generator_name, name, shared):
|
||||
return False
|
||||
return (
|
||||
Path(self._password_store_dir)
|
||||
/ f"{self.entry_dir(generator_name, name, shared)}.gpg"
|
||||
|
||||
@@ -78,3 +78,6 @@ class SecretStore(SecretStoreBase):
|
||||
sops_secrets_folder(self.machine.flake_dir) / key_name,
|
||||
)
|
||||
(output_dir / "key.txt").write_text(key)
|
||||
|
||||
def exists(self, generator_name: str, name: str, shared: bool = False) -> bool:
|
||||
return (self.directory(generator_name, name, shared) / "secret").exists()
|
||||
|
||||
Reference in New Issue
Block a user