mirror of
https://github.com/denoland/deno.git
synced 2024-12-24 08:09:08 -05:00
Support --fmt
This commit is contained in:
parent
f84da880bb
commit
18b815e336
9 changed files with 64 additions and 9 deletions
|
@ -1,2 +1,3 @@
|
||||||
js/flatbuffers.js
|
js/flatbuffers.js
|
||||||
tests/error_syntax.js
|
tests/error_syntax.js
|
||||||
|
tests/badly_formatted.js
|
||||||
|
|
|
@ -30,6 +30,7 @@ pub struct DenoFlags {
|
||||||
pub types: bool,
|
pub types: bool,
|
||||||
pub prefetch: bool,
|
pub prefetch: bool,
|
||||||
pub info: bool,
|
pub info: bool,
|
||||||
|
pub fmt: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_usage(opts: &Options) -> String {
|
pub fn get_usage(opts: &Options) -> String {
|
||||||
|
@ -115,6 +116,9 @@ fn set_recognized_flags(
|
||||||
if matches.opt_present("info") {
|
if matches.opt_present("info") {
|
||||||
flags.info = true;
|
flags.info = true;
|
||||||
}
|
}
|
||||||
|
if matches.opt_present("fmt") {
|
||||||
|
flags.fmt = true;
|
||||||
|
}
|
||||||
|
|
||||||
if !matches.free.is_empty() {
|
if !matches.free.is_empty() {
|
||||||
rest.extend(matches.free);
|
rest.extend(matches.free);
|
||||||
|
@ -152,6 +156,7 @@ pub fn set_flags(
|
||||||
opts.optflag("", "types", "Print runtime TypeScript declarations.");
|
opts.optflag("", "types", "Print runtime TypeScript declarations.");
|
||||||
opts.optflag("", "prefetch", "Prefetch the dependencies.");
|
opts.optflag("", "prefetch", "Prefetch the dependencies.");
|
||||||
opts.optflag("", "info", "Show source file related info");
|
opts.optflag("", "info", "Show source file related info");
|
||||||
|
opts.optflag("", "fmt", "Format code.");
|
||||||
|
|
||||||
let mut flags = DenoFlags::default();
|
let mut flags = DenoFlags::default();
|
||||||
|
|
||||||
|
|
|
@ -63,8 +63,8 @@ fn print_err_and_exit(err: errors::RustOrJsError) {
|
||||||
fn main() {
|
fn main() {
|
||||||
log::set_logger(&LOGGER).unwrap();
|
log::set_logger(&LOGGER).unwrap();
|
||||||
let args = env::args().collect();
|
let args = env::args().collect();
|
||||||
let (flags, rest_argv, usage_string) =
|
let (mut flags, mut rest_argv, usage_string) = flags::set_flags(args)
|
||||||
flags::set_flags(args).unwrap_or_else(|err| {
|
.unwrap_or_else(|err| {
|
||||||
eprintln!("{}", err);
|
eprintln!("{}", err);
|
||||||
std::process::exit(1)
|
std::process::exit(1)
|
||||||
});
|
});
|
||||||
|
@ -80,6 +80,11 @@ fn main() {
|
||||||
LevelFilter::Warn
|
LevelFilter::Warn
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if flags.fmt {
|
||||||
|
rest_argv.insert(1, "https://deno.land/x/std/prettier/main.ts".to_string());
|
||||||
|
flags.allow_write = true;
|
||||||
|
}
|
||||||
|
|
||||||
let should_prefetch = flags.prefetch;
|
let should_prefetch = flags.prefetch;
|
||||||
let should_display_info = flags.info;
|
let should_display_info = flags.info;
|
||||||
|
|
||||||
|
|
4
tests/badly_formatted.js
Normal file
4
tests/badly_formatted.js
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
|
||||||
|
console.log(
|
||||||
|
"Hello World"
|
||||||
|
)
|
1
tests/badly_formatted_fixed.js
Normal file
1
tests/badly_formatted_fixed.js
Normal file
|
@ -0,0 +1 @@
|
||||||
|
console.log("Hello World");
|
34
tools/fmt_test.py
Executable file
34
tools/fmt_test.py
Executable file
|
@ -0,0 +1,34 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
# Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
from util import mkdtemp, root_path, tests_path, run, green_ok
|
||||||
|
import shutil
|
||||||
|
|
||||||
|
|
||||||
|
def fmt_test(deno_exe):
|
||||||
|
sys.stdout.write("fmt_test...")
|
||||||
|
sys.stdout.flush()
|
||||||
|
d = mkdtemp()
|
||||||
|
try:
|
||||||
|
fixed_filename = os.path.join(tests_path, "badly_formatted_fixed.js")
|
||||||
|
src = os.path.join(tests_path, "badly_formatted.js")
|
||||||
|
dst = os.path.join(d, "badly_formatted.js")
|
||||||
|
shutil.copyfile(src, dst)
|
||||||
|
# Set DENO_DIR to //js/ so we don't have to rely on an intenet
|
||||||
|
# connection to download https://deno.land/x/std/prettier/main.ts
|
||||||
|
deno_dir = os.path.join(root_path, "js")
|
||||||
|
run([deno_exe, dst, "--fmt"], merge_env={"DENO_DIR": deno_dir})
|
||||||
|
with open(fixed_filename) as f:
|
||||||
|
expected = f.read()
|
||||||
|
with open(dst) as f:
|
||||||
|
actual = f.read()
|
||||||
|
assert expected == actual
|
||||||
|
finally:
|
||||||
|
shutil.rmtree(d)
|
||||||
|
print green_ok()
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
fmt_test(sys.argv[1])
|
||||||
|
|
|
@ -2,8 +2,7 @@
|
||||||
# Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
|
# Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
from util import tests_path, run_output, build_path, executable_suffix, green_ok
|
from util import mkdtemp, tests_path, run_output, green_ok
|
||||||
import tempfile
|
|
||||||
import shutil
|
import shutil
|
||||||
|
|
||||||
|
|
||||||
|
@ -11,11 +10,7 @@ def prefetch_test(deno_exe):
|
||||||
sys.stdout.write("prefetch_test...")
|
sys.stdout.write("prefetch_test...")
|
||||||
sys.stdout.flush()
|
sys.stdout.flush()
|
||||||
|
|
||||||
# On Windows, set the base directory that mkdtemp() uses explicitly. If not,
|
deno_dir = mkdtemp()
|
||||||
# it'll use the short (8.3) path to the temp dir, which triggers the error
|
|
||||||
# 'TS5009: Cannot find the common subdirectory path for the input files.'
|
|
||||||
temp_dir = os.environ["TEMP"] if os.name == 'nt' else None
|
|
||||||
deno_dir = tempfile.mkdtemp(dir=temp_dir)
|
|
||||||
try:
|
try:
|
||||||
t = os.path.join(tests_path, "006_url_imports.ts")
|
t = os.path.join(tests_path, "006_url_imports.ts")
|
||||||
output = run_output([deno_exe, "--prefetch", t],
|
output = run_output([deno_exe, "--prefetch", t],
|
||||||
|
|
|
@ -13,6 +13,7 @@ from util_test import util_test
|
||||||
from benchmark_test import benchmark_test
|
from benchmark_test import benchmark_test
|
||||||
from repl_test import repl_tests
|
from repl_test import repl_tests
|
||||||
from prefetch_test import prefetch_test
|
from prefetch_test import prefetch_test
|
||||||
|
from fmt_test import fmt_test
|
||||||
import subprocess
|
import subprocess
|
||||||
import http_server
|
import http_server
|
||||||
|
|
||||||
|
@ -61,6 +62,7 @@ def main(argv):
|
||||||
unit_tests(deno_exe)
|
unit_tests(deno_exe)
|
||||||
|
|
||||||
prefetch_test(deno_exe)
|
prefetch_test(deno_exe)
|
||||||
|
fmt_test(deno_exe)
|
||||||
|
|
||||||
integration_tests(deno_exe)
|
integration_tests(deno_exe)
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,7 @@ import shutil
|
||||||
import stat
|
import stat
|
||||||
import sys
|
import sys
|
||||||
import subprocess
|
import subprocess
|
||||||
|
import tempfile
|
||||||
|
|
||||||
RESET = "\x1b[0m"
|
RESET = "\x1b[0m"
|
||||||
FG_RED = "\x1b[31m"
|
FG_RED = "\x1b[31m"
|
||||||
|
@ -381,3 +382,10 @@ def parse_wrk_output(output):
|
||||||
|
|
||||||
def platform():
|
def platform():
|
||||||
return {"linux2": "linux", "darwin": "mac", "win32": "win"}[sys.platform]
|
return {"linux2": "linux", "darwin": "mac", "win32": "win"}[sys.platform]
|
||||||
|
|
||||||
|
def mkdtemp():
|
||||||
|
# On Windows, set the base directory that mkdtemp() uses explicitly. If not,
|
||||||
|
# it'll use the short (8.3) path to the temp dir, which triggers the error
|
||||||
|
# 'TS5009: Cannot find the common subdirectory path for the input files.'
|
||||||
|
temp_dir = os.environ["TEMP"] if os.name == 'nt' else None
|
||||||
|
return tempfile.mkdtemp(dir=temp_dir)
|
||||||
|
|
Loading…
Reference in a new issue