summaryrefslogtreecommitdiff
path: root/cli/args/mod.rs
diff options
context:
space:
mode:
authorBartek IwaƄczuk <biwanczuk@gmail.com>2023-08-24 11:21:34 +0200
committerGitHub <noreply@github.com>2023-08-24 11:21:34 +0200
commitf9beb928186f4edb07e07c96b677f14e75c428bb (patch)
tree4b9b6a3d6151ee2c1525e95678a99eedfc4647b3 /cli/args/mod.rs
parentb1ce2e41676ab5bc807a705b072986d9357fece5 (diff)
refactor: use "deno_config" crate (#20260)
Moved the configuration file to https://github.com/denoland/deno_config as we will have to use it in other projects.
Diffstat (limited to 'cli/args/mod.rs')
-rw-r--r--cli/args/mod.rs92
1 files changed, 69 insertions, 23 deletions
diff --git a/cli/args/mod.rs b/cli/args/mod.rs
index 65c6e7308..424a7dc70 100644
--- a/cli/args/mod.rs
+++ b/cli/args/mod.rs
@@ -1,6 +1,5 @@
// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license.
-mod config_file;
mod flags;
mod flags_net;
mod import_map;
@@ -18,19 +17,19 @@ use deno_runtime::deno_tls::RootCertStoreProvider;
use deno_semver::npm::NpmPackageReqReference;
use indexmap::IndexMap;
-pub use config_file::BenchConfig;
-pub use config_file::CompilerOptions;
-pub use config_file::ConfigFile;
-pub use config_file::EmitConfigOptions;
-pub use config_file::FilesConfig;
-pub use config_file::FmtOptionsConfig;
-pub use config_file::JsxImportSourceConfig;
-pub use config_file::LintRulesConfig;
-pub use config_file::ProseWrap;
-pub use config_file::TsConfig;
-pub use config_file::TsConfigForEmit;
-pub use config_file::TsConfigType;
-pub use config_file::TsTypeLib;
+pub use deno_config::BenchConfig;
+pub use deno_config::CompilerOptions;
+pub use deno_config::ConfigFile;
+pub use deno_config::EmitConfigOptions;
+pub use deno_config::FilesConfig;
+pub use deno_config::FmtOptionsConfig;
+pub use deno_config::JsxImportSourceConfig;
+pub use deno_config::LintRulesConfig;
+pub use deno_config::ProseWrap;
+pub use deno_config::TsConfig;
+pub use deno_config::TsConfigForEmit;
+pub use deno_config::TsConfigType;
+pub use deno_config::TsTypeLib;
pub use flags::*;
pub use lockfile::Lockfile;
pub use lockfile::LockfileError;
@@ -74,10 +73,43 @@ use crate::util::fs::canonicalize_path_maybe_not_exists;
use crate::util::glob::expand_globs;
use crate::version;
-use self::config_file::FmtConfig;
-use self::config_file::LintConfig;
-use self::config_file::MaybeImportsResult;
-use self::config_file::TestConfig;
+use deno_config::FmtConfig;
+use deno_config::LintConfig;
+use deno_config::TestConfig;
+
+pub fn ts_config_to_emit_options(
+ config: deno_config::TsConfig,
+) -> deno_ast::EmitOptions {
+ let options: deno_config::EmitConfigOptions =
+ serde_json::from_value(config.0).unwrap();
+ let imports_not_used_as_values =
+ match options.imports_not_used_as_values.as_str() {
+ "preserve" => deno_ast::ImportsNotUsedAsValues::Preserve,
+ "error" => deno_ast::ImportsNotUsedAsValues::Error,
+ _ => deno_ast::ImportsNotUsedAsValues::Remove,
+ };
+ let (transform_jsx, jsx_automatic, jsx_development) =
+ match options.jsx.as_str() {
+ "react" => (true, false, false),
+ "react-jsx" => (true, true, false),
+ "react-jsxdev" => (true, true, true),
+ _ => (false, false, false),
+ };
+ deno_ast::EmitOptions {
+ emit_metadata: options.emit_decorator_metadata,
+ imports_not_used_as_values,
+ inline_source_map: options.inline_source_map,
+ inline_sources: options.inline_sources,
+ source_map: options.source_map,
+ jsx_automatic,
+ jsx_development,
+ jsx_factory: options.jsx_factory,
+ jsx_fragment_factory: options.jsx_fragment_factory,
+ jsx_import_source: options.jsx_import_source,
+ transform_jsx,
+ var_decl_imports: false,
+ }
+}
/// Indicates how cached source files should be handled.
#[derive(Debug, Clone, Eq, PartialEq)]
@@ -595,10 +627,14 @@ impl CliOptions {
pub fn from_flags(flags: Flags) -> Result<Self, AnyError> {
let initial_cwd =
std::env::current_dir().with_context(|| "Failed getting cwd.")?;
- let maybe_config_file = ConfigFile::discover(&flags, &initial_cwd)?;
+ let maybe_config_file = ConfigFile::discover(
+ &flags.config_flag,
+ flags.config_path_args(&initial_cwd),
+ &initial_cwd,
+ )?;
let mut maybe_package_json = None;
- if flags.config_flag == ConfigFlag::Disabled
+ if flags.config_flag == deno_config::ConfigFlag::Disabled
|| flags.no_npm
|| has_flag_env_var("DENO_NO_PACKAGE_JSON")
{
@@ -890,7 +926,7 @@ impl CliOptions {
&self,
config_type: TsConfigType,
) -> Result<TsConfigForEmit, AnyError> {
- config_file::get_ts_config_for_emit(
+ deno_config::get_ts_config_for_emit(
config_type,
self.maybe_config_file.as_ref(),
)
@@ -934,9 +970,19 @@ impl CliOptions {
/// Return any imports that should be brought into the scope of the module
/// graph.
- pub fn to_maybe_imports(&self) -> MaybeImportsResult {
+ pub fn to_maybe_imports(
+ &self,
+ ) -> Result<Vec<deno_graph::ReferrerImports>, AnyError> {
if let Some(config_file) = &self.maybe_config_file {
- config_file.to_maybe_imports()
+ config_file.to_maybe_imports().map(|maybe_imports| {
+ maybe_imports
+ .into_iter()
+ .map(|(referrer, imports)| deno_graph::ReferrerImports {
+ referrer,
+ imports,
+ })
+ .collect()
+ })
} else {
Ok(Vec::new())
}