move ProcessEnv into turbo-tasks-env (vercel/turbo#462)

make ProcessEnv a trait to allow other implemenetations of it
This commit is contained in:
Tobias Koppers 2022-10-06 20:36:36 +02:00 committed by GitHub
parent 8c80ba4f78
commit d49a9c3b9d
5 changed files with 14 additions and 8 deletions

View file

@ -16,6 +16,7 @@ serde = "1.0.136"
serde_json = "1.0.85"
tokio = { version = "1.11.0", features = ["full"] }
turbo-tasks = { path = "../turbo-tasks" }
turbo-tasks-env = { path = "../turbo-tasks-env" }
turbo-tasks-fs = { path = "../turbo-tasks-fs" }
turbopack = { path = "../turbopack" }
turbopack-core = { path = "../turbopack-core" }

View file

@ -1,12 +1,15 @@
use anyhow::Result;
use turbo_tasks_env::{CommandLineProcessEnvVc, FilterProcessEnvVc, ProcessEnvVc};
use turbo_tasks_fs::FileSystemPathVc;
use turbopack_env::ProcessEnvVc;
use turbopack_env::TryDotenvProcessEnvVc;
/// Loads a series of dotenv files according to the precedence rules set by
/// https://nextjs.org/docs/basic-features/environment-variables#environment-variable-load-order
#[turbo_tasks::function]
pub async fn load_env(project_path: FileSystemPathVc) -> Result<ProcessEnvVc> {
let node_env = std::env::var("NODE_ENV").unwrap_or_else(|_| "development".into());
let env = CommandLineProcessEnvVc::new().as_process_env();
let node_env = env.read("NODE_ENV").await?;
let node_env = node_env.as_deref().unwrap_or("development");
let files = [
Some(format!(".env.{node_env}.local")),
@ -21,14 +24,14 @@ pub async fn load_env(project_path: FileSystemPathVc) -> Result<ProcessEnvVc> {
.into_iter()
.flatten();
let env = files.fold(ProcessEnvVc::from_command_line(), |prior, f| {
let env = files.fold(env, |prior, f| {
let path = project_path.join(&f);
ProcessEnvVc::from_dotenv_file(path, Some(prior))
TryDotenvProcessEnvVc::new(prior, path).as_process_env()
});
Ok(env)
}
pub fn filter_for_client(env: ProcessEnvVc) -> ProcessEnvVc {
ProcessEnvVc::filter(env, "NEXT_PUBLIC_".to_string())
FilterProcessEnvVc::new(env, "NEXT_PUBLIC_".to_string()).into()
}

View file

@ -3,6 +3,7 @@ use std::collections::HashMap;
use anyhow::Result;
use turbo_tasks::Value;
use turbo_tasks_env::ProcessEnvVc;
use turbo_tasks_fs::FileSystemPathVc;
use turbopack::{
module_options::module_options_context::{ModuleOptionsContext, ModuleOptionsContextVc},
@ -17,7 +18,7 @@ use turbopack_core::{
};
use turbopack_dev_server::html_runtime_asset::HtmlRuntimeAssetVc;
use turbopack_ecmascript::chunk::EcmascriptChunkPlaceablesVc;
use turbopack_env::{ProcessEnvAssetVc, ProcessEnvVc};
use turbopack_env::ProcessEnvAssetVc;
use crate::{
env::filter_for_client,

View file

@ -3,6 +3,7 @@ use std::collections::HashMap;
use anyhow::Result;
use serde_json::json;
use turbo_tasks::{primitives::JsonValueVc, Value};
use turbo_tasks_env::ProcessEnvVc;
use turbo_tasks_fs::{DirectoryContent, DirectoryEntry, FileSystemEntryType, FileSystemPathVc};
use turbopack::{
module_options::ModuleOptionsContext, resolve_options_context::ResolveOptionsContext,
@ -21,7 +22,7 @@ use turbopack_dev_server::source::{
ContentSourceVc, NoContentSourceVc,
};
use turbopack_ecmascript::chunk::EcmascriptChunkPlaceablesVc;
use turbopack_env::{ProcessEnvAssetVc, ProcessEnvVc};
use turbopack_env::ProcessEnvAssetVc;
use crate::{
next_client::{

View file

@ -2,6 +2,7 @@ use std::future::IntoFuture;
use anyhow::{anyhow, Result};
use futures::{prelude::*, stream};
use turbo_tasks_env::ProcessEnvVc;
use turbo_tasks_fs::FileSystemPathVc;
use turbopack::ecmascript::EcmascriptModuleAssetVc;
use turbopack_core::{
@ -12,7 +13,6 @@ use turbopack_dev_server::{
html::DevHtmlAsset,
source::{asset_graph::AssetGraphContentSourceVc, ContentSourceVc},
};
use turbopack_env::ProcessEnvVc;
use crate::next_client::context::{
get_client_asset_context, get_client_chunking_context, get_resolved_client_runtime_entries,