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
1 change: 1 addition & 0 deletions src/cli.rs
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ pub enum ArgumentCommands {
defaults: Option<bool>,
},
Display,
Sync,
Bump {
/// Set Version
#[clap(short, long, env, default_value = "")]
Expand Down
2 changes: 2 additions & 0 deletions src/defaults.yml
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,9 @@ locations:
default: true
paths:
- "**/Dockerfile"
- "**/*.Dockerfile"
- "**/Containerfile"
- "**/*.Containerfile"
- "**/docker-compose.yml"
ecosystems:
- Docker
Expand Down
30 changes: 29 additions & 1 deletion src/interactive.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ pub fn select_mode(config: &Config) -> Result<WorkflowMode> {
}
modes.push("Display");
modes.push("Bump");
modes.push("Sync");

let selection = FuzzySelect::with_theme(&ColorfulTheme::default())
.with_prompt("Select Mode")
Expand All @@ -24,9 +25,28 @@ pub fn select_mode(config: &Config) -> Result<WorkflowMode> {
match *text {
"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()?
};
Ok(WorkflowMode::Bump {
mode: BumpMode::Version(version.to_string()),
version,
})
}
"Bump" => {
let bump_mode = select_bump_mode()?;
Ok(WorkflowMode::Bump(bump_mode))
let version = if let Some(version) = &config.version {
semver::Version::parse(version)?
} else {
prompt_version()?
};
Ok(WorkflowMode::Bump {
mode: bump_mode,
version,
})
}
_ => Err(anyhow!("Invalid selection")),
}
Expand Down Expand Up @@ -135,6 +155,14 @@ pub fn select_bump_mode() -> Result<BumpMode> {
}
}

fn prompt_version() -> Result<semver::Version> {
let version = dialoguer::Input::<String>::new()
.with_prompt("Enter Version")
.default("0.1.0".to_string())
.interact()?;
semver::Version::parse(&version).map_err(|e| anyhow!("Invalid version: {}", e))
}

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

use anyhow::Result;
use anyhow::anyhow;
use console::style;
use defaults::Defaults;
use log::debug;
Expand Down Expand Up @@ -57,6 +58,18 @@
enable_defaults: *defaults,
}
}
Some(ArgumentCommands::Sync) => {
debug!("Sync Mode");
let version = if let Some(version) = &config.version {
semver::Version::parse(version.as_str())?
} else {
semver::Version::parse("0.0.0")?
};
WorkflowMode::Bump {
mode: BumpMode::Version(version.to_string()),
version,
}
}
Some(ArgumentCommands::Bump {
set_version,
mode,
Expand All @@ -66,15 +79,6 @@
}) => {
debug!("Bump Mode");

let cli_mode = if *minor {
BumpMode::Minor
} else if *major {
BumpMode::Major
} else {
BumpMode::Patch
};
debug!("CLI Mode: {:?}", cli_mode);

let bump_mode = if !set_version.is_empty() {
debug!("Manually setting version: {}", set_version);
BumpMode::Version(set_version.clone())
Expand All @@ -83,16 +87,30 @@
BumpMode::from(mode)
} else if let Some(ref version) = config.version {
debug!("Setting mode: Version (from config)");
// Update version from config file
let mut new_version = semver::Version::parse(version)?;
update_version(&mut new_version, &cli_mode);
BumpMode::Version(version.clone())
} else {
if *minor {
BumpMode::Minor
} else if *major {
BumpMode::Major
} else {
BumpMode::Patch
}
};
Comment on lines +91 to +99

Check warning

Code scanning / clippy

this else { if .. } block can be collapsed Warning

this else { if .. } block can be collapsed
Comment on lines +91 to +99

Check warning

Code scanning / clippy

this else { if .. } block can be collapsed Warning

this else { if .. } block can be collapsed
debug!("CLI Mode: {:?}", bump_mode);

BumpMode::Version(new_version.to_string())
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 {
cli_mode
return Err(anyhow!("Version not found in config"));
};

WorkflowMode::Bump(bump_mode)
WorkflowMode::Bump {
mode: bump_mode,
version,
}
}
Some(ArgumentCommands::Display) => WorkflowMode::Display,
None => select_mode(&config)?,
Expand Down Expand Up @@ -139,7 +157,7 @@

workflow.display()?;
}
WorkflowMode::Bump(mode) => {
WorkflowMode::Bump { mode, .. } => {
info!("Bumping version - {:?}", mode);
workflow.patch().await?;
}
Expand Down
27 changes: 12 additions & 15 deletions src/workflows.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,12 @@ pub enum WorkflowMode {
language_ecosystems: Vec<String>,
enable_defaults: Option<bool>,
},
Bump(BumpMode),
Bump {
/// Bump Mode
mode: BumpMode,
/// Version to set
version: semver::Version,
},
Display,
}

Expand All @@ -37,11 +42,10 @@ impl Workflow {
self.process(|path, captures| {
for capture in captures {
let data = capture.get(1).unwrap();
let version = semver::Version::parse(data.as_str())?;
let start = data.start();
let end = data.end();

match self.mode {
match &self.mode {
WorkflowMode::Display => {
info!(
"{:>8} :: {}#{}",
Expand All @@ -50,14 +54,11 @@ impl Workflow {
start
);
}
WorkflowMode::Bump(ref mode) => {
let mut new_version = version.clone();
update_version(&mut new_version, mode);

WorkflowMode::Bump { version, .. } => {
info!(
"{:>8} -> {:<8} :: {}#{}-{}",
style(data.as_str()).red(),
style(new_version).green(),
style(version).green(),
path.display(),
start,
end
Expand All @@ -78,24 +79,20 @@ impl Workflow {

for capture in captures {
let data = capture.get(1).unwrap();
let version = semver::Version::parse(data.as_str())?;
let start = data.start();
let end = data.end();

let location = format!("{}#{}-{}", path.display(), start, end);

if let WorkflowMode::Bump(ref mode) = self.mode {
let mut new_version = version.clone();
update_version(&mut new_version, mode);

if let WorkflowMode::Bump { version, .. } = &self.mode {
info!(
"{:>8} -> {:<8} :: {}",
style(data.as_str()).red(),
style(new_version.clone()).green(),
style(version.clone()).green(),
location
);

content.replace_range(start..end, new_version.to_string().as_str());
content.replace_range(start..end, version.to_string().as_str());
};
}

Expand Down