bump_cargo_version 0.1.3

Command line tool for bump up cargo version
#[allow(warnings)]
pub mod cli {
    pub fn cli() {
        run("./Cargo.toml");
    }
    fn get_cargo_toml_string(path: &str) -> String {
        std::fs::read_to_string(path)
            .expect("Please make sure that the current folder Cargo.toml file exists")
    }

    fn bump_version(version: String) -> String {
        let version_string = version.to_string();
        let mut version_vec = doe::split_to_vec!(version_string, ".");
        let mut version_vec_last = version_vec.last().unwrap().parse::<usize>().unwrap();
        version_vec_last += 1;
        let new_version = if version_vec.len() == 1 {
            format!("{}", version_vec_last)
        } else {
            version_vec.remove(version_vec.len() - 1);
            format!("{}.{}", version_vec.clone().join("."), version_vec_last)
        };
        new_version
    }
    fn run(path: &str) {
        let toml_string = get_cargo_toml_string(path);
        let cargo_toml = tsu::toml_from_str(toml_string.clone());
        let package = cargo_toml
            .get("package")
            .expect("Cargo.toml don't find the package table");
        let version = package
            .get("version")
            .expect("package table don't find the version key");
        let name = package
            .get("name")
            .expect("package table don't find the name key");
        let name_string = name.as_str().unwrap().to_string();
        let version_string = version.as_str().unwrap().to_string();
        let mut version_vec = doe::split_to_vec!(version_string, ".");
        let mut version_vec_last = version_vec.last().unwrap().parse::<usize>().unwrap();
        version_vec_last += 1;
        let new_version = if version_vec.len() == 1 {
            format!("{}", version_vec_last)
        } else {
            version_vec.remove(version_vec.len() - 1);
            format!("{}.{}", version_vec.clone().join("."), version_vec_last)
        };
        println!(
            "Upgrading {} from {} to {}",
            name_string, version_string, new_version
        );
        let mut toml_string_split = toml_string.split("\n").map(|s|s.to_string()).collect::<Vec<String>>();
        let find_index = |toml_string_split: Vec<String>,old_version:String| {
            let mut index: usize = 0;
            for (i, s) in toml_string_split.iter().enumerate() {
                if s.contains("version")&&s.contains(&old_version)&&!s.contains("}")&&!s.contains("{") {
                    index = i;
                    break;
                }
            }
            index
        };
        let find_package_index = |toml_string_split: Vec<String>| {
            let mut index: usize = 0;
            for (i, s) in toml_string_split.iter().enumerate() {
                if s.contains("[package]") {
                    index = i;
                    break;
                }
            }
            index
        };
        let package_index = find_package_index(toml_string_split.clone());
        let package_to_last = toml_string_split.get(package_index..).unwrap().to_vec();
        let version_index = find_index(package_to_last.clone(),version_string);
        toml_string_split[package_index+version_index] = format!("version = \"{}\"", new_version);
        let toml_string_join = toml_string_split.join("\n");
        std::fs::write(path, toml_string_join).unwrap();
    }
}