Browse Source

Merge branch 'main' of github.com:dora-rs/dora

tags/v0.3.11-rc1
starlitxiling 10 months ago
parent
commit
6b333d5c91
4 changed files with 149 additions and 5 deletions
  1. +68
    -5
      Cargo.lock
  2. +6
    -0
      binaries/cli/Cargo.toml
  3. +6
    -0
      binaries/cli/build.rs
  4. +69
    -0
      binaries/cli/src/lib.rs

+ 68
- 5
Cargo.lock View File

@@ -1372,7 +1372,7 @@ dependencies = [
"path_abs",
"plist",
"regex",
"semver",
"semver 1.0.23",
"serde",
"serde_yaml 0.9.34+deprecated",
"shell-words",
@@ -1693,7 +1693,7 @@ checksum = "4acbb09d9ee8e23699b9634375c72795d095bf268439da88562cf9b501f181fa"
dependencies = [
"camino",
"cargo-platform",
"semver",
"semver 1.0.23",
"serde",
"serde_json",
]
@@ -1706,7 +1706,7 @@ checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037"
dependencies = [
"camino",
"cargo-platform",
"semver",
"semver 1.0.23",
"serde",
"serde_json",
"thiserror 1.0.66",
@@ -2615,6 +2615,7 @@ dependencies = [
"log",
"notify 5.2.0",
"pyo3",
"self_update",
"serde",
"serde_json",
"serde_yaml 0.9.34+deprecated",
@@ -2755,7 +2756,7 @@ dependencies = [
"log",
"once_cell",
"schemars",
"semver",
"semver 1.0.23",
"serde",
"serde-with-expand-env",
"serde_yaml 0.9.34+deprecated",
@@ -4823,6 +4824,18 @@ dependencies = [
"serde",
]

[[package]]
name = "indicatif"
version = "0.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7baab56125e25686df467fe470785512329883aab42696d661247aca2a2896e4"
dependencies = [
"console",
"lazy_static",
"number_prefix",
"regex",
]

[[package]]
name = "indoc"
version = "2.0.5"
@@ -6240,6 +6253,12 @@ dependencies = [
"libc",
]

[[package]]
name = "number_prefix"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "17b02fc0ff9a9e4b35b3342880f48e896ebf69f2967921fe8646bf5b7125956a"

[[package]]
name = "nvml-wrapper"
version = "0.10.0"
@@ -7634,6 +7653,15 @@ dependencies = [
"serde",
]

[[package]]
name = "quick-xml"
version = "0.20.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "26aab6b48e2590e4a64d1ed808749ba06257882b461d01ca71baeb747074a6dd"
dependencies = [
"memchr",
]

[[package]]
name = "quick-xml"
version = "0.30.0"
@@ -9961,7 +9989,7 @@ version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92"
dependencies = [
"semver",
"semver 1.0.23",
]

[[package]]
@@ -10346,6 +10374,32 @@ dependencies = [
"libc",
]

[[package]]
name = "self_update"
version = "0.27.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6fb85f1802f7b987237b8525c0fde86ea86f31c957c1875467c727d5b921179c"
dependencies = [
"hyper 0.14.30",
"indicatif",
"log",
"quick-xml 0.20.0",
"regex",
"reqwest 0.11.27",
"semver 0.11.0",
"serde_json",
"tempfile",
]

[[package]]
name = "semver"
version = "0.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6"
dependencies = [
"semver-parser",
]

[[package]]
name = "semver"
version = "1.0.23"
@@ -10355,6 +10409,15 @@ dependencies = [
"serde",
]

[[package]]
name = "semver-parser"
version = "0.10.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9900206b54a3527fdc7b8a938bffd94a568bac4f4aa8113b209df75a09c0dec2"
dependencies = [
"pest",
]

[[package]]
name = "seq-macro"
version = "0.3.5"


+ 6
- 0
binaries/cli/Cargo.toml View File

@@ -50,6 +50,12 @@ tabwriter = "1.4.0"
log = { version = "0.4.21", features = ["serde"] }
colored = "2.1.0"
env_logger = "0.11.3"
self_update = { version = "0.27.0", features = [
"rustls",
"archive-zip",
"archive-tar",
"compression-flate2",
], default-features = false }
pyo3 = { workspace = true, features = [
"extension-module",
"abi3",


+ 6
- 0
binaries/cli/build.rs View File

@@ -0,0 +1,6 @@
fn main() {
println!(
"cargo:rustc-env=TARGET={}",
std::env::var("TARGET").unwrap()
);
}

+ 69
- 0
binaries/cli/src/lib.rs View File

@@ -240,6 +240,20 @@ enum Command {
#[clap(long)]
quiet: bool,
},

Self_ {
#[clap(subcommand)]
command: SelfSubCommand,
},
}

#[derive(Debug, clap::Subcommand)]
enum SelfSubCommand {
Update {
/// Only check for updates without installing
#[clap(long)]
check_only: bool,
},
}

#[derive(Debug, clap::Args)]
@@ -538,6 +552,61 @@ fn run(args: Args) -> eyre::Result<()> {
.context("failed to run dora-daemon")?
}
Command::Runtime => dora_runtime::main().context("Failed to run dora-runtime")?,
Command::Self_ { command } => match command {
SelfSubCommand::Update { check_only } => {
println!("Checking for updates...");

#[cfg(target_os = "linux")]
let bin_path_in_archive = format!("dora-cli-{}/dora", env!("TARGET"));
#[cfg(target_os = "macos")]
let bin_path_in_archive = format!("dora-cli-{}/dora", env!("TARGET"));
#[cfg(target_os = "windows")]
let bin_path_in_archive = String::from("dora.exe");

let status = self_update::backends::github::Update::configure()
.repo_owner("dora-rs")
.repo_name("dora")
.bin_path_in_archive(&bin_path_in_archive)
.bin_name("dora")
.show_download_progress(true)
.current_version(env!("CARGO_PKG_VERSION"))
.build()?;

if check_only {
// Only check if an update is available
match status.get_latest_release() {
Ok(release) => {
let current_version = self_update::cargo_crate_version!();
if current_version != release.version {
println!(
"An update is available: {}. Run 'dora self update' to update",
release.version
);
} else {
println!(
"Dora CLI is already at the latest version: {}",
current_version
);
}
}
Err(e) => println!("Failed to check for updates: {}", e),
}
} else {
// Perform the actual update
match status.update() {
Ok(update_status) => match update_status {
self_update::Status::UpToDate(version) => {
println!("Dora CLI is already at the latest version: {}", version);
}
self_update::Status::Updated(version) => {
println!("Successfully updated Dora CLI to version: {}", version);
}
},
Err(e) => println!("Failed to update: {}", e),
}
}
}
},
};

Ok(())


Loading…
Cancel
Save