summaryrefslogtreecommitdiff
path: root/cli/factory.rs
diff options
context:
space:
mode:
authorBartek IwaƄczuk <biwanczuk@gmail.com>2023-10-12 17:55:50 +0200
committerGitHub <noreply@github.com>2023-10-12 15:55:50 +0000
commitc464cd7073c761780b3170a48542c387560e3f26 (patch)
tree881a26d05423f9c696c8f35ce8bd2d72d562b1ea /cli/factory.rs
parent5dd010a4fbeb0602891ea537b98216b8ad7d27a7 (diff)
refactor: FeatureChecker integration in ext/ crates (#20797)
Towards https://github.com/denoland/deno/issues/20779.
Diffstat (limited to 'cli/factory.rs')
-rw-r--r--cli/factory.rs18
1 files changed, 18 insertions, 0 deletions
diff --git a/cli/factory.rs b/cli/factory.rs
index 14f448b19..e4f9b60fe 100644
--- a/cli/factory.rs
+++ b/cli/factory.rs
@@ -47,6 +47,7 @@ use crate::worker::CliMainWorkerOptions;
use deno_core::error::AnyError;
use deno_core::parking_lot::Mutex;
+use deno_core::FeatureChecker;
use deno_graph::GraphKind;
use deno_runtime::deno_fs;
@@ -161,6 +162,7 @@ struct CliFactoryServices {
type_checker: Deferred<Arc<TypeChecker>>,
cjs_resolutions: Deferred<Arc<CjsResolutionStore>>,
cli_node_resolver: Deferred<Arc<CliNodeResolver>>,
+ feature_checker: Deferred<Arc<FeatureChecker>>,
}
pub struct CliFactory {
@@ -558,6 +560,21 @@ impl CliFactory {
.await
}
+ pub fn feature_checker(&self) -> &Arc<FeatureChecker> {
+ self.services.feature_checker.get_or_init(|| {
+ let mut checker = FeatureChecker::default();
+ checker.set_exit_cb(Box::new(crate::unstable_exit_cb));
+ // TODO(bartlomieju): enable, once we deprecate `--unstable` in favor
+ // of granular --unstable-* flags.
+ // feature_checker.set_warn_cb(Box::new(crate::unstable_warn_cb));
+ if self.options.unstable() {
+ checker.enable_legacy_unstable();
+ }
+
+ Arc::new(checker)
+ })
+ }
+
pub async fn create_compile_binary_writer(
&self,
) -> Result<DenoCompileBinaryWriter, AnyError> {
@@ -602,6 +619,7 @@ impl CliFactory {
self.fs().clone(),
self.maybe_inspector_server().clone(),
self.maybe_lockfile().clone(),
+ self.feature_checker().clone(),
self.create_cli_main_worker_options()?,
))
}