diff options
author | Bartek IwaĆczuk <biwanczuk@gmail.com> | 2023-10-12 17:55:50 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-10-12 15:55:50 +0000 |
commit | c464cd7073c761780b3170a48542c387560e3f26 (patch) | |
tree | 881a26d05423f9c696c8f35ce8bd2d72d562b1ea /cli/factory.rs | |
parent | 5dd010a4fbeb0602891ea537b98216b8ad7d27a7 (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.rs | 18 |
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()?, )) } |