From 1ef7ae100975ac70ceebd4a0cdae8b6717f7baf5 Mon Sep 17 00:00:00 2001 From: Brandon Thomas Date: Mon, 16 Oct 2023 19:52:46 -0400 Subject: [PATCH] Better env var support --- .idea/dictionaries/bt.xml | 1 + Cargo.lock | 17 +-- Cargo.toml | 1 - crates/lib/bootstrap/Cargo.toml | 1 - crates/lib/bootstrap/src/bootstrap.rs | 2 +- crates/lib/easyenv/Cargo.toml | 2 +- crates/lib/easyenv/src/error.rs | 62 ++++++++ crates/lib/easyenv/src/init.rs | 64 ++++++++ crates/lib/easyenv/src/lib.rs | 144 ++++++------------ crates/lib/easyenv/src/logging.rs | 35 +++++ crates/lib/easyenv/src/{ => types}/boolean.rs | 4 +- .../lib/easyenv/src/{ => types}/duration.rs | 6 +- crates/lib/easyenv/src/types/mod.rs | 5 + crates/lib/easyenv/src/{ => types}/num.rs | 4 +- crates/lib/easyenv/src/{ => types}/pathbuf.rs | 8 +- crates/lib/easyenv/src/{ => types}/string.rs | 6 +- crates/lib/envvar/Cargo.toml | 27 ---- crates/lib/envvar/src/lib.rs | 61 -------- crates/lib/server_environment/Cargo.toml | 1 - crates/service/job/download_job/Cargo.toml | 1 - crates/service/job/inference_job/Cargo.toml | 1 - crates/service/web/storyteller_web/Cargo.toml | 1 - 22 files changed, 235 insertions(+), 219 deletions(-) create mode 100644 crates/lib/easyenv/src/error.rs create mode 100644 crates/lib/easyenv/src/init.rs create mode 100644 crates/lib/easyenv/src/logging.rs rename crates/lib/easyenv/src/{ => types}/boolean.rs (98%) rename crates/lib/easyenv/src/{ => types}/duration.rs (98%) create mode 100644 crates/lib/easyenv/src/types/mod.rs rename crates/lib/easyenv/src/{ => types}/num.rs (96%) rename crates/lib/easyenv/src/{ => types}/pathbuf.rs (98%) rename crates/lib/easyenv/src/{ => types}/string.rs (97%) delete mode 100644 crates/lib/envvar/Cargo.toml delete mode 100644 crates/lib/envvar/src/lib.rs diff --git a/.idea/dictionaries/bt.xml b/.idea/dictionaries/bt.xml index 96e5c2a274..7393f389fc 100644 --- a/.idea/dictionaries/bt.xml +++ b/.idea/dictionaries/bt.xml @@ -4,6 +4,7 @@ arpabet backfill canonicalized + canonicalizing cashapp cheermote cidrs diff --git a/Cargo.lock b/Cargo.lock index 9968a051b4..590cfc6a2b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1043,7 +1043,6 @@ version = "0.0.1" dependencies = [ "dotenv", "easyenv", - "envvar", "errors", "hostname", "log", @@ -1948,7 +1947,6 @@ dependencies = [ "dotenv", "easyenv", "enums", - "envvar", "errors", "filesys", "google_drive_common", @@ -2024,7 +2022,7 @@ dependencies = [ [[package]] name = "easyenv" -version = "0.0.9" +version = "0.1.0" dependencies = [ "dotenv", "env_logger 0.10.0", @@ -2106,16 +2104,6 @@ dependencies = [ "termcolor", ] -[[package]] -name = "envvar" -version = "0.0.1" -dependencies = [ - "dotenv", - "easyenv", - "errors", - "log", -] - [[package]] name = "errno" version = "0.3.1" @@ -2958,7 +2946,6 @@ dependencies = [ "dotenv", "easyenv", "enums", - "envvar", "errors", "filesys", "hashing", @@ -5123,7 +5110,6 @@ version = "0.0.1" dependencies = [ "dotenv", "easyenv", - "envvar", "errors", "log", ] @@ -5535,7 +5521,6 @@ dependencies = [ "dotenv", "easyenv", "enums", - "envvar", "errors", "futures 0.1.31", "futures 0.3.26", diff --git a/Cargo.toml b/Cargo.toml index 2dd2a99afc..fd93afe243 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -30,7 +30,6 @@ members = [ "crates/lib/deprecated/container_common", # TODO(bt, 2023-02-13): Pull apart and rehome pieces "crates/lib/deprecated/http_server_common", # TODO(bt, 2023-03-20): Move useful pieces to actix_helpers "crates/lib/easyenv", # NB: Vendored version of https://github.com/echelon/easyenv.rs that we'll improve. - "crates/lib/envvar", "crates/lib/errors", "crates/lib/files/archives", "crates/lib/files/filesys", diff --git a/crates/lib/bootstrap/Cargo.toml b/crates/lib/bootstrap/Cargo.toml index 894ea268f4..f09c0b6bbf 100644 --- a/crates/lib/bootstrap/Cargo.toml +++ b/crates/lib/bootstrap/Cargo.toml @@ -16,7 +16,6 @@ path = "src/lib.rs" [dependencies] # Internal easyenv = { path = "../easyenv" } -envvar = { path = "../envvar" } errors = { path = "../errors" } server_environment = { path = "../server_environment" } diff --git a/crates/lib/bootstrap/src/bootstrap.rs b/crates/lib/bootstrap/src/bootstrap.rs index 3c8f64a3b5..bf8d74d4c4 100644 --- a/crates/lib/bootstrap/src/bootstrap.rs +++ b/crates/lib/bootstrap/src/bootstrap.rs @@ -120,7 +120,7 @@ fn load_env_config_files>(server_environment: ServerEnvironment, for env_config_file in env_config_file_names.into_iter() { info!("Loading environment variable config file: {}", &env_config_file); - let was_read = envvar::maybe_read_from_filename_and_paths( + let was_read = easyenv::maybe_read_env_config_from_filename_and_paths( &env_config_file, args.config_search_directories)?; diff --git a/crates/lib/easyenv/Cargo.toml b/crates/lib/easyenv/Cargo.toml index aa82f6e096..9dc7d22de5 100644 --- a/crates/lib/easyenv/Cargo.toml +++ b/crates/lib/easyenv/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "easyenv" edition = "2018" -version = "0.0.9" +version = "0.1.0" authors = [ "Brandon Thomas ", "Brandon Thomas ", diff --git a/crates/lib/easyenv/src/error.rs b/crates/lib/easyenv/src/error.rs new file mode 100644 index 0000000000..591f8b6b10 --- /dev/null +++ b/crates/lib/easyenv/src/error.rs @@ -0,0 +1,62 @@ +use std::error::Error; +use std::fmt; +use std::fmt::{Display, Formatter}; + +/// Errors with reading and parsing env variables. +#[derive(Debug)] +pub enum EnvError { + /// The environment variable value is not unicode. + NotUnicode, + /// Problem parsing the env variable as the desired type. + ParseError { + /// Explanation of the parsing failure. + reason: String + }, + /// The required environment variable wasn't present. + RequiredNotPresent, +} + +impl Display for EnvError { + fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result { + let reason = match self { + EnvError::NotUnicode => "EnvError::NotUnicode", + EnvError::ParseError { .. } => "EnvError::ParseError", + EnvError::RequiredNotPresent => "EnvError::RequiredNotPresent", + }; + write!(f, "{:?}", reason) + } +} + +impl Error for EnvError { + fn source(&self) -> Option<&(dyn Error + 'static)> { + None + } +} + +/// Errors while initializing the library +#[derive(Debug)] +pub enum InitError { + /// std::io error + IoError, + /// dotenv couldn't read a file + DotEnvError, + /// No env config file was found and read + NoConfigFileFoundError, +} + +impl Display for InitError { + fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result { + let reason = match self { + InitError::IoError => "InitError::IoError", + InitError::DotEnvError => "InitError::DotEnvError", + InitError::NoConfigFileFoundError => "InitError::NoConfigFileFoundError", + }; + write!(f, "{:?}", reason) + } +} + +impl Error for InitError { + fn source(&self) -> Option<&(dyn Error + 'static)> { + None + } +} diff --git a/crates/lib/easyenv/src/init.rs b/crates/lib/easyenv/src/init.rs new file mode 100644 index 0000000000..5c603d5c70 --- /dev/null +++ b/crates/lib/easyenv/src/init.rs @@ -0,0 +1,64 @@ +use std::path::{Path, PathBuf}; + +use log::error; + +use crate::error::InitError; +use crate::init_env_logger; + +/// Initialize dotenv (with `.env` file) and the env logger using the `RUST_LOG` variable setting. +pub fn init_all_with_default_logging(default_if_absent: Option<&str>) { + init_dotenv(); + init_env_logger(default_if_absent) +} + +/// Try loading in an environment file across many search paths (first found wins). +/// Returns an error if no file could be read or if in attempting to read a file there was an error. +pub fn read_env_config_from_filename_and_paths, Q: AsRef>(filename: P, paths: &[Q]) -> Result<(), InitError> { + if do_read_env_config_from_filename_and_paths(&filename, paths)? { + Ok(()) + } else { + error!("No env file existed for filename {:?} in the search paths {:?}", + filename.as_ref(), + paths.iter().map(|p| p.as_ref().to_path_buf()).collect::>()); + Err(InitError::NoConfigFileFoundError) + } +} + +/// Try loading in an environment file across many search paths (first found wins). +/// Returns okay if no file was read, or an error if in attempting to read a file there was an error. +/// Returns boolean reflecting whether a file was read. +pub fn maybe_read_env_config_from_filename_and_paths, Q: AsRef>(filename: P, paths: &[Q]) -> Result { + Ok(do_read_env_config_from_filename_and_paths(filename, paths)?) +} + +// Initialize dotenv with the default `.env` config file. +// Do not fail if the file cannot be loaded. +fn init_dotenv() { + match dotenv::dotenv() { + Ok(_) => println!("dotenv configs initialized"), + Err(e) => println!("Could not initialize dotenv: {:?}", e), + } +} + +fn do_read_env_config_from_filename_and_paths, Q: AsRef>(filename: P, paths: &[Q]) -> Result { + for path in paths.iter() { + let path = path.as_ref().join(filename.as_ref()); + + if path.exists() && path.is_file() { + log::info!("Attempting to read env vars from file: {:?}", path); + let path = std::fs::canonicalize(path) + .map_err(|err| { + error!("Error canonicalizing path: {:?}", err); + InitError::IoError + })?; + dotenv::from_path(path) + .map_err(|err| { + error!("dotenv error reading config: {:?}", err); + InitError::DotEnvError + })?; + return Ok(true); + } + } + + Ok(false) +} diff --git a/crates/lib/easyenv/src/lib.rs b/crates/lib/easyenv/src/lib.rs index 3c97245930..fbd5e3f69b 100644 --- a/crates/lib/easyenv/src/lib.rs +++ b/crates/lib/easyenv/src/lib.rs @@ -1,7 +1,24 @@ // Copyright (c) 2020 Brandon Thomas -//! Very simple helper functions for environment variables and environment variable-driven -//! `env_logger` configuration. +//! easyenv +//! +//! The interface between an app and its environment variables. This library makes it easy to: +//! +//! - read in strongly-typed environment variables. +//! - load default environment variables from one or more files in an order that supports +//! intentional overriding. +//! +//! Things that might want to move to another package : +//! +//! - configure env logging +//! - build conventions around system paths such that paths imported from environment variables +//! respect pathing conventions. +//! +//! This library does not: +//! +//! - handle app-specific conventions +//! - care about servers or deployed environments (eg. "staging" vs "production") +//! #![deny(dead_code)] #![deny(missing_docs)] @@ -11,101 +28,32 @@ #![deny(unused_qualifications)] #![deny(unused_qualifications)] -use env_logger; -use std::error::Error; -use std::fmt::{Display, Debug, Formatter}; -use std::{env, fmt}; +// NB: These were exported from the root in previous versions. +// It's easy to just keep them exported here to maintain compatibility. +pub use error::EnvError; +pub use error::InitError; +pub use init::init_all_with_default_logging; +pub use init::maybe_read_env_config_from_filename_and_paths; +pub use init::read_env_config_from_filename_and_paths; +pub use logging::DEFAULT_LOG_LEVEL; +pub use logging::ENV_RUST_LOG; +pub use logging::init_env_logger; +pub use types::boolean::get_env_bool_optional; +pub use types::boolean::get_env_bool_or_default; +pub use types::boolean::get_env_bool_required; +pub use types::duration::get_env_duration_seconds_optional; +pub use types::duration::get_env_duration_seconds_or_default; +pub use types::duration::get_env_duration_seconds_required; +pub use types::num::get_env_num; +pub use types::pathbuf::get_env_pathbuf_optional; +pub use types::pathbuf::get_env_pathbuf_or_default; +pub use types::pathbuf::get_env_pathbuf_required; +pub use types::string::get_env_string_optional; +pub use types::string::get_env_string_or_default; +pub use types::string::get_env_string_required; -mod boolean; -mod duration; -mod pathbuf; -mod string; -mod num; +mod error; +mod init; +mod logging; +mod types; -/// Name of the environment variable Rust's env logger uses -pub const ENV_RUST_LOG : &str = "RUST_LOG"; - -const DEFAULT_LOG_LEVEL: &str = "info"; - -/// Errors with env variables. -#[derive(Debug)] -pub enum EnvError { - /// The environment variable value is not unicode. - NotUnicode, - /// Problem parsing the env variable as the desired type. - ParseError { - /// Explanation of the parsing failure. - reason: String - }, - /// The required environment variable wasn't present. - RequiredNotPresent, -} - -impl Display for EnvError { - fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result { - write!(f, "EnvError::ParseError") - } -} - -impl Error for EnvError { - fn source(&self) -> Option<&(dyn Error + 'static)> { - None - } -} - -pub use boolean::get_env_bool_optional; -pub use boolean::get_env_bool_or_default; -pub use boolean::get_env_bool_required; - -pub use duration::get_env_duration_seconds_optional; -pub use duration::get_env_duration_seconds_or_default; -pub use duration::get_env_duration_seconds_required; - -pub use num::get_env_num; - -pub use pathbuf::get_env_pathbuf_optional; -pub use pathbuf::get_env_pathbuf_or_default; -pub use pathbuf::get_env_pathbuf_required; - -pub use string::get_env_string_optional; -pub use string::get_env_string_or_default; -pub use string::get_env_string_required; - -/// Initialize Rust's env logger. -/// -/// The Rust logger reads the desired log level from the `RUST_LOG` environment variable. If this -/// isn't set, the provided default is used. If a default fallback isn't provided to this function, -/// we fall back to `"info"`. -/// -/// A more robust logging config might configure on a per-component basis, eg. -/// `"tokio_reactor=warn,hyper=info,debug"`. You can read more in the `log` and `env_logger` crate -/// docs. -pub fn init_env_logger(default_if_absent: Option<&str>) { - if env::var(ENV_RUST_LOG) - .as_ref() - .ok() - .is_none() - { - let default_log_level = default_if_absent.unwrap_or(DEFAULT_LOG_LEVEL); - println!("Setting default logging level to \"{}\", override with env var {}.", - default_log_level, ENV_RUST_LOG); - env::set_var(ENV_RUST_LOG, default_log_level); - } - - env_logger::init(); -} - -/// Initialize dotenv with the default `.env` config file. -pub fn init_dotenv() { - match dotenv::dotenv() { - Ok(_) => println!("dotenv configs initialized"), - Err(e) => println!("Could not initialize dotenv: {:?}", e), - } -} - -/// Initialize dotenv and env logger. -/// See `init_dotenv()` and `init_env_logger(Option<&str>)` for further details. -pub fn init_all_with_default_logging(default_if_absent: Option<&str>) { - init_dotenv(); - init_env_logger(default_if_absent) -} diff --git a/crates/lib/easyenv/src/logging.rs b/crates/lib/easyenv/src/logging.rs new file mode 100644 index 0000000000..770823d65e --- /dev/null +++ b/crates/lib/easyenv/src/logging.rs @@ -0,0 +1,35 @@ +use std::env; + + +/// Name of the environment variable Rust's env logger uses +pub const ENV_RUST_LOG : &str = "RUST_LOG"; + +/// The default logging level +pub const DEFAULT_LOG_LEVEL: &str = "info"; + + + +/// Initialize Rust's env logger. +/// +/// The Rust logger reads the desired log level from the `RUST_LOG` environment variable. If this +/// isn't set, the provided default is used. If a default fallback isn't provided to this function, +/// we fall back to `"info"`. +/// +/// A more robust logging config might configure on a per-component basis, eg. +/// `"tokio_reactor=warn,hyper=info,debug"`. You can read more in the `log` and `env_logger` crate +/// docs. +pub fn init_env_logger(default_if_absent: Option<&str>) { + if env::var(ENV_RUST_LOG) + .as_ref() + .ok() + .is_none() + { + let default_log_level = default_if_absent.unwrap_or(DEFAULT_LOG_LEVEL); + println!("Setting default logging level to \"{}\", override with env var {}.", + default_log_level, ENV_RUST_LOG); + env::set_var(ENV_RUST_LOG, default_log_level); + } + + env_logger::init(); +} + diff --git a/crates/lib/easyenv/src/boolean.rs b/crates/lib/easyenv/src/types/boolean.rs similarity index 98% rename from crates/lib/easyenv/src/boolean.rs rename to crates/lib/easyenv/src/types/boolean.rs index 445103883b..d3f269d191 100644 --- a/crates/lib/easyenv/src/boolean.rs +++ b/crates/lib/easyenv/src/types/boolean.rs @@ -1,7 +1,9 @@ use std::env; use std::env::VarError; + use log::warn; -use crate::EnvError; + +use crate::error::EnvError; /// Get an environment variable as a bool. /// If not present or there is an error in parsing, return `None`. diff --git a/crates/lib/easyenv/src/duration.rs b/crates/lib/easyenv/src/types/duration.rs similarity index 98% rename from crates/lib/easyenv/src/duration.rs rename to crates/lib/easyenv/src/types/duration.rs index b8031a6194..01728ac3c7 100644 --- a/crates/lib/easyenv/src/duration.rs +++ b/crates/lib/easyenv/src/types/duration.rs @@ -1,8 +1,10 @@ -use crate::EnvError; -use log::warn; use std::env; use std::time::Duration; +use log::warn; + +use crate::error::EnvError; + /// Get an environment variable as a `Duration` in seconds. /// If not provided or cannot parse, return an error. pub fn get_env_duration_seconds_required(env_name: &str) -> Result { diff --git a/crates/lib/easyenv/src/types/mod.rs b/crates/lib/easyenv/src/types/mod.rs new file mode 100644 index 0000000000..7f5f836e7f --- /dev/null +++ b/crates/lib/easyenv/src/types/mod.rs @@ -0,0 +1,5 @@ +pub mod boolean; +pub mod duration; +pub mod pathbuf; +pub mod string; +pub mod num; diff --git a/crates/lib/easyenv/src/num.rs b/crates/lib/easyenv/src/types/num.rs similarity index 96% rename from crates/lib/easyenv/src/num.rs rename to crates/lib/easyenv/src/types/num.rs index 1e164fa024..d47b63bfce 100644 --- a/crates/lib/easyenv/src/num.rs +++ b/crates/lib/easyenv/src/types/num.rs @@ -1,8 +1,10 @@ use std::env; use std::fmt::{Debug, Display}; use std::str::FromStr; + use log::{error, warn}; -use crate::EnvError; + +use crate::error::EnvError; /// Get an environment variable as a number, or fall back to the provided default if not set. /// If the env var is present but can't be parsed, an error is returned instead. diff --git a/crates/lib/easyenv/src/pathbuf.rs b/crates/lib/easyenv/src/types/pathbuf.rs similarity index 98% rename from crates/lib/easyenv/src/pathbuf.rs rename to crates/lib/easyenv/src/types/pathbuf.rs index fe6ce6f6db..94f374bed5 100644 --- a/crates/lib/easyenv/src/pathbuf.rs +++ b/crates/lib/easyenv/src/types/pathbuf.rs @@ -1,10 +1,12 @@ -use crate::EnvError; -use log::warn; -use std::env::VarError; use std::env; +use std::env::VarError; use std::path::{Path, PathBuf}; use std::str::FromStr; +use log::warn; + +use crate::error::EnvError; + /// Get an environment variable as a `PathBuf`. /// If not provided or cannot parse, return an error. pub fn get_env_pathbuf_required(env_name: &str) -> Result { diff --git a/crates/lib/easyenv/src/string.rs b/crates/lib/easyenv/src/types/string.rs similarity index 97% rename from crates/lib/easyenv/src/string.rs rename to crates/lib/easyenv/src/types/string.rs index fe43cca95b..39640a8755 100644 --- a/crates/lib/easyenv/src/string.rs +++ b/crates/lib/easyenv/src/types/string.rs @@ -1,7 +1,9 @@ -use crate::EnvError; -use log::warn; use std::env; +use log::warn; + +use crate::error::EnvError; + /// Get an environment variable as an optional `String`. pub fn get_env_string_optional(env_name: &str) -> Option { match env::var(env_name).as_ref().ok() { diff --git a/crates/lib/envvar/Cargo.toml b/crates/lib/envvar/Cargo.toml deleted file mode 100644 index bd9c7b650e..0000000000 --- a/crates/lib/envvar/Cargo.toml +++ /dev/null @@ -1,27 +0,0 @@ -[package] -name = "envvar" -edition = "2018" -version = "0.0.1" -authors = [ - "Brandon Thomas ", - "Brandon Thomas ", -] -publish = false - -[lib] -# NB: Public "envvar" crate is real, but doesn't seem useful. -# NB: We shouldn't use "env" because that overlaps std::env. -name = "envvar" -path = "src/lib.rs" - -[dependencies] -# Internal -easyenv = { path = "../easyenv" } -errors = { path = "../errors" } - -# External -dotenv = "0.15.0" -log = "0.4.14" - -[dev-dependencies] -# None yet diff --git a/crates/lib/envvar/src/lib.rs b/crates/lib/envvar/src/lib.rs deleted file mode 100644 index 48e2d072a4..0000000000 --- a/crates/lib/envvar/src/lib.rs +++ /dev/null @@ -1,61 +0,0 @@ -//! envvar -//! -//! The purpose of this library is to handle reading environment variables. -//! - -// Never allow these -#![forbid(private_in_public)] -#![forbid(unused_must_use)] // NB: It's unsafe to not close/check some things - -// Okay to toggle -#![forbid(unreachable_patterns)] -#![forbid(unused_imports)] -#![forbid(unused_mut)] -#![forbid(unused_variables)] - -// Always allow -#![allow(dead_code)] -#![allow(non_snake_case)] - -use std::path::{Path, PathBuf}; - -use errors::{anyhow, AnyhowResult}; - -pub fn read_from_filename>(filename: P) -> AnyhowResult { - let result = dotenv::from_filename(filename)?; - Ok(result) -} - -/// Try loading in an environment file across many search paths (first found wins). -/// Returns an error if no file could be read or if in attempting to read a file there was an error. -pub fn read_from_filename_and_paths, Q: AsRef>(filename: P, paths: &[Q]) -> AnyhowResult<()> { - if do_read_from_filename_and_paths(&filename, paths)? { - Ok(()) - } else { - Err(anyhow!("No env file existed for filename {:?} in the search paths {:?}", - filename.as_ref(), - paths.iter().map(|p| p.as_ref().to_path_buf()).collect::>())) - } -} - -/// Try loading in an environment file across many search paths (first found wins). -/// Returns okay if no file was read, or an error if in attempting to read a file there was an error. -/// Returns boolean reflecting whether a file was read. -pub fn maybe_read_from_filename_and_paths, Q: AsRef>(filename: P, paths: &[Q]) -> AnyhowResult { - Ok(do_read_from_filename_and_paths(filename, paths)?) -} - -pub fn do_read_from_filename_and_paths, Q: AsRef>(filename: P, paths: &[Q]) -> AnyhowResult { - for path in paths.iter() { - let path = path.as_ref().join(filename.as_ref()); - - if path.exists() && path.is_file() { - log::info!("Attempting to read env vars from file: {:?}", path); - let path = std::fs::canonicalize(path)?; - dotenv::from_path(path)?; - return Ok(true); - } - } - - Ok(false) -} diff --git a/crates/lib/server_environment/Cargo.toml b/crates/lib/server_environment/Cargo.toml index 61cd26d1e1..82d1767e4b 100644 --- a/crates/lib/server_environment/Cargo.toml +++ b/crates/lib/server_environment/Cargo.toml @@ -16,7 +16,6 @@ path = "src/lib.rs" [dependencies] # Internal easyenv = { path = "../easyenv" } -envvar = { path = "../envvar" } errors = { path = "../errors" } # External diff --git a/crates/service/job/download_job/Cargo.toml b/crates/service/job/download_job/Cargo.toml index 18060d8522..aafe4c50f4 100644 --- a/crates/service/job/download_job/Cargo.toml +++ b/crates/service/job/download_job/Cargo.toml @@ -23,7 +23,6 @@ container_common = { path = "../../../lib/deprecated/container_common" } crockford = { path = "../../../lib/crockford" } easyenv = { path = "../../../lib/easyenv" } enums = { path = "../../../_types/enums" } -envvar = { path = "../../../lib/envvar" } errors = { path = "../../../lib/errors" } filesys = { path = "../../../lib/files/filesys" } google_drive_common = { path = "../../../lib/api_clients/google_drive_common" } diff --git a/crates/service/job/inference_job/Cargo.toml b/crates/service/job/inference_job/Cargo.toml index 25a8dc74ea..18dbb60d83 100644 --- a/crates/service/job/inference_job/Cargo.toml +++ b/crates/service/job/inference_job/Cargo.toml @@ -24,7 +24,6 @@ config = { path = "../../../lib/deprecated/config" } container_common = { path = "../../../lib/deprecated/container_common" } easyenv = { path = "../../../lib/easyenv" } enums = { path = "../../../_types/enums" } -envvar = { path = "../../../lib/envvar" } errors = { path = "../../../lib/errors" } filesys = { path = "../../../lib/files/filesys" } hashing = { path = "../../../lib/files/hashing" } diff --git a/crates/service/web/storyteller_web/Cargo.toml b/crates/service/web/storyteller_web/Cargo.toml index 75c6c9f87a..dbc5cde46c 100644 --- a/crates/service/web/storyteller_web/Cargo.toml +++ b/crates/service/web/storyteller_web/Cargo.toml @@ -25,7 +25,6 @@ container_common = { path = "../../../lib/deprecated/container_common" } datetimes = { path = "../../../lib/datetimes" } easyenv = { path = "../../../lib/easyenv" } enums = { path = "../../../_types/enums" } -envvar = { path = "../../../lib/envvar" } errors = { path = "../../../lib/errors" } google_drive_common = { path = "../../../lib/api_clients/google_drive_common" } hashing = { path = "../../../lib/files/hashing" }