Skip to content

Commit aff38ec

Browse files
committed
fix(self_update): fix channel switch
1 parent 531f510 commit aff38ec

File tree

1 file changed

+37
-7
lines changed

1 file changed

+37
-7
lines changed

soar-cli/src/self_actions.rs

Lines changed: 37 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use soar_dl::{
1010
github::{Github, GithubRelease},
1111
platform::{Release, ReleaseAsset, ReleaseHandler},
1212
};
13-
use tracing::{error, info};
13+
use tracing::{debug, error, info};
1414

1515
use crate::cli::SelfAction;
1616

@@ -19,9 +19,12 @@ pub async fn process_self_action(action: &SelfAction) -> SoarResult<()> {
1919
env::current_exe().with_context(|| "Failed to get executable path".to_string())?;
2020
let self_version = env!("CARGO_PKG_VERSION");
2121

22+
debug!("Executable path: {}", self_bin.display());
23+
2224
match action {
2325
SelfAction::Update => {
2426
let is_nightly = self_version.starts_with("nightly");
27+
debug!("Current version: {}", self_version);
2528

2629
let target_nightly = match (env::var("SOAR_NIGHTLY"), env::var("SOAR_RELEASE")) {
2730
(Ok(_), Err(_)) => true,
@@ -36,26 +39,48 @@ pub async fn process_self_action(action: &SelfAction) -> SoarResult<()> {
3639

3740
let release = releases.iter().find(|rel| {
3841
let is_nightly_release = rel.tag_name().starts_with("nightly");
42+
43+
debug!(
44+
"Checking release: {}, Release Channel: {}",
45+
rel.tag_name(),
46+
if is_nightly_release {
47+
"nightly"
48+
} else {
49+
"stable"
50+
}
51+
);
3952
if target_nightly {
4053
is_nightly_release && rel.name() != self_version
4154
} else {
4255
let release_version = rel.tag_name().trim_start_matches("v");
4356

44-
let release_version = Version::parse(release_version).ok();
45-
let self_version = Version::parse(self_version).ok();
57+
let parsed_release_version = Version::parse(release_version).ok();
58+
let parsed_self_version = Version::parse(self_version).ok();
4659

47-
match (release_version, self_version) {
60+
match (parsed_release_version, parsed_self_version) {
4861
(Some(release_ver), Some(self_ver)) => {
49-
!is_nightly_release && (is_nightly || release_ver > self_ver)
62+
let should_update = !is_nightly_release && release_ver > self_ver;
63+
debug!(
64+
"Comparing versions: release_ver={}, self_ver={}, should_update={}",
65+
release_ver, self_ver, should_update
66+
);
67+
should_update
68+
}
69+
(_, None) => is_nightly,
70+
_ => {
71+
debug!(
72+
"Skipping release {} due to invalid version.",
73+
release_version
74+
);
75+
false
5076
}
51-
_ => false,
5277
}
5378
}
5479
});
5580

5681
if let Some(release) = release {
5782
if target_nightly != is_nightly {
58-
println!(
83+
info!(
5984
"Switching from {} to {} channel",
6085
if is_nightly { "nightly" } else { "stable" },
6186
if target_nightly { "nightly" } else { "stable" }
@@ -70,12 +95,17 @@ pub async fn process_self_action(action: &SelfAction) -> SoarResult<()> {
7095
a.name.contains(ARCH) && !a.name.contains("tar") && !a.name.contains("sum")
7196
})
7297
.unwrap();
98+
99+
debug!("Selected asset: {}", asset.name);
100+
73101
let downloader = Downloader::default();
74102
let options = DownloadOptions {
75103
url: asset.download_url().to_string(),
76104
output_path: Some(self_bin.to_string_lossy().to_string()),
77105
progress_callback: None,
78106
};
107+
108+
debug!("Downloading update from: {}", options.url);
79109
downloader.download(options).await?;
80110
info!("Soar updated to {}", release.tag_name());
81111
} else {

0 commit comments

Comments
 (0)