summaryrefslogtreecommitdiff
path: root/src/systemd/unit.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/systemd/unit.rs')
-rw-r--r--src/systemd/unit.rs42
1 files changed, 26 insertions, 16 deletions
diff --git a/src/systemd/unit.rs b/src/systemd/unit.rs
index 116ffdb..d43324a 100644
--- a/src/systemd/unit.rs
+++ b/src/systemd/unit.rs
@@ -14,31 +14,40 @@ pub struct Unit {
pub fn parse_key_value(line: &str) -> Option<(String, String)> {
let pos = line.find('=');
pos.map(|pos| {
- let (k, v) = line.split_at(pos);
- (k.to_owned(), v[1..].to_owned())
- })
+ let (k, v) = line.split_at(pos);
+ (k.to_owned(), v[1..].to_owned())
+ })
}
#[test]
fn test_parse_key_value() {
assert_eq!(None, parse_key_value("ab"));
- assert_eq!(Some(("a".to_owned(), "b".to_owned())), parse_key_value("a=b"));
- assert_eq!(Some(("a".to_owned(), "b=c".to_owned())), parse_key_value("a=b=c"));
+ assert_eq!(Some(("a".to_owned(), "b".to_owned())),
+ parse_key_value("a=b"));
+ assert_eq!(Some(("a".to_owned(), "b=c".to_owned())),
+ parse_key_value("a=b=c"));
}
fn make_unit(info: HashMap<String, String>) -> Option<Unit> {
fn from_id(id: &str) -> Option<String> {
id.rsplit('.').next().map(|t| t.to_owned())
};
- fn cloned(s: &String) -> String { s.clone() }
+ fn cloned(s: &String) -> String {
+ s.clone()
+ }
let id = info.get("Id").map(cloned);
let type_ = id.as_ref().and_then(|id| from_id(&id));
let active_state = info.get("ActiveState").map(cloned);
let sub_state = info.get("SubState").map(cloned);
-
+
if let (Some(id), Some(type_), Some(active_state), Some(sub_state)) =
(id, type_, active_state, sub_state) {
- Some(Unit { name: id, type_: type_, active_state: active_state, sub_state: sub_state })
+ Some(Unit {
+ name: id,
+ type_: type_,
+ active_state: active_state,
+ sub_state: sub_state,
+ })
} else {
None
}
@@ -47,13 +56,13 @@ fn make_unit(info: HashMap<String, String>) -> Option<Unit> {
#[test]
fn test_make_unit() {
let s = |s: &str| -> String { s.to_owned() };
- let info = [
- (s("Id"), s("Test.service")),
- (s("ActiveState"), s("active")),
- (s("SubState"), s("running")),
- ]
- .iter().cloned().collect::<HashMap<String, String>>();
- let actual = make_unit(info).unwrap();;
+ let info = [(s("Id"), s("Test.service")),
+ (s("ActiveState"), s("active")),
+ (s("SubState"), s("running"))]
+ .iter()
+ .cloned()
+ .collect::<HashMap<String, String>>();
+ let actual = make_unit(info).unwrap();
assert_eq!(s("Test.service"), actual.name);
let info = HashMap::new();
@@ -63,7 +72,8 @@ fn test_make_unit() {
pub fn get_units(filter: &str) -> io::Result<Vec<Unit>> {
let mut units = Vec::new();
let status = try!(Command::new("systemctl")
- .args(&["show", filter]).output());
+ .args(&["show", filter])
+ .output());
let mut unit_info = HashMap::new();
for line in String::from_utf8_lossy(&status.stdout).split('\n') {