Skip to main content

prek_consts/
lib.rs

1pub mod env_vars;
2
3use std::ffi::OsString;
4use std::path::Path;
5
6use env_vars::EnvVars;
7
8pub const PRE_COMMIT_CONFIG_YAML: &str = ".pre-commit-config.yaml";
9pub const PRE_COMMIT_CONFIG_YML: &str = ".pre-commit-config.yml";
10pub const PREK_TOML: &str = "prek.toml";
11pub const PRE_COMMIT_HOOKS_YAML: &str = ".pre-commit-hooks.yaml";
12
13pub const CONFIG_FILENAMES: &[&str] = &[PREK_TOML, PRE_COMMIT_CONFIG_YAML, PRE_COMMIT_CONFIG_YML];
14
15/// Prepend paths to the current $PATH, returning the joined result.
16///
17/// The resulting `OsString` can be used to set the `PATH` environment variable.
18pub fn prepend_paths(paths: &[&Path]) -> Result<OsString, std::env::JoinPathsError> {
19    std::env::join_paths(
20        paths.iter().map(|p| p.to_path_buf()).chain(
21            EnvVars::var_os(EnvVars::PATH)
22                .as_ref()
23                .iter()
24                .flat_map(std::env::split_paths),
25        ),
26    )
27}