pub mod git {
pub const DEFAULT_BRANCH: &str = "main";
pub const DEFAULT_REMOTE: &str = "origin";
pub const GITHUB_DOMAIN: &str = "github.com";
pub const GITLAB_DOMAIN: &str = "gitlab.com";
pub const GITEA_DOMAIN: &str = "gitea.io";
pub const GIT_CONFIG_FILE: &str = ".git/config";
pub const GIT_CREDENTIALS_FILE: &str = ".git-credentials";
pub const SSH_KEY_FILE: &str = ".ssh/id_rsa";
pub const SSH_CONFIG_FILE: &str = ".ssh/config";
pub const HTTPS_PREFIX: &str = "https://";
pub const SSH_PREFIX: &str = "git@";
pub const GIT_PROTOCOL: &str = "git://";
}
pub mod http {
pub const DEFAULT_TIMEOUT: u64 = 30;
pub const DEFAULT_RETRIES: u32 = 3;
pub const DEFAULT_USER_AGENT: &str = "orion-variate/1.0";
pub mod status {
pub const OK: u16 = 200;
pub const NOT_FOUND: u16 = 404;
pub const UNAUTHORIZED: u16 = 401;
pub const FORBIDDEN: u16 = 403;
pub const INTERNAL_ERROR: u16 = 500;
}
pub mod extensions {
pub const ZIP: &str = "zip";
pub const TAR: &str = "tar";
pub const TAR_GZ: &str = "tar.gz";
pub const TAR_XZ: &str = "tar.xz";
pub const TAR_BZ2: &str = "tar.bz2";
pub const JSON: &str = "json";
pub const YAML: &str = "yaml";
pub const YML: &str = "yml";
pub const XML: &str = "xml";
}
pub mod mime {
pub const ZIP: &str = "application/zip";
pub const TAR: &str = "application/x-tar";
pub const GZIP: &str = "application/gzip";
pub const JSON: &str = "application/json";
pub const YAML: &str = "application/yaml";
pub const XML: &str = "application/xml";
pub const OCTET_STREAM: &str = "application/octet-stream";
}
}
pub mod local {
pub const TEMP_DIR: &str = ".tmp";
pub const CACHE_DIR: &str = ".cache";
pub const CONFIG_FILE: &str = "config.yaml";
pub const CONFIG_YML_FILE: &str = "config.yml";
pub const CONFIG_JSON_FILE: &str = "config.json";
pub const LOCK_FILE: &str = ".lock";
pub const HIDDEN_PREFIX: &str = ".";
pub const PATH_SEPARATOR: char = '/';
#[cfg(target_os = "windows")]
pub const ALT_PATH_SEPARATOR: char = '\\';
}
pub mod redirect {
pub const CONFIG_FILE: &str = "redirect-rules.yaml";
pub const CONFIG_YML_FILE: &str = "redirect-rules.yml";
pub const ENV_PREFIX: &str = "ORION_VARIATE_";
pub const MAX_REDIRECTS: u32 = 10;
pub mod patterns {
pub const WILDCARD: &str = "*";
pub const EXACT: &str = "=";
pub const PREFIX: &str = "^";
pub const SUFFIX: &str = "$";
}
}
pub mod env {
pub const GITHUB_TOKEN: &str = "GITHUB_TOKEN";
pub const GITLAB_TOKEN: &str = "GITLAB_TOKEN";
pub const GITEA_TOKEN: &str = "GITEA_TOKEN";
pub const GIT_USERNAME: &str = "GIT_USERNAME";
pub const GIT_PASSWORD: &str = "GIT_PASSWORD";
pub const HTTP_PROXY: &str = "HTTP_PROXY";
pub const HTTPS_PROXY: &str = "HTTPS_PROXY";
pub const NO_PROXY: &str = "NO_PROXY";
pub const CONFIG_PATH: &str = "ORION_VARIATE_CONFIG";
pub const REDIRECT_RULES_PATH: &str = "ORION_VARIATE_REDIRECT_RULES";
pub const CACHE_DIR: &str = "ORION_VARIATE_CACHE_DIR";
pub const TEMP_DIR: &str = "ORION_VARIATE_TEMP_DIR";
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_git_constants() {
assert_eq!(git::DEFAULT_BRANCH, "main");
assert_eq!(git::DEFAULT_REMOTE, "origin");
assert_eq!(git::GITHUB_DOMAIN, "github.com");
assert_eq!(git::GITLAB_DOMAIN, "gitlab.com");
assert_eq!(git::GITEA_DOMAIN, "gitea.io");
assert_eq!(git::GIT_CONFIG_FILE, ".git/config");
assert_eq!(git::GIT_CREDENTIALS_FILE, ".git-credentials");
assert_eq!(git::SSH_KEY_FILE, ".ssh/id_rsa");
assert_eq!(git::SSH_CONFIG_FILE, ".ssh/config");
assert_eq!(git::HTTPS_PREFIX, "https://");
assert_eq!(git::SSH_PREFIX, "git@");
assert_eq!(git::GIT_PROTOCOL, "git://");
}
#[test]
fn test_http_constants() {
assert_eq!(http::DEFAULT_TIMEOUT, 30);
assert_eq!(http::DEFAULT_RETRIES, 3);
assert_eq!(http::DEFAULT_USER_AGENT, "orion-variate/1.0");
assert_eq!(http::status::OK, 200);
assert_eq!(http::status::NOT_FOUND, 404);
assert_eq!(http::status::UNAUTHORIZED, 401);
assert_eq!(http::status::FORBIDDEN, 403);
assert_eq!(http::status::INTERNAL_ERROR, 500);
assert_eq!(http::extensions::ZIP, "zip");
assert_eq!(http::extensions::TAR, "tar");
assert_eq!(http::extensions::TAR_GZ, "tar.gz");
assert_eq!(http::extensions::TAR_XZ, "tar.xz");
assert_eq!(http::extensions::TAR_BZ2, "tar.bz2");
assert_eq!(http::extensions::JSON, "json");
assert_eq!(http::extensions::YAML, "yaml");
assert_eq!(http::extensions::YML, "yml");
assert_eq!(http::extensions::XML, "xml");
assert_eq!(http::mime::ZIP, "application/zip");
assert_eq!(http::mime::TAR, "application/x-tar");
assert_eq!(http::mime::GZIP, "application/gzip");
assert_eq!(http::mime::JSON, "application/json");
assert_eq!(http::mime::YAML, "application/yaml");
assert_eq!(http::mime::XML, "application/xml");
assert_eq!(http::mime::OCTET_STREAM, "application/octet-stream");
}
#[test]
fn test_local_constants() {
assert_eq!(local::TEMP_DIR, ".tmp");
assert_eq!(local::CACHE_DIR, ".cache");
assert_eq!(local::CONFIG_FILE, "config.yaml");
assert_eq!(local::CONFIG_YML_FILE, "config.yml");
assert_eq!(local::CONFIG_JSON_FILE, "config.json");
assert_eq!(local::LOCK_FILE, ".lock");
assert_eq!(local::HIDDEN_PREFIX, ".");
assert_eq!(local::PATH_SEPARATOR, '/');
#[cfg(target_os = "windows")]
assert_eq!(local::ALT_PATH_SEPARATOR, '\\');
}
#[test]
fn test_redirect_constants() {
assert_eq!(redirect::CONFIG_FILE, "redirect-rules.yaml");
assert_eq!(redirect::CONFIG_YML_FILE, "redirect-rules.yml");
assert_eq!(redirect::ENV_PREFIX, "ORION_VARIATE_");
assert_eq!(redirect::MAX_REDIRECTS, 10);
assert_eq!(redirect::patterns::WILDCARD, "*");
assert_eq!(redirect::patterns::EXACT, "=");
assert_eq!(redirect::patterns::PREFIX, "^");
assert_eq!(redirect::patterns::SUFFIX, "$");
}
#[test]
fn test_env_constants() {
assert_eq!(env::GITHUB_TOKEN, "GITHUB_TOKEN");
assert_eq!(env::GITLAB_TOKEN, "GITLAB_TOKEN");
assert_eq!(env::GITEA_TOKEN, "GITEA_TOKEN");
assert_eq!(env::GIT_USERNAME, "GIT_USERNAME");
assert_eq!(env::GIT_PASSWORD, "GIT_PASSWORD");
assert_eq!(env::HTTP_PROXY, "HTTP_PROXY");
assert_eq!(env::HTTPS_PROXY, "HTTPS_PROXY");
assert_eq!(env::NO_PROXY, "NO_PROXY");
assert_eq!(env::CONFIG_PATH, "ORION_VARIATE_CONFIG");
assert_eq!(env::REDIRECT_RULES_PATH, "ORION_VARIATE_REDIRECT_RULES");
assert_eq!(env::CACHE_DIR, "ORION_VARIATE_CACHE_DIR");
assert_eq!(env::TEMP_DIR, "ORION_VARIATE_TEMP_DIR");
}
#[test]
fn test_constants_are_static() {
let _git_branch: &'static str = git::DEFAULT_BRANCH;
let _http_timeout: &'static str = http::DEFAULT_USER_AGENT;
let _local_separator: char = local::PATH_SEPARATOR;
let _redirect_config: &'static str = redirect::CONFIG_FILE;
let _env_token: &'static str = env::GITHUB_TOKEN;
}
}