cowsay, but with (ᗜˬᗜ)/\(ᗜ˰ᗜ) soft friends
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

46 lines
1.4 KiB

use std::path::Path;
use std::fs;
use std::env;
/// Indicator of where the message should be in fumofile
pub const MESSAGE_INDICATOR: &str = "!message";
/// Fumofile name of the default fumo
pub const FUMO_DEFAULT: &str = "fumo.fumo";
/// Returns a resulting string with `MESSAGE_INDICATOR` replaced with given
/// `message`. If `MESSAGE_INDICATOR` is not present in fumofile - the
/// `message` will be added on the new line at the end of the fumofile.
fn process_message(fumofile_contents: &mut String, message: &str) -> String {
if fumofile_contents.contains(MESSAGE_INDICATOR) {
return fumofile_contents.replace(MESSAGE_INDICATOR,message);
}
return format!("{}\n{}", fumofile_contents, message);
}
fn main() {
// get command line arguments
let args: Vec<String> = env::args().collect();
// try to retrieve a message from args
if args.len() <= 1 {
// no message was provided
std::process::exit(1);
}
let clarg_message: &String = &args[1..].join(" ");
// path to the fumofile
let fumofile_default_path: String = format!("./fumofiles/{}",FUMO_DEFAULT);
let fumofile_path: &Path = Path::new(&fumofile_default_path);
// read fumofile
let mut fumofile_contents: String = fs::read_to_string(fumofile_path).unwrap();
// parse the file and get the resulting string
let message: String = process_message(&mut fumofile_contents, clarg_message);
println!("{}", message);
}