Skip to content

Commit 20df30e

Browse files
wip for replacing DSL
1 parent cea716c commit 20df30e

File tree

1 file changed

+31
-6
lines changed
  • crates/turborepo-lib/src/turbo_json

1 file changed

+31
-6
lines changed

crates/turborepo-lib/src/turbo_json/mod.rs

+31-6
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ use clap::ValueEnum;
1111
use miette::{NamedSource, SourceSpan};
1212
use serde::{Deserialize, Serialize};
1313
use struct_iterable::Iterable;
14-
use turbopath::AbsoluteSystemPath;
14+
use turbopath::{AbsoluteSystemPath, AnchoredSystemPath, AnchoredSystemPathBuf};
1515
use turborepo_errors::Spanned;
1616
use turborepo_repository::package_graph::ROOT_PKG_NAME;
1717
use turborepo_unescape::UnescapedString;
@@ -33,6 +33,8 @@ pub use loader::TurboJsonLoader;
3333

3434
use crate::{boundaries::BoundariesConfig, config::UnnecessaryPackageTaskSyntaxError};
3535

36+
const TURBO_ROOT: &str = "$TURBO_ROOT$";
37+
3638
#[derive(Serialize, Deserialize, Debug, Default, PartialEq, Clone, Deserializable)]
3739
#[serde(rename_all = "camelCase")]
3840
pub struct SpacesJson {
@@ -537,10 +539,11 @@ impl RawTurboJson {
537539
}
538540
}
539541

540-
impl TryFrom<RawTurboJson> for TurboJson {
541-
type Error = Error;
542-
543-
fn try_from(raw_turbo: RawTurboJson) -> Result<Self, Error> {
542+
impl TurboJson {
543+
fn from_raw(
544+
raw_turbo: RawTurboJson,
545+
path_to_repo_root: &AnchoredSystemPath,
546+
) -> Result<Self, Error> {
544547
if let Some(pipeline) = raw_turbo.pipeline {
545548
let (span, text) = pipeline.span_and_text("turbo.json");
546549
return Err(Error::PipelineField { span, text });
@@ -608,6 +611,8 @@ impl TryFrom<RawTurboJson> for TurboJson {
608611
// Remote Cache config is handled through layered config
609612
})
610613
}
614+
615+
// fn task
611616
}
612617

613618
impl TurboJson {
@@ -629,7 +634,12 @@ impl TurboJson {
629634
path: &AbsoluteSystemPath,
630635
) -> Result<TurboJson, Error> {
631636
let raw_turbo_json = RawTurboJson::read(repo_root, path)?;
632-
raw_turbo_json.try_into()
637+
// pass in repo_root
638+
// This needs the relative path to root
639+
let pkg_path = path.parent().expect("turbo.json is not root");
640+
// relative pkg_path -> repo_root
641+
let path_to_root = AnchoredSystemPathBuf::relative_path_between(pkg_path, repo_root);
642+
TurboJson::from_raw(raw_turbo_json, &path_to_root)
633643
}
634644

635645
pub fn task(&self, task_id: &TaskId, task_name: &TaskName) -> Option<RawTaskDefinition> {
@@ -789,6 +799,21 @@ fn gather_env_vars(
789799
Ok(())
790800
}
791801

802+
// $TURBO_ROOT$/something
803+
fn replace_turbo_root_token(
804+
task_definition: &mut TaskDefinition,
805+
path_to_repo_root: &AnchoredSystemPath,
806+
) {
807+
for input in task_definition.inputs.iter_mut() {
808+
let swapped = input.replacen(TURBO_ROOT, path_to_repo_root.as_str(), 1);
809+
}
810+
/* need to go through incl & exclu individually
811+
for output in task_definition.outputs.iter_mut() {
812+
let swapped = output.replacen(TURBO_ROOT, path_to_repo_root.as_str(), 1);
813+
}
814+
*/
815+
}
816+
792817
#[cfg(test)]
793818
mod tests {
794819
use anyhow::Result;

0 commit comments

Comments
 (0)