mirror of
https://github.com/mii443/wasmer.git
synced 2025-12-07 21:28:21 +00:00
Add spinner when installing package
This commit is contained in:
45
Cargo.lock
generated
45
Cargo.lock
generated
@@ -46,6 +46,12 @@ dependencies = [
|
|||||||
"libc",
|
"libc",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "ansi_term"
|
||||||
|
version = "0.7.5"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "30275ad0ad84ec1c06dde3b3f7d23c6006b7d76d61a85e7060b426b747eff70d"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ansi_term"
|
name = "ansi_term"
|
||||||
version = "0.12.1"
|
version = "0.12.1"
|
||||||
@@ -353,7 +359,7 @@ version = "2.34.0"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c"
|
checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"ansi_term",
|
"ansi_term 0.12.1",
|
||||||
"atty",
|
"atty",
|
||||||
"bitflags",
|
"bitflags",
|
||||||
"strsim 0.8.0",
|
"strsim 0.8.0",
|
||||||
@@ -828,6 +834,16 @@ dependencies = [
|
|||||||
"subtle",
|
"subtle",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "dirs"
|
||||||
|
version = "2.0.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "13aea89a5c93364a98e9b37b2fa237effbb694d5cfe01c5b70941f7eb087d5e3"
|
||||||
|
dependencies = [
|
||||||
|
"cfg-if 0.1.10",
|
||||||
|
"dirs-sys",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "dirs"
|
name = "dirs"
|
||||||
version = "4.0.0"
|
version = "4.0.0"
|
||||||
@@ -2405,6 +2421,16 @@ version = "0.5.2"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d"
|
checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "spinner"
|
||||||
|
version = "0.5.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "6e3a7cd01625b7e43e62815677d692cb59b221c2fdc2853d1eb86a260ee0c272"
|
||||||
|
dependencies = [
|
||||||
|
"ansi_term 0.7.5",
|
||||||
|
"term 0.6.1",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "stable_deref_trait"
|
name = "stable_deref_trait"
|
||||||
version = "1.2.0"
|
version = "1.2.0"
|
||||||
@@ -2524,6 +2550,16 @@ dependencies = [
|
|||||||
"winapi",
|
"winapi",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "term"
|
||||||
|
version = "0.6.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "c0863a3345e70f61d613eab32ee046ccd1bcc5f9105fe402c61fcd0c13eeb8b5"
|
||||||
|
dependencies = [
|
||||||
|
"dirs 2.0.2",
|
||||||
|
"winapi",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "term"
|
name = "term"
|
||||||
version = "0.7.0"
|
version = "0.7.0"
|
||||||
@@ -2579,7 +2615,7 @@ dependencies = [
|
|||||||
"getopts",
|
"getopts",
|
||||||
"libc",
|
"libc",
|
||||||
"num_cpus",
|
"num_cpus",
|
||||||
"term",
|
"term 0.7.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -3118,12 +3154,13 @@ dependencies = [
|
|||||||
"cfg-if 1.0.0",
|
"cfg-if 1.0.0",
|
||||||
"clap 4.0.5",
|
"clap 4.0.5",
|
||||||
"colored 2.0.0",
|
"colored 2.0.0",
|
||||||
"dirs",
|
"dirs 4.0.0",
|
||||||
"distance",
|
"distance",
|
||||||
"fern",
|
"fern",
|
||||||
"http_req",
|
"http_req",
|
||||||
"log",
|
"log",
|
||||||
"serde_json",
|
"serde_json",
|
||||||
|
"spinner",
|
||||||
"target-lexicon 0.12.4",
|
"target-lexicon 0.12.4",
|
||||||
"tempfile",
|
"tempfile",
|
||||||
"unix_mode",
|
"unix_mode",
|
||||||
@@ -3340,7 +3377,7 @@ dependencies = [
|
|||||||
name = "wasmer-registry"
|
name = "wasmer-registry"
|
||||||
version = "3.0.0-beta.2"
|
version = "3.0.0-beta.2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"dirs",
|
"dirs 4.0.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
|||||||
@@ -43,6 +43,7 @@ wasmer-vfs = { version = "=3.0.0-beta.2", path = "../vfs", default-features = f
|
|||||||
atty = "0.2"
|
atty = "0.2"
|
||||||
colored = "2.0"
|
colored = "2.0"
|
||||||
anyhow = "1.0"
|
anyhow = "1.0"
|
||||||
|
spinner = "0.5.0"
|
||||||
clap = { version = "4.0.5", features = ["derive"] }
|
clap = { version = "4.0.5", features = ["derive"] }
|
||||||
# For the function names autosuggestion
|
# For the function names autosuggestion
|
||||||
distance = "0.4"
|
distance = "0.4"
|
||||||
|
|||||||
@@ -39,8 +39,6 @@ fn parse_cli_args() -> Result<(), anyhow::Error> {
|
|||||||
let firstarg = args.get(1).map(|s| s.as_str());
|
let firstarg = args.get(1).map(|s| s.as_str());
|
||||||
let secondarg = args.get(2).map(|s| s.as_str());
|
let secondarg = args.get(2).map(|s| s.as_str());
|
||||||
|
|
||||||
println!("{:?}", (firstarg, secondarg));
|
|
||||||
|
|
||||||
match (firstarg, secondarg) {
|
match (firstarg, secondarg) {
|
||||||
(None, _) | (Some("help"), _) | (Some("--help"), _) => return print_help(),
|
(None, _) | (Some("help"), _) | (Some("--help"), _) => return print_help(),
|
||||||
|
|
||||||
@@ -79,24 +77,32 @@ fn parse_cli_args() -> Result<(), anyhow::Error> {
|
|||||||
// Try finding the local package
|
// Try finding the local package
|
||||||
let mut args_without_package = args.clone();
|
let mut args_without_package = args.clone();
|
||||||
args_without_package.remove(1);
|
args_without_package.remove(1);
|
||||||
println!("args without package: {:#?}", args_without_package);
|
|
||||||
return RunWithoutFile::try_parse_from(args_without_package.iter())?
|
|
||||||
.into_run_args(o)
|
|
||||||
.execute();
|
|
||||||
} else if let Ok(o) =
|
|
||||||
wasmer_registry::install_package(&package, version.as_ref().map(|s| s.as_str()))
|
|
||||||
{
|
|
||||||
// Try auto-installing the remote package
|
|
||||||
let mut args_without_package = args.clone();
|
|
||||||
args_without_package.remove(1);
|
|
||||||
return RunWithoutFile::try_parse_from(args_without_package.iter())?
|
return RunWithoutFile::try_parse_from(args_without_package.iter())?
|
||||||
.into_run_args(o)
|
.into_run_args(o)
|
||||||
.execute();
|
.execute();
|
||||||
} else {
|
} else {
|
||||||
// Failed to find the remote package
|
let sp =
|
||||||
//
|
spinner::SpinnerBuilder::new(format!("Installing package {package} ..."))
|
||||||
// TODO: print list of similar packages
|
.spinner(vec![
|
||||||
return print_help();
|
"⣾", "⣽", "⣻", "⢿", "⡿", "⣟", "⣯", "⣷", " ", "⠁", "⠂", "⠄", "⡀",
|
||||||
|
"⢀", "⠠", "⠐", "⠈",
|
||||||
|
])
|
||||||
|
.start();
|
||||||
|
|
||||||
|
let v = version.as_ref().map(|s| s.as_str());
|
||||||
|
let result = wasmer_registry::install_package(&package, v);
|
||||||
|
sp.close();
|
||||||
|
print!("\r\n");
|
||||||
|
if let Ok(o) = result {
|
||||||
|
// Try auto-installing the remote package
|
||||||
|
let mut args_without_package = args.clone();
|
||||||
|
args_without_package.remove(1);
|
||||||
|
return RunWithoutFile::try_parse_from(args_without_package.iter())?
|
||||||
|
.into_run_args(o)
|
||||||
|
.execute();
|
||||||
|
} else {
|
||||||
|
return print_help();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
return print_help();
|
return print_help();
|
||||||
@@ -107,13 +113,11 @@ fn parse_cli_args() -> Result<(), anyhow::Error> {
|
|||||||
|
|
||||||
fn split_version(s: &str) -> Result<(String, Option<String>), anyhow::Error> {
|
fn split_version(s: &str) -> Result<(String, Option<String>), anyhow::Error> {
|
||||||
let package_version = s.split("@").collect::<Vec<_>>();
|
let package_version = s.split("@").collect::<Vec<_>>();
|
||||||
let r = match package_version.as_slice() {
|
match package_version.as_slice() {
|
||||||
&[p, v] => Ok((p.trim().to_string(), Some(v.trim().to_string()))),
|
&[p, v] => Ok((p.trim().to_string(), Some(v.trim().to_string()))),
|
||||||
&[p] => Ok((p.trim().to_string(), None)),
|
&[p] => Ok((p.trim().to_string(), None)),
|
||||||
_ => Err(anyhow!("Invalid package / version: {s:?}")),
|
_ => Err(anyhow!("Invalid package / version: {s:?}")),
|
||||||
};
|
}
|
||||||
println!("{:?}", r);
|
|
||||||
r
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn print_help() -> Result<(), anyhow::Error> {
|
fn print_help() -> Result<(), anyhow::Error> {
|
||||||
|
|||||||
@@ -41,6 +41,7 @@ pub fn download_and_unpack_targz(url: &str, target_path: &Path) -> Result<PathBu
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn install_package(name: &str, version: Option<&str>) -> Result<PathBuf, String> {
|
pub fn install_package(name: &str, version: Option<&str>) -> Result<PathBuf, String> {
|
||||||
|
std::thread::sleep(std::time::Duration::from_secs(4));
|
||||||
Err(format!("unimplemented"))
|
Err(format!("unimplemented"))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user