Skip to content

Commit

Permalink
move ProcessEnv into turbo-tasks-env (vercel/turborepo#462)
Browse files Browse the repository at this point in the history
make ProcessEnv a trait to allow other implemenetations of it
  • Loading branch information
sokra authored Oct 6, 2022
1 parent 8c80ba4 commit d49a9c3
Show file tree
Hide file tree
Showing 5 changed files with 14 additions and 8 deletions.
1 change: 1 addition & 0 deletions packages/next-swc/crates/next-core/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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" }
Expand Down
13 changes: 8 additions & 5 deletions packages/next-swc/crates/next-core/src/env.rs
Original file line number Diff line number Diff line change
@@ -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")),
Expand All @@ -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()
}
Original file line number Diff line number Diff line change
Expand Up @@ -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},
Expand All @@ -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,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand All @@ -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::{
Expand Down
2 changes: 1 addition & 1 deletion packages/next-swc/crates/next-core/src/web_entry_source.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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::{
Expand All @@ -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,
Expand Down

0 comments on commit d49a9c3

Please sign in to comment.