cargo-bump 0.0.1

Increments the version number of the current project.
use config::NewVersion;
use semver::Version;
use std::fs;
use std::io::Read;
use std::path::Path;
use toml::{Parser, Value};

pub fn get_current_version(file: &Path) -> (Version, Value) {
    let mut file = fs::File::open(file).unwrap();
    let mut raw_data = String::new();
    file.read_to_string(&mut raw_data).unwrap();
    let mut parser = Parser::new(&raw_data);
    let parsed_data = Value::Table(parser.parse()
        .unwrap_or_else(|| panic!("couldn't parse Cargo.toml, {:?}", parser.errors)));
    let raw_version = parsed_data.lookup("package.version")
        .unwrap_or_else(|| panic!("package.version missing"))
        .as_str()
        .unwrap_or_else(|| panic!("version not a string"));

    (Version::parse(raw_version).unwrap(), parsed_data.clone())
}

pub fn update_version(old: &mut Version, by: NewVersion) {
    match by {
        NewVersion::String(v) => {
            *old = v;
        },
        NewVersion::Major => {
            old.increment_major();
        },
        NewVersion::Minor => {
            old.increment_minor();
        },
        NewVersion::Patch => {
            old.increment_patch();
        }
    }
}