mirror of
https://github.com/cargo-bins/cargo-binstall.git
synced 2025-04-22 13:38:43 +00:00
Add new option to --disable-telemetry
to disable quickinstall statistics collection (#1831)
* Add new option `--disable-quick-install-stats` Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com> * Send quickinstall stats in parallel This commit also make sure'the stats is always sent for each fetcher, regardless of whether it is picked or not, to make sure that the quick-install stats collection gets the full infomration of possible targets. Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com> * Rename option to `--disable-telemetry` Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com> * Update args.rs Co-authored-by: Félix Saparelli <felix@passcod.name> Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> * Update args.rs Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> --------- Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com> Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> Co-authored-by: Félix Saparelli <felix@passcod.name>
This commit is contained in:
parent
fa105bb8d7
commit
6809601273
6 changed files with 36 additions and 3 deletions
|
@ -219,6 +219,14 @@ pub struct Args {
|
||||||
#[clap(help_heading = "Options", long)]
|
#[clap(help_heading = "Options", long)]
|
||||||
pub(crate) no_track: bool,
|
pub(crate) no_track: bool,
|
||||||
|
|
||||||
|
/// Disable statistics collection on popular crates.
|
||||||
|
///
|
||||||
|
/// Strategy quick-install (can be disabled via --disable-strategies) collects
|
||||||
|
/// statistics of popular crates by default, by sending the crate, version and
|
||||||
|
/// target to https://warehouse-clerk-tmp.vercel.app/api/crate
|
||||||
|
#[clap(help_heading = "Options", long, env = "BINSTALL_DISABLE_TELEMETRY")]
|
||||||
|
pub(crate) disable_telemetry: bool,
|
||||||
|
|
||||||
/// Install binaries in a custom location.
|
/// Install binaries in a custom location.
|
||||||
///
|
///
|
||||||
/// By default, binaries are installed to the global location `$CARGO_HOME/bin`, and global
|
/// By default, binaries are installed to the global location `$CARGO_HOME/bin`, and global
|
||||||
|
@ -611,5 +619,21 @@ mod test {
|
||||||
Args::command().debug_assert()
|
Args::command().debug_assert()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn quickinstall_url_matches() {
|
||||||
|
let long_help = Args::command()
|
||||||
|
.get_opts()
|
||||||
|
.find(|opt| opt.get_long() == Some("disable-telemetry"))
|
||||||
|
.unwrap()
|
||||||
|
.get_long_help()
|
||||||
|
.unwrap()
|
||||||
|
.to_string();
|
||||||
|
assert!(
|
||||||
|
long_help.ends_with(binstalk::QUICK_INSTALL_STATS_URL),
|
||||||
|
"{}",
|
||||||
|
long_help
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
const _: () = assert!(Strategy::VARIANTS.len() == StrategyWrapped::VARIANTS.len());
|
const _: () = assert!(Strategy::VARIANTS.len() == StrategyWrapped::VARIANTS.len());
|
||||||
}
|
}
|
||||||
|
|
|
@ -207,6 +207,7 @@ pub fn install_crates(
|
||||||
} else {
|
} else {
|
||||||
SignaturePolicy::IfPresent
|
SignaturePolicy::IfPresent
|
||||||
},
|
},
|
||||||
|
disable_telemetry: args.disable_telemetry,
|
||||||
});
|
});
|
||||||
|
|
||||||
// Destruct args before any async function to reduce size of the future
|
// Destruct args before any async function to reduce size of the future
|
||||||
|
|
|
@ -16,7 +16,7 @@ use crate::{
|
||||||
};
|
};
|
||||||
|
|
||||||
const BASE_URL: &str = "https://github.com/cargo-bins/cargo-quickinstall/releases/download";
|
const BASE_URL: &str = "https://github.com/cargo-bins/cargo-quickinstall/releases/download";
|
||||||
const STATS_URL: &str = "https://warehouse-clerk-tmp.vercel.app/api/crate";
|
pub const QUICK_INSTALL_STATS_URL: &str = "https://warehouse-clerk-tmp.vercel.app/api/crate";
|
||||||
|
|
||||||
const QUICKINSTALL_SIGN_KEY: Cow<'static, str> =
|
const QUICKINSTALL_SIGN_KEY: Cow<'static, str> =
|
||||||
Cow::Borrowed("RWTdnnab2pAka9OdwgCMYyOE66M/BlQoFWaJ/JjwcPV+f3n24IRTj97t");
|
Cow::Borrowed("RWTdnnab2pAka9OdwgCMYyOE66M/BlQoFWaJ/JjwcPV+f3n24IRTj97t");
|
||||||
|
@ -144,7 +144,7 @@ impl super::Fetcher for QuickInstall {
|
||||||
.expect("package_url is pre-generated and should never be invalid url"),
|
.expect("package_url is pre-generated and should never be invalid url"),
|
||||||
signature_url: Url::parse(&format!("{url}.sig"))
|
signature_url: Url::parse(&format!("{url}.sig"))
|
||||||
.expect("signature_url is pre-generated and should never be invalid url"),
|
.expect("signature_url is pre-generated and should never be invalid url"),
|
||||||
stats_url: Url::parse(&format!("{STATS_URL}/{package}.tar.gz",))
|
stats_url: Url::parse(&format!("{QUICK_INSTALL_STATS_URL}/{package}.tar.gz",))
|
||||||
.expect("stats_url is pre-generated and should never be invalid url"),
|
.expect("stats_url is pre-generated and should never be invalid url"),
|
||||||
package,
|
package,
|
||||||
signature_policy,
|
signature_policy,
|
||||||
|
|
|
@ -9,3 +9,5 @@ pub use binstalk_fetchers as fetchers;
|
||||||
pub use binstalk_registry as registry;
|
pub use binstalk_registry as registry;
|
||||||
pub use binstalk_types as manifests;
|
pub use binstalk_types as manifests;
|
||||||
pub use detect_targets::{get_desired_targets, DesiredTargets, TARGET};
|
pub use detect_targets::{get_desired_targets, DesiredTargets, TARGET};
|
||||||
|
|
||||||
|
pub use fetchers::QUICK_INSTALL_STATS_URL;
|
||||||
|
|
|
@ -55,4 +55,5 @@ pub struct Options {
|
||||||
pub registry: Registry,
|
pub registry: Registry,
|
||||||
|
|
||||||
pub signature_policy: SignaturePolicy,
|
pub signature_policy: SignaturePolicy,
|
||||||
|
pub disable_telemetry: bool,
|
||||||
}
|
}
|
||||||
|
|
|
@ -175,8 +175,13 @@ async fn resolve_inner(
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if !opts.disable_telemetry {
|
||||||
|
for fetcher in &handles {
|
||||||
|
fetcher.clone().report_to_upstream();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for fetcher in handles {
|
for fetcher in handles {
|
||||||
fetcher.clone().report_to_upstream();
|
|
||||||
match AutoAbortJoinHandle::new(fetcher.clone().find())
|
match AutoAbortJoinHandle::new(fetcher.clone().find())
|
||||||
.flattened_join()
|
.flattened_join()
|
||||||
.await
|
.await
|
||||||
|
|
Loading…
Add table
Reference in a new issue