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 (
|
flip mapAttrsToList vars.generators (
|
||||||
gen_name: generator:
|
gen_name: generator:
|
||||||
flip mapAttrsToList (relevantFiles generator) (
|
flip mapAttrsToList (relevantFiles generator) (
|
||||||
fname: file:
|
fname: _file: {
|
||||||
lib.trace file {
|
|
||||||
name = fname;
|
name = fname;
|
||||||
generator = gen_name;
|
generator = gen_name;
|
||||||
inherit (generator) share;
|
inherit (generator) share;
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
import json
|
|
||||||
import shutil
|
import shutil
|
||||||
from abc import ABC, abstractmethod
|
from abc import ABC, abstractmethod
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
@@ -98,6 +97,10 @@ class StoreBase(ABC):
|
|||||||
override this method to implement the actual creation of the file
|
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
|
@property
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def is_secret_store(self) -> bool:
|
def is_secret_store(self) -> bool:
|
||||||
@@ -117,17 +120,6 @@ class StoreBase(ABC):
|
|||||||
/ self.rel_dir(generator_name, var_name, shared)
|
/ 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(
|
def set(
|
||||||
self,
|
self,
|
||||||
generator_name: str,
|
generator_name: str,
|
||||||
@@ -143,12 +135,6 @@ class StoreBase(ABC):
|
|||||||
# re-create directory
|
# re-create directory
|
||||||
directory.mkdir(parents=True, exist_ok=True)
|
directory.mkdir(parents=True, exist_ok=True)
|
||||||
new_file = self._set(generator_name, var_name, value, shared, deployed)
|
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
|
return new_file
|
||||||
|
|
||||||
def get_all(self) -> list[Var]:
|
def get_all(self) -> list[Var]:
|
||||||
|
|||||||
@@ -35,3 +35,6 @@ class FactStore(FactStoreBase):
|
|||||||
# get a single fact
|
# get a single fact
|
||||||
def get(self, generator_name: str, name: str, shared: bool = False) -> bytes:
|
def get(self, generator_name: str, name: str, shared: bool = False) -> bytes:
|
||||||
return (self.directory(generator_name, name, shared) / "value").read_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
|
).stdout
|
||||||
|
|
||||||
def exists(self, generator_name: str, name: str, shared: bool = False) -> bool:
|
def exists(self, generator_name: str, name: str, shared: bool = False) -> bool:
|
||||||
if not super().exists(generator_name, name, shared):
|
|
||||||
return False
|
|
||||||
return (
|
return (
|
||||||
Path(self._password_store_dir)
|
Path(self._password_store_dir)
|
||||||
/ f"{self.entry_dir(generator_name, name, shared)}.gpg"
|
/ 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,
|
sops_secrets_folder(self.machine.flake_dir) / key_name,
|
||||||
)
|
)
|
||||||
(output_dir / "key.txt").write_text(key)
|
(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