use std::collections::{BTreeMap, BTreeSet}; use std::{env, io, iter}; use crate::service::{Service, ServiceType}; use crate::unit::UnitId; pub fn subst_env<'a>(arg: &str) -> String { if arg.starts_with('$') { env::var(&arg[1..]).unwrap_or(String::new()) } else { arg.to_owned() } } pub struct Script(pub Vec, pub Vec); impl Script { pub fn from_str(config: &str, errors: &mut Vec) -> io::Result