1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-12-25 16:49:18 -05:00

refactor(cli): move tooling to cli/tools/ (#8424)

This commit moves following tools into a single "tools"
module located at "cli/tools/mod.rs":
- formatter 
- linter
- test runner
- coverage collector
- installer
- binary upgrader
- repl
This commit is contained in:
Bartek Iwańczuk 2020-11-19 19:19:34 +01:00 committed by GitHub
parent 21e8ff6fc1
commit 9eaa1fb71d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 31 additions and 24 deletions

View file

@ -10,7 +10,6 @@ extern crate log;
mod ast; mod ast;
mod checksum; mod checksum;
mod colors; mod colors;
mod coverage;
mod deno_dir; mod deno_dir;
mod diagnostics; mod diagnostics;
mod diff; mod diff;
@ -20,7 +19,6 @@ mod file_fetcher;
mod file_watcher; mod file_watcher;
mod flags; mod flags;
mod flags_allow_net; mod flags_allow_net;
mod fmt;
mod fmt_errors; mod fmt_errors;
mod fs_util; mod fs_util;
mod http_cache; mod http_cache;
@ -28,9 +26,7 @@ mod http_util;
mod import_map; mod import_map;
mod info; mod info;
mod inspector; mod inspector;
mod installer;
mod js; mod js;
mod lint;
mod lockfile; mod lockfile;
mod media_type; mod media_type;
mod metrics; mod metrics;
@ -39,22 +35,18 @@ mod module_loader;
mod ops; mod ops;
mod permissions; mod permissions;
mod program_state; mod program_state;
mod repl;
mod resolve_addr; mod resolve_addr;
mod signal; mod signal;
mod source_maps; mod source_maps;
mod specifier_handler; mod specifier_handler;
mod test_runner;
mod text_encoding; mod text_encoding;
mod tokio_util; mod tokio_util;
mod tools;
mod tsc; mod tsc;
mod tsc_config; mod tsc_config;
mod upgrade;
mod version; mod version;
mod worker; mod worker;
use crate::coverage::CoverageCollector;
use crate::coverage::PrettyCoverageReporter;
use crate::file_fetcher::File; use crate::file_fetcher::File;
use crate::file_fetcher::FileFetcher; use crate::file_fetcher::FileFetcher;
use crate::media_type::MediaType; use crate::media_type::MediaType;
@ -88,7 +80,6 @@ use std::path::PathBuf;
use std::pin::Pin; use std::pin::Pin;
use std::rc::Rc; use std::rc::Rc;
use std::sync::Arc; use std::sync::Arc;
use upgrade::upgrade_command;
fn write_to_stdout_ignore_sigpipe(bytes: &[u8]) -> Result<(), std::io::Error> { fn write_to_stdout_ignore_sigpipe(bytes: &[u8]) -> Result<(), std::io::Error> {
use std::io::ErrorKind; use std::io::ErrorKind;
@ -213,7 +204,7 @@ async fn install_command(
MainWorker::new(&program_state, main_module.clone(), permissions); MainWorker::new(&program_state, main_module.clone(), permissions);
// First, fetch and compile the module; this step ensures that the module exists. // First, fetch and compile the module; this step ensures that the module exists.
worker.preload_module(&main_module).await?; worker.preload_module(&main_module).await?;
installer::install(flags, &module_url, args, name, root, force) tools::installer::install(flags, &module_url, args, name, root, force)
} }
async fn lint_command( async fn lint_command(
@ -228,11 +219,11 @@ async fn lint_command(
} }
if list_rules { if list_rules {
lint::print_rules_list(json); tools::lint::print_rules_list(json);
return Ok(()); return Ok(());
} }
lint::lint_files(files, ignore, json).await tools::lint::lint_files(files, ignore, json).await
} }
async fn cache_command( async fn cache_command(
@ -523,7 +514,7 @@ async fn run_repl(flags: Flags) -> Result<(), AnyError> {
MainWorker::new(&program_state, main_module.clone(), permissions); MainWorker::new(&program_state, main_module.clone(), permissions);
worker.run_event_loop().await?; worker.run_event_loop().await?;
repl::run(&program_state, worker).await tools::repl::run(&program_state, worker).await
} }
async fn run_from_stdin(flags: Flags) -> Result<(), AnyError> { async fn run_from_stdin(flags: Flags) -> Result<(), AnyError> {
@ -643,7 +634,8 @@ async fn test_command(
let permissions = Permissions::from_flags(&flags); let permissions = Permissions::from_flags(&flags);
let cwd = std::env::current_dir().expect("No current directory"); let cwd = std::env::current_dir().expect("No current directory");
let include = include.unwrap_or_else(|| vec![".".to_string()]); let include = include.unwrap_or_else(|| vec![".".to_string()]);
let test_modules = test_runner::prepare_test_modules_urls(include, &cwd)?; let test_modules =
tools::test_runner::prepare_test_modules_urls(include, &cwd)?;
if test_modules.is_empty() { if test_modules.is_empty() {
println!("No matching test modules found"); println!("No matching test modules found");
@ -656,7 +648,7 @@ async fn test_command(
let test_file_path = cwd.join("$deno$test.ts"); let test_file_path = cwd.join("$deno$test.ts");
let test_file_url = let test_file_url =
Url::from_file_path(&test_file_path).expect("Should be valid file url"); Url::from_file_path(&test_file_path).expect("Should be valid file url");
let test_file = test_runner::render_test_file( let test_file = tools::test_runner::render_test_file(
test_modules.clone(), test_modules.clone(),
fail_fast, fail_fast,
quiet, quiet,
@ -680,7 +672,8 @@ async fn test_command(
let mut maybe_coverage_collector = if flags.coverage { let mut maybe_coverage_collector = if flags.coverage {
let session = worker.create_inspector_session(); let session = worker.create_inspector_session();
let mut coverage_collector = CoverageCollector::new(session); let mut coverage_collector =
tools::coverage::CoverageCollector::new(session);
coverage_collector.start_collecting().await?; coverage_collector.start_collecting().await?;
Some(coverage_collector) Some(coverage_collector)
@ -699,10 +692,14 @@ async fn test_command(
let coverages = coverage_collector.collect().await?; let coverages = coverage_collector.collect().await?;
coverage_collector.stop_collecting().await?; coverage_collector.stop_collecting().await?;
let filtered_coverages = let filtered_coverages = tools::coverage::filter_script_coverages(
coverage::filter_script_coverages(coverages, test_file_url, test_modules); coverages,
test_file_url,
test_modules,
);
let mut coverage_reporter = PrettyCoverageReporter::new(quiet); let mut coverage_reporter =
tools::coverage::PrettyCoverageReporter::new(quiet);
for coverage in filtered_coverages { for coverage in filtered_coverages {
coverage_reporter.visit_coverage(&coverage); coverage_reporter.visit_coverage(&coverage);
} }
@ -796,7 +793,7 @@ pub fn main() {
check, check,
files, files,
ignore, ignore,
} => fmt::format(files, check, ignore).boxed_local(), } => tools::fmt::format(files, check, ignore).boxed_local(),
DenoSubcommand::Info { file, json } => { DenoSubcommand::Info { file, json } => {
info_command(flags, file, json).boxed_local() info_command(flags, file, json).boxed_local()
} }
@ -847,7 +844,8 @@ pub fn main() {
output, output,
ca_file, ca_file,
} => { } => {
upgrade_command(dry_run, force, version, output, ca_file).boxed_local() tools::upgrade::upgrade_command(dry_run, force, version, output, ca_file)
.boxed_local()
} }
}; };

View file

@ -8,10 +8,10 @@
//! the same functions as ops available in JS runtime. //! the same functions as ops available in JS runtime.
use crate::ast; use crate::ast;
use crate::colors; use crate::colors;
use crate::fmt::run_parallelized;
use crate::fmt_errors; use crate::fmt_errors;
use crate::fs_util::{collect_files, is_supported_ext}; use crate::fs_util::{collect_files, is_supported_ext};
use crate::media_type::MediaType; use crate::media_type::MediaType;
use crate::tools::fmt::run_parallelized;
use deno_core::error::{generic_error, AnyError, JsStackFrame}; use deno_core::error::{generic_error, AnyError, JsStackFrame};
use deno_core::serde_json; use deno_core::serde_json;
use deno_lint::diagnostic::LintDiagnostic; use deno_lint::diagnostic::LintDiagnostic;

9
cli/tools/mod.rs Normal file
View file

@ -0,0 +1,9 @@
// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license.
pub mod coverage;
pub mod fmt;
pub mod installer;
pub mod lint;
pub mod repl;
pub mod test_runner;
pub mod upgrade;

View file

@ -1,7 +1,7 @@
// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. // Copyright 2018-2020 the Deno authors. All rights reserved. MIT license.
use crate::fs_util; use crate::fs_util;
use crate::installer::is_remote_url; use crate::tools::installer::is_remote_url;
use deno_core::error::AnyError; use deno_core::error::AnyError;
use deno_core::serde_json::json; use deno_core::serde_json::json;
use deno_core::url::Url; use deno_core::url::Url;