Skip to content

Commit d72ca61

Browse files
committed
feat: deprecate bs-deps and bs-dev-deps
1 parent 8ed879e commit d72ca61

33 files changed

+379
-191
lines changed

rewatch/src/build.rs

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ use self::parse::parser_args;
1313
use crate::build::compile::{mark_modules_with_deleted_deps_dirty, mark_modules_with_expired_deps_dirty};
1414
use crate::helpers::emojis::*;
1515
use crate::helpers::{self, get_workspace_root};
16-
use crate::sourcedirs;
16+
use crate::{config, sourcedirs};
1717
use anyhow::{Result, anyhow};
1818
use build_types::*;
1919
use console::style;
@@ -280,7 +280,7 @@ impl fmt::Display for IncrementalBuildError {
280280
pub fn incremental_build(
281281
build_state: &mut BuildState,
282282
default_timing: Option<Duration>,
283-
_initial_build: bool,
283+
initial_build: bool,
284284
show_progress: bool,
285285
only_incremental: bool,
286286
create_sourcedirs: bool,
@@ -426,6 +426,9 @@ pub fn incremental_build(
426426
if helpers::contains_ascii_characters(&compile_warnings) {
427427
println!("{}", &compile_warnings);
428428
}
429+
if initial_build {
430+
log_deprecations(build_state);
431+
}
429432
if helpers::contains_ascii_characters(&compile_errors) {
430433
println!("{}", &compile_errors);
431434
}
@@ -452,10 +455,40 @@ pub fn incremental_build(
452455
if helpers::contains_ascii_characters(&compile_warnings) {
453456
println!("{}", &compile_warnings);
454457
}
458+
if initial_build {
459+
log_deprecations(build_state);
460+
}
461+
455462
Ok(())
456463
}
457464
}
458465

466+
fn log_deprecations(build_state: &BuildState) {
467+
build_state.packages.iter().for_each(|(_, package)| {
468+
package
469+
.config
470+
.get_deprecations()
471+
.iter()
472+
.for_each(|deprecation_warning| match deprecation_warning {
473+
config::DeprecationWarning::BsDependencies => {
474+
log_deprecated_config_field(&package.name, "bs-dependencies", "dependencies");
475+
}
476+
config::DeprecationWarning::BsDevDependencies => {
477+
log_deprecated_config_field(&package.name, "bs-dev-dependencies", "dev-dependencies");
478+
}
479+
});
480+
});
481+
}
482+
483+
fn log_deprecated_config_field(package_name: &str, field_name: &str, new_field_name: &str) {
484+
let warning = format!(
485+
"Deprecated use of field '{}' found in the config of package '{}'.\n\
486+
Use '{}' instead. This field will be removed in a future version.",
487+
field_name, package_name, new_field_name
488+
);
489+
println!("\n{}", style(warning).yellow());
490+
}
491+
459492
// write build.ninja files in the packages after a non-incremental build
460493
// this is necessary to bust the editor tooling cache. The editor tooling
461494
// is watching this file.

rewatch/src/build/compile.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -504,7 +504,7 @@ fn get_dependency_paths(
504504
is_file_type_dev: bool,
505505
) -> Vec<Vec<String>> {
506506
let normal_deps = config
507-
.bs_dependencies
507+
.dependencies
508508
.clone()
509509
.unwrap_or_default()
510510
.into_iter()
@@ -514,7 +514,7 @@ fn get_dependency_paths(
514514
// We can only access dev dependencies for source_files that are marked as "type":"dev"
515515
let dev_deps = if is_file_type_dev {
516516
config
517-
.bs_dev_dependencies
517+
.dev_dependencies
518518
.clone()
519519
.unwrap_or_default()
520520
.into_iter()

rewatch/src/build/deps.rs

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -37,18 +37,11 @@ fn get_dep_modules(
3737
// Get the list of allowed dependency packages for this package
3838
let allowed_dependencies: AHashSet<String> = package
3939
.config
40-
.bs_dependencies
40+
.dependencies
4141
.as_ref()
4242
.unwrap_or(&vec![])
4343
.iter()
44-
.chain(
45-
package
46-
.config
47-
.bs_dev_dependencies
48-
.as_ref()
49-
.unwrap_or(&vec![])
50-
.iter(),
51-
)
44+
.chain(package.config.dev_dependencies.as_ref().unwrap_or(&vec![]).iter())
5245
.cloned()
5346
.collect();
5447

rewatch/src/build/packages.rs

Lines changed: 76 additions & 85 deletions
Original file line numberDiff line numberDiff line change
@@ -243,9 +243,9 @@ pub fn read_config(package_dir: &Path) -> Result<config::Config> {
243243
let bsconfig_json_path = package_dir.join("bsconfig.json");
244244

245245
if Path::new(&rescript_json_path).exists() {
246-
config::read(&rescript_json_path)
246+
config::Config::new(&rescript_json_path)
247247
} else {
248-
config::read(&bsconfig_json_path)
248+
config::Config::new(&bsconfig_json_path)
249249
}
250250
}
251251

@@ -310,10 +310,10 @@ fn read_dependencies(
310310
show_progress: bool,
311311
build_dev_deps: bool,
312312
) -> Vec<Dependency> {
313-
let mut dependencies = parent_config.bs_dependencies.to_owned().unwrap_or_default();
313+
let mut dependencies = parent_config.dependencies.to_owned().unwrap_or_default();
314314

315315
// Concatenate dev dependencies if build_dev_deps is true
316-
if build_dev_deps && let Some(dev_deps) = parent_config.bs_dev_dependencies.to_owned() {
316+
if build_dev_deps && let Some(dev_deps) = parent_config.dev_dependencies.to_owned() {
317317
dependencies.extend(dev_deps);
318318
}
319319

@@ -916,9 +916,9 @@ pub fn validate_packages_dependencies(packages: &AHashMap<String, Package>) -> b
916916
let mut detected_unallowed_dependencies: AHashMap<String, UnallowedDependency> = AHashMap::new();
917917

918918
for (package_name, package) in packages {
919-
let bs_dependencies = &package.config.bs_dependencies.to_owned().unwrap_or(vec![]);
919+
let bs_dependencies = &package.config.dependencies.to_owned().unwrap_or(vec![]);
920920
let pinned_dependencies = &package.config.pinned_dependencies.to_owned().unwrap_or(vec![]);
921-
let dev_dependencies = &package.config.bs_dev_dependencies.to_owned().unwrap_or(vec![]);
921+
let dev_dependencies = &package.config.dev_dependencies.to_owned().unwrap_or(vec![]);
922922

923923
[
924924
("bs-dependencies", bs_dependencies),
@@ -984,39 +984,30 @@ pub fn validate_packages_dependencies(packages: &AHashMap<String, Package>) -> b
984984

985985
#[cfg(test)]
986986
mod test {
987+
use crate::config;
988+
987989
use super::{Namespace, Package};
988-
use crate::config::Source;
989990
use ahash::{AHashMap, AHashSet};
990991
use std::path::PathBuf;
991992

992-
fn create_package(
993+
pub struct CreatePackageArgs {
993994
name: String,
994995
bs_deps: Vec<String>,
995996
pinned_deps: Vec<String>,
996997
build_dev_deps: Vec<String>,
997998
allowed_dependents: Option<Vec<String>>,
998-
) -> Package {
999+
}
1000+
1001+
fn create_package(args: CreatePackageArgs) -> Package {
9991002
Package {
1000-
name: name.clone(),
1001-
config: crate::config::Config {
1002-
name: name.clone(),
1003-
sources: Some(crate::config::OneOrMore::Single(Source::Shorthand(String::from(
1004-
"Source",
1005-
)))),
1006-
package_specs: None,
1007-
warnings: None,
1008-
suffix: None,
1009-
pinned_dependencies: Some(pinned_deps),
1010-
bs_dependencies: Some(bs_deps),
1011-
bs_dev_dependencies: Some(build_dev_deps),
1012-
ppx_flags: None,
1013-
bsc_flags: None,
1014-
namespace: None,
1015-
jsx: None,
1016-
gentype_config: None,
1017-
namespace_entry: None,
1018-
allowed_dependents,
1019-
},
1003+
name: args.name.clone(),
1004+
config: config::tests::create_config(config::tests::CreateConfigArgs {
1005+
name: args.name,
1006+
bs_deps: args.bs_deps,
1007+
pinned_deps: args.pinned_deps,
1008+
build_dev_deps: args.build_dev_deps,
1009+
allowed_dependents: args.allowed_dependents,
1010+
}),
10201011
source_folders: AHashSet::new(),
10211012
source_files: None,
10221013
namespace: Namespace::Namespace(String::from("Package1")),
@@ -1033,23 +1024,23 @@ mod test {
10331024
let mut packages: AHashMap<String, Package> = AHashMap::new();
10341025
packages.insert(
10351026
String::from("Package1"),
1036-
create_package(
1037-
String::from("Package1"),
1038-
vec![String::from("Package2")],
1039-
vec![],
1040-
vec![],
1041-
None,
1042-
),
1027+
create_package(CreatePackageArgs {
1028+
name: String::from("Package1"),
1029+
bs_deps: vec![String::from("Package2")],
1030+
pinned_deps: vec![],
1031+
build_dev_deps: vec![],
1032+
allowed_dependents: None,
1033+
}),
10431034
);
10441035
packages.insert(
10451036
String::from("Package2"),
1046-
create_package(
1047-
String::from("Package2"),
1048-
vec![],
1049-
vec![],
1050-
vec![],
1051-
Some(vec![String::from("Package3")]),
1052-
),
1037+
create_package(CreatePackageArgs {
1038+
name: String::from("Package2"),
1039+
bs_deps: vec![],
1040+
pinned_deps: vec![],
1041+
build_dev_deps: vec![],
1042+
allowed_dependents: Some(vec![String::from("Package3")]),
1043+
}),
10531044
);
10541045

10551046
let is_valid = super::validate_packages_dependencies(&packages);
@@ -1061,23 +1052,23 @@ mod test {
10611052
let mut packages: AHashMap<String, Package> = AHashMap::new();
10621053
packages.insert(
10631054
String::from("Package1"),
1064-
create_package(
1065-
String::from("Package1"),
1066-
vec![],
1067-
vec![String::from("Package2")],
1068-
vec![],
1069-
None,
1070-
),
1055+
create_package(CreatePackageArgs {
1056+
name: String::from("Package1"),
1057+
bs_deps: vec![],
1058+
pinned_deps: vec![String::from("Package2")],
1059+
build_dev_deps: vec![],
1060+
allowed_dependents: None,
1061+
}),
10711062
);
10721063
packages.insert(
10731064
String::from("Package2"),
1074-
create_package(
1075-
String::from("Package2"),
1076-
vec![],
1077-
vec![],
1078-
vec![],
1079-
Some(vec![String::from("Package3")]),
1080-
),
1065+
create_package(CreatePackageArgs {
1066+
name: String::from("Package2"),
1067+
bs_deps: vec![],
1068+
pinned_deps: vec![],
1069+
build_dev_deps: vec![],
1070+
allowed_dependents: Some(vec![String::from("Package3")]),
1071+
}),
10811072
);
10821073

10831074
let is_valid = super::validate_packages_dependencies(&packages);
@@ -1089,23 +1080,23 @@ mod test {
10891080
let mut packages: AHashMap<String, Package> = AHashMap::new();
10901081
packages.insert(
10911082
String::from("Package1"),
1092-
create_package(
1093-
String::from("Package1"),
1094-
vec![],
1095-
vec![],
1096-
vec![String::from("Package2")],
1097-
None,
1098-
),
1083+
create_package(CreatePackageArgs {
1084+
name: String::from("Package1"),
1085+
bs_deps: vec![],
1086+
pinned_deps: vec![],
1087+
build_dev_deps: vec![String::from("Package2")],
1088+
allowed_dependents: None,
1089+
}),
10991090
);
11001091
packages.insert(
11011092
String::from("Package2"),
1102-
create_package(
1103-
String::from("Package2"),
1104-
vec![],
1105-
vec![],
1106-
vec![],
1107-
Some(vec![String::from("Package3")]),
1108-
),
1093+
create_package(CreatePackageArgs {
1094+
name: String::from("Package2"),
1095+
bs_deps: vec![],
1096+
pinned_deps: vec![],
1097+
build_dev_deps: vec![],
1098+
allowed_dependents: Some(vec![String::from("Package3")]),
1099+
}),
11091100
);
11101101

11111102
let is_valid = super::validate_packages_dependencies(&packages);
@@ -1117,23 +1108,23 @@ mod test {
11171108
let mut packages: AHashMap<String, Package> = AHashMap::new();
11181109
packages.insert(
11191110
String::from("Package1"),
1120-
create_package(
1121-
String::from("Package1"),
1122-
vec![String::from("Package2")],
1123-
vec![],
1124-
vec![],
1125-
None,
1126-
),
1111+
create_package(CreatePackageArgs {
1112+
name: String::from("Package1"),
1113+
bs_deps: vec![String::from("Package2")],
1114+
pinned_deps: vec![],
1115+
build_dev_deps: vec![],
1116+
allowed_dependents: None,
1117+
}),
11271118
);
11281119
packages.insert(
11291120
String::from("Package2"),
1130-
create_package(
1131-
String::from("Package2"),
1132-
vec![],
1133-
vec![],
1134-
vec![],
1135-
Some(vec![String::from("Package1")]),
1136-
),
1121+
create_package(CreatePackageArgs {
1122+
name: String::from("Package2"),
1123+
bs_deps: vec![],
1124+
pinned_deps: vec![],
1125+
build_dev_deps: vec![],
1126+
allowed_dependents: Some(vec![String::from("Package1")]),
1127+
}),
11371128
);
11381129

11391130
let is_valid = super::validate_packages_dependencies(&packages);

0 commit comments

Comments
 (0)