Initial vendor packages
Signed-off-by: Valentin Popov <valentin@popov.link>
This commit is contained in:
69
vendor/is_ci/src/lib.rs
vendored
Normal file
69
vendor/is_ci/src/lib.rs
vendored
Normal file
@@ -0,0 +1,69 @@
|
||||
use std::sync::atomic::{AtomicBool, Ordering};
|
||||
use std::sync::Once;
|
||||
|
||||
static INIT: Once = Once::new();
|
||||
static IS_CI: AtomicBool = AtomicBool::new(false);
|
||||
|
||||
/// Returns true if the current environment is found to probably be a CI
|
||||
/// environment or service. That's it, that's all it does.
|
||||
#[deprecated(since = "1.1.0", note = "Use `cached` or `uncached` instead")]
|
||||
pub fn is_ci() -> bool {
|
||||
uncached()
|
||||
}
|
||||
|
||||
/// Returns true if the current environment is found to probably be a CI
|
||||
/// environment or service, and caches the result for future calls. If you
|
||||
/// expect the environment to change, use [uncached].
|
||||
pub fn cached() -> bool {
|
||||
INIT.call_once(|| IS_CI.store(uncached(), Ordering::Relaxed));
|
||||
IS_CI.load(Ordering::Relaxed)
|
||||
}
|
||||
|
||||
/// Returns true if the current environment is found to probably be a CI
|
||||
/// environment or service. If you expect to call this multiple times without
|
||||
/// the environment changing, use [cached].
|
||||
pub fn uncached() -> bool {
|
||||
let ci_var = std::env::var("CI");
|
||||
ci_var == Ok("true".into())
|
||||
|| ci_var == Ok("1".into())
|
||||
|| check("CI_NAME")
|
||||
|| check("GITHUB_ACTION")
|
||||
|| check("GITLAB_CI")
|
||||
|| check("NETLIFY")
|
||||
|| check("TRAVIS")
|
||||
|| matches!(std::env::var("NODE"), Ok(node) if node.ends_with("//heroku/node/bin/node"))
|
||||
|| check("CODEBUILD_SRC_DIR")
|
||||
|| check("BUILDER_OUTPUT")
|
||||
|| check("GITLAB_DEPLOYMENT")
|
||||
|| check("NOW_GITHUB_DEPLOYMENT")
|
||||
|| check("NOW_BUILDER")
|
||||
|| check("BITBUCKET_DEPLOYMENT")
|
||||
|| check("GERRIT_PROJECT")
|
||||
|| check("SYSTEM_TEAMFOUNDATIONCOLLECTIONURI")
|
||||
|| check("BITRISE_IO")
|
||||
|| check("BUDDY_WORKSPACE_ID")
|
||||
|| check("BUILDKITE")
|
||||
|| check("CIRRUS_CI")
|
||||
|| check("APPVEYOR")
|
||||
|| check("CIRCLECI")
|
||||
|| check("SEMAPHORE")
|
||||
|| check("DRONE")
|
||||
|| check("DSARI")
|
||||
|| check("TDDIUM")
|
||||
|| check("STRIDER")
|
||||
|| check("TASKCLUSTER_ROOT_URL")
|
||||
|| check("JENKINS_URL")
|
||||
|| check("bamboo.buildKey")
|
||||
|| check("GO_PIPELINE_NAME")
|
||||
|| check("HUDSON_URL")
|
||||
|| check("WERCKER")
|
||||
|| check("MAGNUM")
|
||||
|| check("NEVERCODE")
|
||||
|| check("RENDER")
|
||||
|| check("SAIL_CI")
|
||||
|| check("SHIPPABLE")
|
||||
}
|
||||
|
||||
fn check(name: &str) -> bool {
|
||||
std::env::var(name).is_ok()
|
||||
}
|
Reference in New Issue
Block a user