pub struct ModuleManifest {
pub name: String,
pub label: String,
pub summary: String,
pub links: Vec<String>,
pub provides: Provides,
pub handles: Handles,
pub config: Option<Configuration>,
}
Fields§
§name: String
§label: String
§summary: String
§links: Vec<String>
§provides: Provides
§handles: Handles
§config: Option<Configuration>
Implementations§
Source§impl ModuleManifest
impl ModuleManifest
pub fn read_manifest(module_name: &str) -> Result<Self>
pub fn read_variables( &self, profile: Option<&str>, ) -> Result<BTreeMap<String, String>, ReadVarError>
Sourcepub fn variable(
&self,
key: &str,
profile: Option<&str>,
) -> Result<String, ReadVarError>
pub fn variable( &self, key: &str, profile: Option<&str>, ) -> Result<String, ReadVarError>
Examples found in repository?
examples/config.rs (line 30)
27fn main() -> Result<(), Box<dyn Error>> {
28 let manifest: ModuleManifest = serde_yaml_ng::from_str(YAML)?;
29
30 let api_key = manifest.variable("api_key", None).unwrap_or_default();
31 if api_key.is_empty() {
32 println!("api_key: `{api_key}`");
33 println!(
34 "(consider `mkdir -p ~/.asimov/configs/default/example/ && echo -n \"<api-key-value>\" >> ~/.asimov/configs/default/example/api_key` or for a non-example module `asimov module config <example> api_key <api-key-value>`)"
35 );
36 } else {
37 println!("api_key: `{api_key}`");
38 }
39
40 let other_var = manifest.variable("other_var", None).unwrap_or_default();
41 println!("\nother_var: `{other_var}`");
42
43 let env_var = manifest.variable("var_from_env", None).unwrap_or_default();
44 println!("\nvar_from_env: `{env_var}`");
45
46 println!("setting env var `VAR_FROM_ENV` manually...");
47 unsafe { std::env::set_var("VAR_FROM_ENV", "hello!") }
48 let env_var = manifest.variable("var_from_env", None).unwrap_or_default();
49 println!("var_from_env: `{env_var}`");
50
51 // alternative way:
52 // let vars = manifest.read_variables(None)?;
53 // let api_key = vars.get("api_key");
54 // println!("api_key: `{api_key:?}`");
55
56 Ok(())
57}
Trait Implementations§
Source§impl Clone for ModuleManifest
impl Clone for ModuleManifest
Source§fn clone(&self) -> ModuleManifest
fn clone(&self) -> ModuleManifest
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreSource§impl Debug for ModuleManifest
impl Debug for ModuleManifest
Source§impl Default for ModuleManifest
impl Default for ModuleManifest
Source§fn default() -> ModuleManifest
fn default() -> ModuleManifest
Returns the “default value” for a type. Read more
Source§impl<'de> Deserialize<'de> for ModuleManifest
impl<'de> Deserialize<'de> for ModuleManifest
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Auto Trait Implementations§
impl Freeze for ModuleManifest
impl RefUnwindSafe for ModuleManifest
impl Send for ModuleManifest
impl Sync for ModuleManifest
impl Unpin for ModuleManifest
impl UnwindSafe for ModuleManifest
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more