gitversion 0.2.1

Semantic and Sequential Versioning for Git projects
#[macro_use]
extern crate clap;

mod config;
mod tests;
mod versioning;

use crate::{
    config::{Config, Format},
    versioning::{semver::Semver, sequential::Sequential, Versioning},
};
use clap::App;

fn main() {
    let yaml = load_yaml!("cli.yml");
    let matches = App::from_yaml(yaml).get_matches();
    let prefix = matches.value_of("prefix").unwrap().trim();
    let dir = matches.value_of("directory").unwrap().trim();
    let typ = matches.value_of("type").unwrap().trim();
    let format = matches.value_of("format").unwrap().trim();

    let mut config = Config::new(dir, prefix, typ.into(), format.into());

    println!("{}", next_version(&mut config));
}

fn next_version(config: &mut Config) -> String {
    match config.format {
        Format::Semver => Semver::next_version(config),
        Format::Sequential => Sequential::next_version(config),
    }
}