@@ -10,7 +10,7 @@ use soar_dl::{
10
10
github:: { Github , GithubRelease } ,
11
11
platform:: { Release , ReleaseAsset , ReleaseHandler } ,
12
12
} ;
13
- use tracing:: { error, info} ;
13
+ use tracing:: { debug , error, info} ;
14
14
15
15
use crate :: cli:: SelfAction ;
16
16
@@ -19,9 +19,12 @@ pub async fn process_self_action(action: &SelfAction) -> SoarResult<()> {
19
19
env:: current_exe ( ) . with_context ( || "Failed to get executable path" . to_string ( ) ) ?;
20
20
let self_version = env ! ( "CARGO_PKG_VERSION" ) ;
21
21
22
+ debug ! ( "Executable path: {}" , self_bin. display( ) ) ;
23
+
22
24
match action {
23
25
SelfAction :: Update => {
24
26
let is_nightly = self_version. starts_with ( "nightly" ) ;
27
+ debug ! ( "Current version: {}" , self_version) ;
25
28
26
29
let target_nightly = match ( env:: var ( "SOAR_NIGHTLY" ) , env:: var ( "SOAR_RELEASE" ) ) {
27
30
( Ok ( _) , Err ( _) ) => true ,
@@ -36,26 +39,48 @@ pub async fn process_self_action(action: &SelfAction) -> SoarResult<()> {
36
39
37
40
let release = releases. iter ( ) . find ( |rel| {
38
41
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
+ ) ;
39
52
if target_nightly {
40
53
is_nightly_release && rel. name ( ) != self_version
41
54
} else {
42
55
let release_version = rel. tag_name ( ) . trim_start_matches ( "v" ) ;
43
56
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 ( ) ;
46
59
47
- match ( release_version , self_version ) {
60
+ match ( parsed_release_version , parsed_self_version ) {
48
61
( 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
50
76
}
51
- _ => false ,
52
77
}
53
78
}
54
79
} ) ;
55
80
56
81
if let Some ( release) = release {
57
82
if target_nightly != is_nightly {
58
- println ! (
83
+ info ! (
59
84
"Switching from {} to {} channel" ,
60
85
if is_nightly { "nightly" } else { "stable" } ,
61
86
if target_nightly { "nightly" } else { "stable" }
@@ -70,12 +95,17 @@ pub async fn process_self_action(action: &SelfAction) -> SoarResult<()> {
70
95
a. name . contains ( ARCH ) && !a. name . contains ( "tar" ) && !a. name . contains ( "sum" )
71
96
} )
72
97
. unwrap ( ) ;
98
+
99
+ debug ! ( "Selected asset: {}" , asset. name) ;
100
+
73
101
let downloader = Downloader :: default ( ) ;
74
102
let options = DownloadOptions {
75
103
url : asset. download_url ( ) . to_string ( ) ,
76
104
output_path : Some ( self_bin. to_string_lossy ( ) . to_string ( ) ) ,
77
105
progress_callback : None ,
78
106
} ;
107
+
108
+ debug ! ( "Downloading update from: {}" , options. url) ;
79
109
downloader. download ( options) . await ?;
80
110
info ! ( "Soar updated to {}" , release. tag_name( ) ) ;
81
111
} else {
0 commit comments