extern crate regex;
use std:: process :: Command ;
use regex:: Regex ;
fn resolve_status( status: & str) -> ( ) {
if status == "[playing]" {
print! ( ">> " ) ;
} else if status == "[paused]" {
print! ( "|| " ) ;
} else {
print! ( "" ) ;
}
}
fn main( ) {
let output = Command:: new ( "mpc" )
.arg ( "status" )
.output ( )
.expect ( "" ) ;
let output_formatted = String:: from_utf8_lossy ( & output.stdout ) ;
let re_status = Regex:: new ( r"\[(paused|playing)\]" ) .unwrap ( ) ;
match re_status.captures ( & output_formatted) {
Some( caps) => resolve_status( & caps[ 0 ] ) ,
None => print! ( "" )
}
let split = output_formatted.split ( "\n " ) ;
let vec: Vec<& str> = split.collect ( ) ;
// Remove the .contains() check for
// the MPC playback parameters output
// (volume, repeat, random, single, consume)
// when MPC is stopped.
if vec[ 0 ] .contains ( "volume" ) {
print! ( "" )
} else {
print! ( "{} " , & vec[ 0 ] ) ;
}
let re_time = Regex:: new ( r"([\d:]{1,}/[\d:]{1,})" ) .unwrap ( ) ;
match re_time.captures_iter ( & output_formatted) .nth ( 1 ) {
Some( caps) => print! ( "[{}]" , caps.get ( 0 ) .unwrap ( ) .as_str ( ) ) ,
None => print! ( "" )
} ;
}
ZXh0ZXJuIGNyYXRlIHJlZ2V4OwogICAgIAp1c2Ugc3RkOjpwcm9jZXNzOjpDb21tYW5kOwp1c2UgcmVnZXg6OlJlZ2V4OwogICAgIApmbiByZXNvbHZlX3N0YXR1cyhzdGF0dXM6ICZzdHIpIC0+ICgpIHsKICAgIGlmIHN0YXR1cyA9PSAiW3BsYXlpbmddIiB7CiAgICAgICAgcHJpbnQhKCI+PiAiKTsKICAgICAgICB9IGVsc2UgaWYgc3RhdHVzID09ICJbcGF1c2VkXSIgewogICAgICAgIHByaW50ISgifHwgIik7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICBwcmludCEoIiIpOwogICAgICAgIH0KfSAKICAgICAKZm4gbWFpbigpIHsgICAgIAogICAgbGV0IG91dHB1dCA9IENvbW1hbmQ6Om5ldygibXBjIikgICAgICAgICAKICAgICAgICAuYXJnKCJzdGF0dXMiKSAgICAgICAgIAogICAgICAgIC5vdXRwdXQoKQogICAgICAgIC5leHBlY3QoIiIpOwogICAgIAogICAgbGV0IG91dHB1dF9mb3JtYXR0ZWQgPSBTdHJpbmc6OmZyb21fdXRmOF9sb3NzeSgmb3V0cHV0LnN0ZG91dCk7CiAgICAgCiAgICBsZXQgcmVfc3RhdHVzID0gUmVnZXg6Om5ldyhyIlxbKHBhdXNlZHxwbGF5aW5nKVxdIikudW53cmFwKCk7CiAgICBtYXRjaCByZV9zdGF0dXMuY2FwdHVyZXMoJm91dHB1dF9mb3JtYXR0ZWQpIHsgICAgICAgICAKICAgICAgICBTb21lKGNhcHMpID0+IHJlc29sdmVfc3RhdHVzKCZjYXBzWzBdKSwgICAgICAgICAKICAgICAgICBOb25lID0+IHByaW50ISgiIikgICAgIAogICAgfQogICAgCiAgICBsZXQgc3BsaXQgPSBvdXRwdXRfZm9ybWF0dGVkLnNwbGl0KCJcbiIpOwogICAgbGV0IHZlYzogVmVjPCZzdHI+ID0gc3BsaXQuY29sbGVjdCgpOwogICAgIAogICAgLy8gUmVtb3ZlIHRoZSAuY29udGFpbnMoKSBjaGVjayBmb3IgICAgIAogICAgLy8gdGhlIE1QQyBwbGF5YmFjayBwYXJhbWV0ZXJzIG91dHB1dCAgICAgCiAgICAvLyAodm9sdW1lLCByZXBlYXQsIHJhbmRvbSwgc2luZ2xlLCBjb25zdW1lKSAgICAgCiAgICAvLyB3aGVuIE1QQyBpcyBzdG9wcGVkLiAgICAgCiAgICBpZiB2ZWNbMF0uY29udGFpbnMoInZvbHVtZSIpIHsKICAgICAgICBwcmludCEoIiIpCiAgICAgICAgfSBlbHNlIHsKICAgICAgICBwcmludCEoInt9ICIsICZ2ZWNbMF0pOwogICAgfQogICAgIAogICAgbGV0IHJlX3RpbWUgPSBSZWdleDo6bmV3KHIiKFtcZDpdezEsfS9bXGQ6XXsxLH0pIikudW53cmFwKCk7CiAgICBtYXRjaCByZV90aW1lLmNhcHR1cmVzX2l0ZXIoJm91dHB1dF9mb3JtYXR0ZWQpLm50aCgxKSB7CiAgICAgICAgU29tZShjYXBzKSA9PiBwcmludCEoIlt7fV0iLCBjYXBzLmdldCgwKS51bndyYXAoKS5hc19zdHIoKSksCiAgICAgICAgTm9uZSA9PiBwcmludCEoIiIpCiAgICB9Owp9
compilation info
error[E0463]: can't find crate for `regex`
--> prog.rs:1:1
|
1 | extern crate regex;
| ^^^^^^^^^^^^^^^^^^^ can't find crate
error: aborting due to previous error
For more information about this error, try `rustc --explain E0463`.
stdout