Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 17 additions & 12 deletions src/interactive.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
use crate::config::Config;
use crate::update_version;
use crate::{WorkflowMode, config::BumpMode, defaults::Defaults};
use anyhow::{Result, anyhow};
use anyhow::{Context, Result, anyhow};
use dialoguer::theme::ColorfulTheme;
use dialoguer::{FuzzySelect, Select};
use log::debug;
Expand All @@ -26,23 +27,15 @@ pub fn select_mode(config: &Config) -> Result<WorkflowMode> {
"Init" => Ok(interactive_init()?),
"Display" => Ok(WorkflowMode::Display),
"Sync" => {
let version = if let Some(version) = &config.version {
semver::Version::parse(version.as_str())?
} else {
prompt_version()?
};
let version = new_version(config, &BumpMode::Version("0.0.0".to_string()))?;
Ok(WorkflowMode::Bump {
mode: BumpMode::Version(version.to_string()),
version,
})
}
"Bump" => {
let bump_mode = select_bump_mode()?;
let version = if let Some(version) = &config.version {
semver::Version::parse(version)?
} else {
prompt_version()?
};
let version = new_version(config, &bump_mode)?;
Ok(WorkflowMode::Bump {
mode: bump_mode,
version,
Expand Down Expand Up @@ -159,10 +152,22 @@ fn prompt_version() -> Result<semver::Version> {
let version = dialoguer::Input::<String>::new()
.with_prompt("Enter Version")
.default("0.1.0".to_string())
.interact()?;
.interact()
.context("Failed to read version")?;
semver::Version::parse(&version).map_err(|e| anyhow!("Invalid version: {}", e))
}

/// Prompt for a new version based on the current version and bump mode
pub fn new_version(config: &Config, bump_mode: &BumpMode) -> Result<semver::Version> {
let mut version = if let Some(version) = &config.version {
semver::Version::parse(version).context(format!("Failed to parse version: {version}"))?
} else {
prompt_version()?
};
update_version(&mut version, bump_mode);
Ok(version)
}

fn find_project_name() -> Result<String> {
let current_dir = std::env::current_dir()?;
let project_name = current_dir
Expand Down
13 changes: 2 additions & 11 deletions src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,9 @@
#![deny(unsafe_code)]

use anyhow::Result;
use anyhow::anyhow;
use console::style;
use defaults::Defaults;
use log::debug;
use log::info;
use log::warn;
use log::{debug, info, warn};

mod cli;
mod config;
Expand Down Expand Up @@ -99,13 +96,7 @@ async fn main() -> Result<()> {
};
debug!("CLI Mode: {:?}", bump_mode);

let version = if let Some(version) = &config.version {
let mut version = semver::Version::parse(version.as_str())?;
update_version(&mut version, &bump_mode);
version
} else {
return Err(anyhow!("Version not found in config"));
};
let version = new_version(&config, &bump_mode)?;

WorkflowMode::Bump {
mode: bump_mode,
Expand Down