Skip to content

Commit 907ebe5

Browse files
committed
add experimental self-update functionality
1 parent 5837a93 commit 907ebe5

5 files changed

Lines changed: 167 additions & 5 deletions

File tree

.github/workflows/release.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,31 +21,31 @@ jobs:
2121
os: ubuntu-latest
2222
target: x86_64-unknown-linux-musl
2323
bin: coman
24-
name: coman-Linux-x86_64-musl.tar.gz
24+
name: coman-x86_64-unknown-linux-musl.tar.gz
2525
cargo_command: cargo
2626
squash: true
2727

2828
- os_name: Linux-aarch64
2929
os: ubuntu-24.04-arm
3030
target: aarch64-unknown-linux-musl
3131
bin: coman
32-
name: coman-Linux-aarch64-musl.tar.gz
32+
name: coman-aarch64-unknown-linux-musl.tar.gz
3333
cargo_command: cargo
3434
squash: true
3535

3636
- os_name: Windows-aarch64
3737
os: windows-latest
3838
target: aarch64-pc-windows-msvc
3939
bin: coman.exe
40-
name: coman-Windows-aarch64.zip
40+
name: coman-aarch64-pc-windows-msvc.zip
4141
cargo_command: cargo
4242
squash: false
4343

4444
- os_name: macOS-x86_64
4545
os: macOS-latest
4646
target: x86_64-apple-darwin
4747
bin: coman
48-
name: coman-Darwin-x86_64.tar.gz
48+
name: coman-x86_64-apple-darwin.tar.gz
4949
cargo_command: cargo
5050
squash: false
5151

Cargo.lock

Lines changed: 140 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coman/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ tarpc = { version = "0.37.0", features = [
9393
tokio-duplex = "1.0.1"
9494
sysinfo = "0.38.0"
9595
bytesize = "2.3.1"
96+
self_update = { version = "0.42.0", features = ["archive-tar", "archive-zip"] }
9697

9798
[build-dependencies]
9899
anyhow = "1.0.90"

coman/src/cli/app.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ pub struct Cli {
3535
pub enum CliCommands {
3636
#[clap(about = "Show version and config file locations")]
3737
Version,
38+
#[clap(about = "Self-update coman. Experimental", hide = true)]
39+
Update,
3840
#[clap(about = "Subcommands related to CSCS")]
3941
Cscs {
4042
#[command(subcommand)]

coman/src/main.rs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ use clap::{CommandFactory, Parser};
44
use clap_complete::CompleteEnv;
55
use color_eyre::Result;
66
use keyring::set_global_service_name;
7+
use self_update::cargo_crate_version;
78
use tokio::{runtime::Handle, sync::mpsc};
89
use tuirealm::{
910
Application, EventListenerCfg, PollStrategy, Sub, SubClause, SubEventClause, Update,
@@ -67,6 +68,12 @@ async fn main() -> Result<()> {
6768
match args.command {
6869
Some(command) => match command {
6970
CliCommands::Version => println!("{}", version()),
71+
CliCommands::Update => {
72+
tokio::task::spawn_blocking(move || {
73+
update().unwrap();
74+
})
75+
.await?
76+
}
7077
CliCommands::Completions { generator } => {
7178
let mut cmd = Cli::command();
7279
print_completions(generator, &mut cmd);
@@ -372,3 +379,16 @@ fn popup_exclusion_clause() -> SubClause<Id> {
372379
SubClause::IsMounted(Id::SystemSelectPopup),
373380
])))
374381
}
382+
383+
fn update() -> Result<()> {
384+
let status = self_update::backends::github::Update::configure()
385+
.repo_owner("SwissDataScienceCenter")
386+
.repo_name("coman")
387+
.bin_name("coman")
388+
.show_download_progress(true)
389+
.current_version(cargo_crate_version!())
390+
.build()?
391+
.update()?;
392+
println!("Update status: `{}`", status.version());
393+
Ok(())
394+
}

0 commit comments

Comments
 (0)