summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Cargo.lock9
-rw-r--r--cli/Cargo.toml2
-rw-r--r--cli/fmt.rs30
3 files changed, 24 insertions, 17 deletions
diff --git a/Cargo.lock b/Cargo.lock
index 3ec2b187f..b7756e542 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -607,21 +607,22 @@ checksum = "52ba6eb47c2131e784a38b726eb54c1e1484904f013e576a25354d0124161af6"
[[package]]
name = "dprint-core"
-version = "0.14.0"
+version = "0.16.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "93213397182b20fc4565e6ad93cc30cb1825a276d11bcac969cd06c63006898c"
+checksum = "2fe2ae2e02c20dcb77d422c6326db6c2a11a3dd37eb012b1cf69703685d272fb"
dependencies = [
"serde",
]
[[package]]
name = "dprint-plugin-typescript"
-version = "0.13.1"
+version = "0.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bdb73fe3655b530e17c5606b950cc55b0a05e7bdda50be11578f8eddade7ef96"
+checksum = "677d80078f5e36e7e697f5f1cc175cacb4cb206fd5f95c918023778b0a944b33"
dependencies = [
"dprint-core",
"serde",
+ "serde_json",
"swc_common",
"swc_ecma_ast",
"swc_ecma_parser",
diff --git a/cli/Cargo.toml b/cli/Cargo.toml
index c9a256378..0d614eaf9 100644
--- a/cli/Cargo.toml
+++ b/cli/Cargo.toml
@@ -33,7 +33,7 @@ byteorder = "1.3.4"
clap = "2.33.0"
dirs = "2.0.2"
dlopen = "0.1.8"
-dprint-plugin-typescript = "0.13.1"
+dprint-plugin-typescript = "0.14.0"
futures = { version = "0.3.4", features = ["compat", "io-compat"] }
glob = "0.3.0"
http = "0.2.1"
diff --git a/cli/fmt.rs b/cli/fmt.rs
index b371c8f9f..d6f2efd96 100644
--- a/cli/fmt.rs
+++ b/cli/fmt.rs
@@ -22,7 +22,11 @@ use std::sync::atomic::{AtomicUsize, Ordering};
use std::sync::{Arc, Mutex};
fn is_supported(path: &Path) -> bool {
- if let Some(ext) = path.extension() {
+ let lowercase_ext = path
+ .extension()
+ .and_then(|e| e.to_str())
+ .map(|e| e.to_lowercase());
+ if let Some(ext) = lowercase_ext {
ext == "ts" || ext == "tsx" || ext == "js" || ext == "jsx"
} else {
false
@@ -45,9 +49,8 @@ async fn check_source_files(
run_parallelized(paths, {
let not_formatted_files_count = not_formatted_files_count.clone();
move |file_path| {
- let file_path_str = file_path.to_string_lossy();
let file_contents = fs::read_to_string(&file_path)?;
- let r = formatter.format_text(&file_path_str, &file_contents);
+ let r = formatter.format_text(&file_path, &file_contents);
match r {
Ok(formatted_text) => {
if formatted_text != file_contents {
@@ -56,7 +59,7 @@ async fn check_source_files(
}
Err(e) => {
let _g = output_lock.lock().unwrap();
- eprintln!("Error checking: {}", &file_path_str);
+ eprintln!("Error checking: {}", file_path.to_string_lossy());
eprintln!(" {}", e);
}
}
@@ -100,21 +103,20 @@ async fn format_source_files(
run_parallelized(paths, {
let formatted_files_count = formatted_files_count.clone();
move |file_path| {
- let file_path_str = file_path.to_string_lossy();
let file_contents = fs::read_to_string(&file_path)?;
- let r = formatter.format_text(&file_path_str, &file_contents);
+ let r = formatter.format_text(&file_path, &file_contents);
match r {
Ok(formatted_text) => {
if formatted_text != file_contents {
fs::write(&file_path, formatted_text)?;
formatted_files_count.fetch_add(1, Ordering::SeqCst);
let _g = output_lock.lock().unwrap();
- println!("{}", file_path_str);
+ println!("{}", file_path.to_string_lossy());
}
}
Err(e) => {
let _g = output_lock.lock().unwrap();
- eprintln!("Error formatting: {}", &file_path_str);
+ eprintln!("Error formatting: {}", file_path.to_string_lossy());
eprintln!(" {}", e);
}
}
@@ -160,11 +162,10 @@ pub async fn format(args: Vec<String>, check: bool) -> Result<(), ErrBox> {
}
let config = get_config();
if check {
- check_source_files(config, target_files).await?;
+ check_source_files(config, target_files).await
} else {
- format_source_files(config, target_files).await?;
+ format_source_files(config, target_files).await
}
- Ok(())
}
/// Format stdin and write result to stdout.
@@ -177,7 +178,8 @@ fn format_stdin(check: bool) -> Result<(), ErrBox> {
}
let formatter = dprint::Formatter::new(get_config());
- match formatter.format_text("_stdin.ts", &source) {
+ // dprint will fallback to jsx parsing if parsing this as a .ts file doesn't work
+ match formatter.format_text(&PathBuf::from("_stdin.ts"), &source) {
Ok(formatted_text) => {
if check {
if formatted_text != source {
@@ -247,6 +249,10 @@ fn test_is_supported() {
assert!(is_supported(Path::new("cli/tests/002_hello.ts")));
assert!(is_supported(Path::new("foo.jsx")));
assert!(is_supported(Path::new("foo.tsx")));
+ assert!(is_supported(Path::new("foo.TS")));
+ assert!(is_supported(Path::new("foo.TSX")));
+ assert!(is_supported(Path::new("foo.JS")));
+ assert!(is_supported(Path::new("foo.JSX")));
}
#[tokio::test]