1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173
//! # types
//!
//! Defines the various types and aliases.
//!
#[cfg(test)]
#[path = "./types_test.rs"]
mod types_test;
#[cfg_attr(feature = "serde-1", derive(Serialize, Deserialize))]
#[derive(Debug, Clone, PartialEq, Copy)]
#[non_exhaustive]
/// Supported vendors enum
pub enum Vendor {
/// CI vendor
Agola,
/// CI vendor
AppCenter,
/// CI vendor
AppCircle,
/// CI vendor
AppVeyor,
/// CI vendor
AWSCodeBuild,
/// CI vendor
AzurePipelines,
/// CI vendor
Bamboo,
/// CI vendor
BitbucketPipelines,
/// CI vendor
Bitrise,
/// CI vendor
Buddy,
/// CI vendor
Buildkite,
/// CI vendor
CircleCI,
/// CI vendor
CirrusCI,
/// CI vendor
Codefresh,
/// CI vendor
Codemagic,
/// CI vendor
Codeship,
/// CI vendor
Drone,
/// CI vendor
DSARI,
/// CI vendor
EARTHLY,
/// CI vendor
FlowCI,
/// CI vendor
GiteaActions,
/// CI vendor
GitLabCI,
/// CI vendor
GitHubActions,
/// CI vendor
Gerrit,
/// CI vendor
GoCD,
/// CI vendor
GoogleCloudBuild,
/// CI vendor
HarnessCI,
/// CI vendor
Heroku,
/// CI vendor
Hudson,
/// CI vendor
Jenkins,
/// CI vendor
JenkinsX,
/// CI vendor
LayerCI,
/// CI vendor
MagnumCI,
/// CI vendor
NetlifyCI,
/// CI vendor
Nevercode,
/// CI vendor
Prow,
/// CI vendor
Render,
/// CI vendor
SailCI,
/// CI vendor
Screwdriver,
/// CI vendor
Semaphore,
/// CI vendor
SourceHut,
/// CI vendor
StriderCD,
/// CI vendor
TaskCluster,
/// CI vendor
TeamCity,
/// CI vendor
TravisCI,
/// CI vendor
Vela,
/// CI vendor
Vercel,
/// CI vendor
WoodpeckerCI,
/// CI vendor
XcodeCloud,
/// CI vendor
XcodeServer,
/// CI vendor
Unknown,
}
#[derive(Debug, Clone)]
pub(crate) enum EnvValue {
/// Env name
Exists(String),
/// Env names
AllExists(Vec<String>),
/// Env names
AnyExists(Vec<String>),
/// Env name and value
Value(String, String),
/// Env name and value which should not be defined
NotEqual(String, String),
/// Env name contains the provided value (case insensitive)
Contains(String, String),
/// Env value exists and not empty
NotEmpty(String),
}
/// Vendor detection info
#[derive(Debug, Clone)]
pub(crate) struct VendorConfig {
/// vendor name
pub(crate) name: String,
/// The CI vendor
pub(crate) vendor: Vendor,
/// CI env var name
pub(crate) ci_env: EnvValue,
/// PR env var name
pub(crate) pr_env: Option<EnvValue>,
/// Branch name env var name
pub(crate) branch_name_env: Option<String>,
}
#[cfg_attr(feature = "serde-1", derive(Serialize, Deserialize))]
#[derive(Debug, Clone, PartialEq, Default)]
/// CI info
pub struct CiInfo {
/// The CI vendor
pub vendor: Option<Vendor>,
/// vendor name
pub name: Option<String>,
/// True if CI environment
pub ci: bool,
/// True if currently running a PR build, None if unknown
pub pr: Option<bool>,
/// The branch name for the given build
pub branch_name: Option<String>,
}
impl CiInfo {
/// Returns new instance
pub fn new() -> CiInfo {
Default::default()
}
}