1use std::collections::HashMap;2use std::sync::{Arc, Mutex};34use nix_eval::{NativeFn, Value};56use crate::fleetdata::{FleetData, FleetSecrets};78#[derive(thiserror::Error, Debug)]9enum Error {}1011struct Parts {12 encrypted: Vec<String>,13 public: Vec<String>,14}1516trait SecretsBackend {17 fn has_shared(&self, name: &str);18 fn has_host(&self, host: &str, name: &str);19 fn shared_parts(&self, name: &str) -> Parts;20 fn host_parts(&self, host: &str, name: &str) -> Parts;21}2223struct FsSecretsBackend {}2425pub fn init_primops(secrets: Arc<Mutex<FleetData>>) {26 NativeFn::new(27 c"fleet_ensure_host_secret",28 c"Ensure secret existence for a host, regenerating it in case of some mismatch",29 [c"host", c"secret", c"generator"],30 |[host, secret, generator]| {31 todo!("ensure secret");32 Ok(Value::new_attrs(HashMap::from_iter([(33 "raw",34 Value::new_str("rawData"),35 )])))36 },37 )38 .register();39 NativeFn::new(40 c"fleet_ensure_host_secret",41 c"Ensure secret existence for a host, regenerating it in case of some mismatch",42 [c"host", c"secret", c"generator"],43 |[host, secret, generator]| {44 todo!("ensure secret");45 Ok(Value::new_attrs(HashMap::from_iter([(46 "raw",47 Value::new_str("rawData"),48 )])))49 },50 )51 .register();52}