Simpler Resource
This commit is contained in:
parent
8e848fc104
commit
7b0575da1b
10 changed files with 31 additions and 49 deletions
|
|
@ -1,33 +1,15 @@
|
|||
use std::borrow::Cow;
|
||||
#[derive(PartialEq, Eq, Hash, Clone)]
|
||||
pub struct Resource(pub String, pub String);
|
||||
|
||||
pub trait Resource {
|
||||
fn get_type(&self) -> &str;
|
||||
fn get_value(&self) -> &str;
|
||||
}
|
||||
impl<'a> Resource {
|
||||
pub fn new<A: Into<String>, B: Into<String>>(rtype: A, value: B) -> Self {
|
||||
Resource(rtype.into(), value.into())
|
||||
}
|
||||
|
||||
pub struct UserResource<'a> {
|
||||
pub name: &'a str
|
||||
}
|
||||
|
||||
impl<'a> Resource for UserResource<'a> {
|
||||
fn get_type(&self) -> &str { "user" }
|
||||
fn get_value(&self) -> &str { self.name }
|
||||
}
|
||||
|
||||
pub struct DirResource<'a> {
|
||||
pub path: Cow<'a, str>
|
||||
}
|
||||
|
||||
impl<'a> Resource for DirResource<'a> {
|
||||
fn get_type(&self) -> &str { "dir" }
|
||||
fn get_value(&self) -> &str { &*self.path }
|
||||
}
|
||||
|
||||
pub struct FileResource<'a> {
|
||||
pub path: Cow<'a, str>
|
||||
}
|
||||
|
||||
impl<'a> Resource for FileResource<'a> {
|
||||
fn get_type(&self) -> &str { "file" }
|
||||
fn get_value(&self) -> &str { &*self.path }
|
||||
pub fn get_type(&self) -> &str {
|
||||
&self.0
|
||||
}
|
||||
pub fn get_value(&self) -> &str {
|
||||
&self.1
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ use std::io::{self, Write};
|
|||
|
||||
use command_runner::CommandRunner;
|
||||
use symbols::Symbol;
|
||||
use resources::{FileResource, Resource};
|
||||
use resources::Resource;
|
||||
|
||||
pub struct AcmeCert<'a> {
|
||||
domain: Cow<'a, str>,
|
||||
|
|
@ -72,8 +72,8 @@ impl<'a> Symbol for AcmeCert<'a> {
|
|||
Ok(())
|
||||
}
|
||||
|
||||
fn get_prerequisites(&self) -> Vec<Box<Resource>> {
|
||||
vec![Box::new(FileResource { path: self.get_csr_path().into() })]
|
||||
fn get_prerequisites(&self) -> Vec<Resource> {
|
||||
vec![ Resource::new("file", self.get_csr_path()) ]
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ use std::ops::Deref;
|
|||
use std::path::Path;
|
||||
|
||||
use symbols::Symbol;
|
||||
use resources::{DirResource, Resource};
|
||||
use resources::Resource;
|
||||
|
||||
pub struct File<C, D> where C: Deref<Target=str>, D: AsRef<str> + fmt::Display {
|
||||
path: D,
|
||||
|
|
@ -53,9 +53,8 @@ impl<C, D> Symbol for File<C, D> where C: Deref<Target=str>, D: AsRef<str> + fmt
|
|||
Ok(())
|
||||
}
|
||||
|
||||
fn get_prerequisites(&self) -> Vec<Box<Resource>> {
|
||||
vec![
|
||||
Box::new(DirResource { path: String::from(Path::new(self.path.as_ref()).parent().unwrap().to_string_lossy()).into() }) ]
|
||||
fn get_prerequisites(&self) -> Vec<Resource> {
|
||||
vec![ Resource::new("dir", Path::new(self.path.as_ref()).parent().unwrap().to_string_lossy() ) ]
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ impl<A, B> Symbol for Hook<A, B> where A: Symbol, B: Symbol {
|
|||
self.b.execute()
|
||||
}
|
||||
|
||||
fn get_prerequisites(&self) -> Vec<Box<Resource>> {
|
||||
fn get_prerequisites(&self) -> Vec<Resource> {
|
||||
let mut r = vec![];
|
||||
r.extend(self.a.get_prerequisites().into_iter());
|
||||
r.extend(self.b.get_prerequisites().into_iter());
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
use std::error::Error;
|
||||
use std::fmt;
|
||||
|
||||
use resources::Resource;
|
||||
use symbols::Symbol;
|
||||
|
||||
pub struct List<'a> {
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ use resources::Resource;
|
|||
pub trait Symbol: Display {
|
||||
fn target_reached(&self) -> Result<bool, Box<Error>>;
|
||||
fn execute(&self) -> Result<(), Box<Error>>;
|
||||
fn get_prerequisites(&self) -> Vec<Box<Resource>> {
|
||||
fn get_prerequisites(&self) -> Vec<Resource> {
|
||||
vec![]
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -144,7 +144,7 @@ impl<'a, C> Symbol for NginxServer<'a, C> where C: Deref<Target=str> {
|
|||
Ok(())
|
||||
}
|
||||
|
||||
fn get_prerequisites(&self) -> Vec<Box<Resource>> {
|
||||
fn get_prerequisites(&self) -> Vec<Resource> {
|
||||
self.file.get_prerequisites()
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ use std::time::Duration;
|
|||
use std::ops::Deref;
|
||||
|
||||
use command_runner::CommandRunner;
|
||||
use resources::{ FileResource, Resource };
|
||||
use resources::Resource;
|
||||
use symbols::Symbol;
|
||||
use symbols::file::File as FileSymbol;
|
||||
|
||||
|
|
@ -156,8 +156,8 @@ impl<'a, C> Symbol for NodeJsSystemdUserService<'a, C> where C: Deref<Target=str
|
|||
Ok(())
|
||||
}
|
||||
|
||||
fn get_prerequisites(&self) -> Vec<Box<Resource>> {
|
||||
let mut r: Vec<Box<Resource>> = vec![ Box::new(FileResource { path: ("/var/lib/systemd/linger/".to_string() + self.user_name).into() }) ];
|
||||
fn get_prerequisites(&self) -> Vec<Resource> {
|
||||
let mut r = vec![ Resource::new("file", format!("/var/lib/systemd/linger/{}", self.user_name)) ];
|
||||
r.extend(self.file.get_prerequisites().into_iter());
|
||||
r
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ use std::error::Error;
|
|||
use std::fmt;
|
||||
|
||||
use command_runner::CommandRunner;
|
||||
use resources::{Resource, FileResource};
|
||||
use resources::Resource;
|
||||
use symbols::Symbol;
|
||||
|
||||
pub struct TlsCsr<'a> {
|
||||
|
|
@ -52,8 +52,8 @@ impl<'a> Symbol for TlsCsr<'a> {
|
|||
Ok(())
|
||||
}
|
||||
|
||||
fn get_prerequisites(&self) -> Vec<Box<Resource>> {
|
||||
vec![Box::new(FileResource { path: self.get_key_path().into() })]
|
||||
fn get_prerequisites(&self) -> Vec<Resource> {
|
||||
vec![Resource::new("file", self.get_key_path())]
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ use std::error::Error;
|
|||
use std::fmt;
|
||||
|
||||
use command_runner::CommandRunner;
|
||||
use resources::{Resource, FileResource};
|
||||
use resources::Resource;
|
||||
use symbols::Symbol;
|
||||
|
||||
pub struct SelfSignedTlsCert<'a> {
|
||||
|
|
@ -57,8 +57,8 @@ impl<'a> Symbol for SelfSignedTlsCert<'a> {
|
|||
}
|
||||
}
|
||||
|
||||
fn get_prerequisites(&self) -> Vec<Box<Resource>> {
|
||||
vec![Box::new(FileResource { path: self.get_key_path().into() })]
|
||||
fn get_prerequisites(&self) -> Vec<Resource> {
|
||||
vec![Resource::new("file", self.get_key_path())]
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue