Skip to content

Commit 5109bb0

Browse files
authored
Deprecate bs-dependencies, bs-dev-dependencies and bsc-flags (#7658)
* feat: deprecate bs-deps and bs-dev-deps * feat: deprecate `bsc-flags` * chore: CHANGELOG * tests: add tests for compiler-flags
1 parent ac6a87d commit 5109bb0

35 files changed

+489
-195
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@
1212
1313
# 12.0.0-beta.3 (Unreleased)
1414

15+
#### :nail_care: Polish
16+
17+
- Configuration fields `bs-dependencies`, `bs-dev-dependencies` and `bsc-flags` are now deprecated in favor of `dependencies`, `dev-dependencies` and `compiler-flags`. https://github.com/rescript-lang/rescript/pull/7658
18+
1519
# 12.0.0-beta.2
1620

1721
#### :boom: Breaking Change

rewatch/src/build.rs

Lines changed: 38 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,43 @@ 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+
config::DeprecationWarning::BscFlags => {
480+
log_deprecated_config_field(&package.name, "bsc-flags", "compiler-flags");
481+
}
482+
});
483+
});
484+
}
485+
486+
fn log_deprecated_config_field(package_name: &str, field_name: &str, new_field_name: &str) {
487+
let warning = format!(
488+
"The field '{}' found in the package config of '{}' is deprecated and will be removed in a future version.\n\
489+
Use '{}' instead.",
490+
field_name, package_name, new_field_name
491+
);
492+
println!("\n{}", style(warning).yellow());
493+
}
494+
459495
// write build.ninja files in the packages after a non-incremental build
460496
// this is necessary to bust the editor tooling cache. The editor tooling
461497
// is watching this file.

rewatch/src/build/compile.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -361,7 +361,7 @@ pub fn compiler_args(
361361
is_type_dev: bool,
362362
is_local_dep: bool,
363363
) -> Vec<String> {
364-
let bsc_flags = config::flatten_flags(&config.bsc_flags);
364+
let bsc_flags = config::flatten_flags(&config.compiler_flags);
365365

366366
let dependency_paths = get_dependency_paths(config, project_root, workspace_root, packages, is_type_dev);
367367

@@ -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);

rewatch/src/build/parse.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -266,7 +266,7 @@ pub fn parser_args(
266266
let jsx_module_args = root_config.get_jsx_module_args();
267267
let jsx_mode_args = root_config.get_jsx_mode_args();
268268
let jsx_preserve_args = root_config.get_jsx_preserve_args();
269-
let bsc_flags = config::flatten_flags(&config.bsc_flags);
269+
let bsc_flags = config::flatten_flags(&config.compiler_flags);
270270

271271
let file = PathBuf::from("..").join("..").join(file);
272272

0 commit comments

Comments
 (0)