fork download
  1. extern crate regex;
  2.  
  3. use std::process::Command;
  4. use regex::Regex;
  5.  
  6. fn resolve_status(status: &str) -> () {
  7. if status == "[playing]" {
  8. print!(">> ");
  9. } else if status == "[paused]" {
  10. print!("|| ");
  11. } else {
  12. print!("");
  13. }
  14. }
  15.  
  16. fn main() {
  17. let output = Command::new("mpc")
  18. .arg("status")
  19. .output()
  20. .expect("");
  21.  
  22. let output_formatted = String::from_utf8_lossy(&output.stdout);
  23.  
  24. let re_status = Regex::new(r"\[(paused|playing)\]").unwrap();
  25. match re_status.captures(&output_formatted) {
  26. Some(caps) => resolve_status(&caps[0]),
  27. None => print!("")
  28. }
  29.  
  30. let split = output_formatted.split("\n");
  31. let vec: Vec<&str> = split.collect();
  32.  
  33. // Remove the .contains() check for
  34. // the MPC playback parameters output
  35. // (volume, repeat, random, single, consume)
  36. // when MPC is stopped.
  37. if vec[0].contains("volume") {
  38. print!("")
  39. } else {
  40. print!("{} ", &vec[0]);
  41. }
  42.  
  43. let re_time = Regex::new(r"([\d:]{1,}/[\d:]{1,})").unwrap();
  44. match re_time.captures_iter(&output_formatted).nth(1) {
  45. Some(caps) => print!("[{}]", caps.get(0).unwrap().as_str()),
  46. None => print!("")
  47. };
  48. }
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
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
Standard output is empty