mirror of
https://github.com/cargo-bins/cargo-binstall.git
synced 2025-04-20 12:38:43 +00:00

* Add new hidden option `--self-install` Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> * Fix typo Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> * Optimize: Only call `LazyJobserverClient::new` when necessary Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> * `--self-install` should include a path to a binary On windows, we cannot just copy an executable with process running from it, so better to copy it to a temporary location. Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> * Impl manifest update and basic API of `self_install` Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> * Add dep atomic-file-install to cargo-binstall Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> * Impl `self_install` Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> * Make `--self-install` a boolean flag Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> * Accept no duration in `MainExit::new` Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> * Impl self-install mode in main_impl.rs Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> * Use `--self-install` mode in install-from-binstall-release.sh Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> * Use `--self-install` in install-from-binstall-release.ps1 Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> * Fix import in mod entry Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> * Fix call of `self_install` in `main_impl` Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> * Fix `--self-install` clap doc Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> * Fix `entry::self_install` Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> * Apply suggestions from code review Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> * Fix parsing semver number in entry.rs Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> * Fix compilation in entry.rs Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> * fix entry.rs Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> * Fix fmt in bin_util.rs Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> * Fix fmt in entry.rs Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> * Use --self-install if supported in unix install script Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> * Use --self-install if available in powershell install script Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> * Fix install-from-binstall-release.ps1 Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> * Fi install-from-binstall-release.ps1 Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> * Fix install-from-binstall-release.ps1 Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> * Create self-install.sh Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> * Add e2e-test-self-install to justfile Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> * Fix args::parse() for self-install mode Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> * Fix args parsing: Do no require positional arg if --self-install is present Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> --------- Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com>
66 lines
1.9 KiB
Rust
66 lines
1.9 KiB
Rust
use std::{process::Termination, time::Instant};
|
|
|
|
use binstalk::{helpers::jobserver_client::LazyJobserverClient, TARGET};
|
|
use log::LevelFilter;
|
|
use tracing::debug;
|
|
|
|
use crate::{
|
|
args,
|
|
bin_util::{run_tokio_main, MainExit},
|
|
entry,
|
|
logging::logging,
|
|
};
|
|
|
|
pub fn do_main() -> impl Termination {
|
|
let (args, cli_overrides) = args::parse();
|
|
|
|
if args.version {
|
|
let cargo_binstall_version = env!("CARGO_PKG_VERSION");
|
|
if args.verbose {
|
|
let build_date = env!("VERGEN_BUILD_DATE");
|
|
|
|
let features = env!("VERGEN_CARGO_FEATURES");
|
|
|
|
let git_sha = option_env!("VERGEN_GIT_SHA").unwrap_or("UNKNOWN");
|
|
let git_commit_date = option_env!("VERGEN_GIT_COMMIT_DATE").unwrap_or("UNKNOWN");
|
|
|
|
let rustc_semver = env!("VERGEN_RUSTC_SEMVER");
|
|
let rustc_commit_hash = env!("VERGEN_RUSTC_COMMIT_HASH");
|
|
let rustc_llvm_version = env!("VERGEN_RUSTC_LLVM_VERSION");
|
|
|
|
println!(
|
|
r#"cargo-binstall: {cargo_binstall_version}
|
|
build-date: {build_date}
|
|
build-target: {TARGET}
|
|
build-features: {features}
|
|
build-commit-hash: {git_sha}
|
|
build-commit-date: {git_commit_date}
|
|
rustc-version: {rustc_semver}
|
|
rustc-commit-hash: {rustc_commit_hash}
|
|
rustc-llvm-version: {rustc_llvm_version}"#
|
|
);
|
|
} else {
|
|
println!("{cargo_binstall_version}");
|
|
}
|
|
MainExit::Success(None)
|
|
} else if args.self_install {
|
|
MainExit::new(entry::self_install(args), None)
|
|
} else {
|
|
logging(
|
|
args.log_level.unwrap_or(LevelFilter::Info),
|
|
args.json_output,
|
|
);
|
|
|
|
let start = Instant::now();
|
|
|
|
let jobserver_client = LazyJobserverClient::new();
|
|
|
|
let result =
|
|
run_tokio_main(|| entry::install_crates(args, cli_overrides, jobserver_client));
|
|
|
|
let done = start.elapsed();
|
|
debug!("run time: {done:?}");
|
|
|
|
MainExit::new(result, Some(done))
|
|
}
|
|
}
|