mirror of
https://github.com/denoland/deno.git
synced 2024-11-21 15:04:11 -05:00
feat(fmt): stabilize CSS, HTML and YAML formatters (#25753)
This commits stabilizes CSS, HTML and YAML formatters in `deno fmt`. It is no longer required to use either of these flags: - `--unstable-css` - `--unstable-html` - `--unstable-yaml` Or these `unstable` options in the config file: - `fmt-css` - `fmt-html` - `html-yaml`
This commit is contained in:
parent
be13da5d8d
commit
a7ac89935b
15 changed files with 39 additions and 209 deletions
|
@ -206,10 +206,7 @@ pub struct FmtFlags {
|
|||
pub prose_wrap: Option<String>,
|
||||
pub no_semicolons: Option<bool>,
|
||||
pub watch: Option<WatchFlags>,
|
||||
pub unstable_css: bool,
|
||||
pub unstable_html: bool,
|
||||
pub unstable_component: bool,
|
||||
pub unstable_yaml: bool,
|
||||
}
|
||||
|
||||
impl FmtFlags {
|
||||
|
@ -2219,7 +2216,8 @@ Ignore formatting a file by adding an ignore comment at the top of the file:
|
|||
.help("Enable formatting CSS, SCSS, Sass and Less files")
|
||||
.value_parser(FalseyValueParser::new())
|
||||
.action(ArgAction::SetTrue)
|
||||
.help_heading(FMT_HEADING),
|
||||
.help_heading(FMT_HEADING)
|
||||
.hide(true),
|
||||
)
|
||||
.arg(
|
||||
Arg::new("unstable-html")
|
||||
|
@ -2227,7 +2225,8 @@ Ignore formatting a file by adding an ignore comment at the top of the file:
|
|||
.help("Enable formatting HTML files")
|
||||
.value_parser(FalseyValueParser::new())
|
||||
.action(ArgAction::SetTrue)
|
||||
.help_heading(FMT_HEADING),
|
||||
.help_heading(FMT_HEADING)
|
||||
.hide(true),
|
||||
)
|
||||
.arg(
|
||||
Arg::new("unstable-component")
|
||||
|
@ -2243,7 +2242,8 @@ Ignore formatting a file by adding an ignore comment at the top of the file:
|
|||
.help("Enable formatting YAML files")
|
||||
.value_parser(FalseyValueParser::new())
|
||||
.action(ArgAction::SetTrue)
|
||||
.help_heading(FMT_HEADING),
|
||||
.help_heading(FMT_HEADING)
|
||||
.hide(true),
|
||||
)
|
||||
})
|
||||
}
|
||||
|
@ -4374,10 +4374,7 @@ fn fmt_parse(
|
|||
let single_quote = matches.remove_one::<bool>("single-quote");
|
||||
let prose_wrap = matches.remove_one::<String>("prose-wrap");
|
||||
let no_semicolons = matches.remove_one::<bool>("no-semicolons");
|
||||
let unstable_css = matches.get_flag("unstable-css");
|
||||
let unstable_html = matches.get_flag("unstable-html");
|
||||
let unstable_component = matches.get_flag("unstable-component");
|
||||
let unstable_yaml = matches.get_flag("unstable-yaml");
|
||||
|
||||
flags.subcommand = DenoSubcommand::Fmt(FmtFlags {
|
||||
check: matches.get_flag("check"),
|
||||
|
@ -4389,10 +4386,7 @@ fn fmt_parse(
|
|||
prose_wrap,
|
||||
no_semicolons,
|
||||
watch: watch_arg_parse(matches)?,
|
||||
unstable_css,
|
||||
unstable_html,
|
||||
unstable_component,
|
||||
unstable_yaml,
|
||||
});
|
||||
Ok(())
|
||||
}
|
||||
|
@ -6272,10 +6266,7 @@ mod tests {
|
|||
single_quote: None,
|
||||
prose_wrap: None,
|
||||
no_semicolons: None,
|
||||
unstable_css: false,
|
||||
unstable_html: false,
|
||||
unstable_component: false,
|
||||
unstable_yaml: false,
|
||||
watch: Default::default(),
|
||||
}),
|
||||
..Flags::default()
|
||||
|
@ -6298,10 +6289,7 @@ mod tests {
|
|||
single_quote: None,
|
||||
prose_wrap: None,
|
||||
no_semicolons: None,
|
||||
unstable_css: false,
|
||||
unstable_html: false,
|
||||
unstable_component: false,
|
||||
unstable_yaml: false,
|
||||
watch: Default::default(),
|
||||
}),
|
||||
..Flags::default()
|
||||
|
@ -6324,10 +6312,7 @@ mod tests {
|
|||
single_quote: None,
|
||||
prose_wrap: None,
|
||||
no_semicolons: None,
|
||||
unstable_css: false,
|
||||
unstable_html: false,
|
||||
unstable_component: false,
|
||||
unstable_yaml: false,
|
||||
watch: Default::default(),
|
||||
}),
|
||||
..Flags::default()
|
||||
|
@ -6350,10 +6335,7 @@ mod tests {
|
|||
single_quote: None,
|
||||
prose_wrap: None,
|
||||
no_semicolons: None,
|
||||
unstable_css: false,
|
||||
unstable_html: false,
|
||||
unstable_component: false,
|
||||
unstable_yaml: false,
|
||||
watch: Some(Default::default()),
|
||||
}),
|
||||
..Flags::default()
|
||||
|
@ -6385,10 +6367,7 @@ mod tests {
|
|||
single_quote: None,
|
||||
prose_wrap: None,
|
||||
no_semicolons: None,
|
||||
unstable_css: true,
|
||||
unstable_html: true,
|
||||
unstable_component: true,
|
||||
unstable_yaml: true,
|
||||
watch: Some(WatchFlags {
|
||||
hmr: false,
|
||||
no_clear_screen: true,
|
||||
|
@ -6422,10 +6401,7 @@ mod tests {
|
|||
single_quote: None,
|
||||
prose_wrap: None,
|
||||
no_semicolons: None,
|
||||
unstable_css: false,
|
||||
unstable_html: false,
|
||||
unstable_component: false,
|
||||
unstable_yaml: false,
|
||||
watch: Some(Default::default()),
|
||||
}),
|
||||
..Flags::default()
|
||||
|
@ -6448,10 +6424,7 @@ mod tests {
|
|||
single_quote: None,
|
||||
prose_wrap: None,
|
||||
no_semicolons: None,
|
||||
unstable_css: false,
|
||||
unstable_html: false,
|
||||
unstable_component: false,
|
||||
unstable_yaml: false,
|
||||
watch: Default::default(),
|
||||
}),
|
||||
config_flag: ConfigFlag::Path("deno.jsonc".to_string()),
|
||||
|
@ -6482,10 +6455,7 @@ mod tests {
|
|||
single_quote: None,
|
||||
prose_wrap: None,
|
||||
no_semicolons: None,
|
||||
unstable_css: false,
|
||||
unstable_html: false,
|
||||
unstable_component: false,
|
||||
unstable_yaml: false,
|
||||
watch: Some(Default::default()),
|
||||
}),
|
||||
config_flag: ConfigFlag::Path("deno.jsonc".to_string()),
|
||||
|
@ -6521,10 +6491,7 @@ mod tests {
|
|||
single_quote: Some(true),
|
||||
prose_wrap: Some("never".to_string()),
|
||||
no_semicolons: Some(true),
|
||||
unstable_css: false,
|
||||
unstable_html: false,
|
||||
unstable_component: false,
|
||||
unstable_yaml: false,
|
||||
watch: Default::default(),
|
||||
}),
|
||||
..Flags::default()
|
||||
|
@ -6554,10 +6521,7 @@ mod tests {
|
|||
single_quote: Some(false),
|
||||
prose_wrap: None,
|
||||
no_semicolons: Some(false),
|
||||
unstable_css: false,
|
||||
unstable_html: false,
|
||||
unstable_component: false,
|
||||
unstable_yaml: false,
|
||||
watch: Default::default(),
|
||||
}),
|
||||
..Flags::default()
|
||||
|
|
|
@ -281,10 +281,7 @@ impl BenchOptions {
|
|||
|
||||
#[derive(Clone, Debug, Default, PartialEq, Eq, Hash)]
|
||||
pub struct UnstableFmtOptions {
|
||||
pub css: bool,
|
||||
pub html: bool,
|
||||
pub component: bool,
|
||||
pub yaml: bool,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
|
@ -317,10 +314,7 @@ impl FmtOptions {
|
|||
Self {
|
||||
options: resolve_fmt_options(fmt_flags, fmt_config.options),
|
||||
unstable: UnstableFmtOptions {
|
||||
css: unstable.css || fmt_flags.unstable_css,
|
||||
html: unstable.html || fmt_flags.unstable_html,
|
||||
component: unstable.component || fmt_flags.unstable_component,
|
||||
yaml: unstable.yaml || fmt_flags.unstable_yaml,
|
||||
},
|
||||
files: fmt_config.files,
|
||||
}
|
||||
|
@ -1301,10 +1295,7 @@ impl CliOptions {
|
|||
pub fn resolve_config_unstable_fmt_options(&self) -> UnstableFmtOptions {
|
||||
let workspace = self.workspace();
|
||||
UnstableFmtOptions {
|
||||
css: workspace.has_unstable("fmt-css"),
|
||||
html: workspace.has_unstable("fmt-html"),
|
||||
component: workspace.has_unstable("fmt-component"),
|
||||
yaml: workspace.has_unstable("fmt-yaml"),
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1609,10 +1600,7 @@ impl CliOptions {
|
|||
"sloppy-imports",
|
||||
"byonm",
|
||||
"bare-node-builtins",
|
||||
"fmt-css",
|
||||
"fmt-html",
|
||||
"fmt-component",
|
||||
"fmt-yaml",
|
||||
]);
|
||||
// add more unstable flags to the same vector holding granular flags
|
||||
all_valid_unstable_flags.append(&mut another_unstable_flags);
|
||||
|
|
|
@ -1385,18 +1385,9 @@ impl Inner {
|
|||
.data_for_specifier(&specifier)
|
||||
.map(|d| &d.member_dir.workspace);
|
||||
let unstable_options = UnstableFmtOptions {
|
||||
css: maybe_workspace
|
||||
.map(|w| w.has_unstable("fmt-css"))
|
||||
.unwrap_or(false),
|
||||
html: maybe_workspace
|
||||
.map(|w| w.has_unstable("fmt-html"))
|
||||
.unwrap_or(false),
|
||||
component: maybe_workspace
|
||||
.map(|w| w.has_unstable("fmt-component"))
|
||||
.unwrap_or(false),
|
||||
yaml: maybe_workspace
|
||||
.map(|w| w.has_unstable("fmt-yaml"))
|
||||
.unwrap_or(false),
|
||||
};
|
||||
let document = document.clone();
|
||||
move || {
|
||||
|
|
|
@ -285,19 +285,9 @@ fn format_markdown(
|
|||
dprint_plugin_json::format_text(&fake_filename, text, &json_config)
|
||||
}
|
||||
"css" | "scss" | "sass" | "less" => {
|
||||
if unstable_options.css {
|
||||
format_css(&fake_filename, text, fmt_options)
|
||||
} else {
|
||||
Ok(None)
|
||||
}
|
||||
}
|
||||
"html" => {
|
||||
if unstable_options.html {
|
||||
format_html(&fake_filename, text, fmt_options)
|
||||
} else {
|
||||
Ok(None)
|
||||
}
|
||||
format_css(&fake_filename, text, fmt_options)
|
||||
}
|
||||
"html" => format_html(&fake_filename, text, fmt_options),
|
||||
"svelte" | "vue" | "astro" => {
|
||||
if unstable_options.component {
|
||||
format_html(&fake_filename, text, fmt_options)
|
||||
|
@ -305,18 +295,12 @@ fn format_markdown(
|
|||
Ok(None)
|
||||
}
|
||||
}
|
||||
"yml" | "yaml" => {
|
||||
if unstable_options.yaml {
|
||||
pretty_yaml::format_text(
|
||||
text,
|
||||
&get_resolved_yaml_config(fmt_options),
|
||||
)
|
||||
.map(Some)
|
||||
.map_err(AnyError::from)
|
||||
} else {
|
||||
Ok(None)
|
||||
}
|
||||
}
|
||||
"yml" | "yaml" => pretty_yaml::format_text(
|
||||
text,
|
||||
&get_resolved_yaml_config(fmt_options),
|
||||
)
|
||||
.map(Some)
|
||||
.map_err(AnyError::from),
|
||||
_ => {
|
||||
let mut codeblock_config =
|
||||
get_resolved_typescript_config(fmt_options);
|
||||
|
@ -473,19 +457,9 @@ pub fn format_file(
|
|||
}
|
||||
"json" | "jsonc" => format_json(file_path, file_text, fmt_options),
|
||||
"css" | "scss" | "sass" | "less" => {
|
||||
if unstable_options.css {
|
||||
format_css(file_path, file_text, fmt_options)
|
||||
} else {
|
||||
Ok(None)
|
||||
}
|
||||
}
|
||||
"html" => {
|
||||
if unstable_options.html {
|
||||
format_html(file_path, file_text, fmt_options)
|
||||
} else {
|
||||
Ok(None)
|
||||
}
|
||||
format_css(file_path, file_text, fmt_options)
|
||||
}
|
||||
"html" => format_html(file_path, file_text, fmt_options),
|
||||
"svelte" | "vue" | "astro" => {
|
||||
if unstable_options.component {
|
||||
format_html(file_path, file_text, fmt_options)
|
||||
|
@ -493,18 +467,12 @@ pub fn format_file(
|
|||
Ok(None)
|
||||
}
|
||||
}
|
||||
"yml" | "yaml" => {
|
||||
if unstable_options.yaml {
|
||||
pretty_yaml::format_text(
|
||||
file_text,
|
||||
&get_resolved_yaml_config(fmt_options),
|
||||
)
|
||||
.map(Some)
|
||||
.map_err(AnyError::from)
|
||||
} else {
|
||||
Ok(None)
|
||||
}
|
||||
}
|
||||
"yml" | "yaml" => pretty_yaml::format_text(
|
||||
file_text,
|
||||
&get_resolved_yaml_config(fmt_options),
|
||||
)
|
||||
.map(Some)
|
||||
.map_err(AnyError::from),
|
||||
"ipynb" => dprint_plugin_jupyter::format_text(
|
||||
file_text,
|
||||
|file_path: &Path, file_text: String| {
|
||||
|
|
|
@ -10597,13 +10597,6 @@ fn lsp_format_markdown() {
|
|||
fn lsp_format_html() {
|
||||
let context = TestContextBuilder::new().use_temp_cwd().build();
|
||||
let temp_dir = context.temp_dir();
|
||||
temp_dir.write(
|
||||
"deno.json",
|
||||
json!({
|
||||
"unstable": ["fmt-html"],
|
||||
})
|
||||
.to_string(),
|
||||
);
|
||||
let html_file =
|
||||
source_file(temp_dir.path().join("file.html"), " <html></html>");
|
||||
let mut client = context.new_lsp_command().build();
|
||||
|
@ -10644,13 +10637,6 @@ fn lsp_format_html() {
|
|||
fn lsp_format_css() {
|
||||
let context = TestContextBuilder::new().use_temp_cwd().build();
|
||||
let temp_dir = context.temp_dir();
|
||||
temp_dir.write(
|
||||
"deno.json",
|
||||
json!({
|
||||
"unstable": ["fmt-css"],
|
||||
})
|
||||
.to_string(),
|
||||
);
|
||||
let css_file = source_file(temp_dir.path().join("file.css"), " foo {}");
|
||||
let mut client = context.new_lsp_command().build();
|
||||
client.initialize_default();
|
||||
|
@ -10690,13 +10676,6 @@ fn lsp_format_css() {
|
|||
fn lsp_format_yaml() {
|
||||
let context = TestContextBuilder::new().use_temp_cwd().build();
|
||||
let temp_dir = context.temp_dir();
|
||||
temp_dir.write(
|
||||
"deno.json",
|
||||
json!({
|
||||
"unstable": ["fmt-yaml"],
|
||||
})
|
||||
.to_string(),
|
||||
);
|
||||
let yaml_file = source_file(temp_dir.path().join("file.yaml"), " foo: 1");
|
||||
let mut client = context.new_lsp_command().build();
|
||||
client.initialize_default();
|
||||
|
|
5
tests/specs/fmt/css/__test__.jsonc
Normal file
5
tests/specs/fmt/css/__test__.jsonc
Normal file
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"tempDir": true,
|
||||
"args": "fmt",
|
||||
"output": "[WILDLINE]badly_formatted.css\nChecked 1 file\n"
|
||||
}
|
5
tests/specs/fmt/html/__test__.jsonc
Normal file
5
tests/specs/fmt/html/__test__.jsonc
Normal file
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"tempDir": true,
|
||||
"args": "fmt --unstable-html",
|
||||
"output": "[WILDLINE]badly_formatted.html\nChecked 1 file\n"
|
||||
}
|
|
@ -6,14 +6,14 @@
|
|||
"output": "Checked 1 file\n"
|
||||
},
|
||||
"flag": {
|
||||
"args": "fmt --unstable-css --unstable-component",
|
||||
"args": "fmt --unstable-component",
|
||||
"output": "[WILDLINE]badly_formatted.svelte\nChecked 1 file\n"
|
||||
},
|
||||
"config_file": {
|
||||
"steps": [{
|
||||
"args": [
|
||||
"eval",
|
||||
"Deno.writeTextFile('deno.json', '{\\n \"unstable\": [\"fmt-css\", \"fmt-component\"]\\n}\\n')"
|
||||
"Deno.writeTextFile('deno.json', '{\\n \"unstable\": [\"fmt-component\"]\\n}\\n')"
|
||||
],
|
||||
"output": "[WILDCARD]"
|
||||
}, {
|
||||
|
|
|
@ -1,25 +0,0 @@
|
|||
{
|
||||
"tempDir": true,
|
||||
"tests": {
|
||||
"nothing": {
|
||||
"args": "fmt",
|
||||
"output": "Checked 1 file\n"
|
||||
},
|
||||
"flag": {
|
||||
"args": "fmt --unstable-css",
|
||||
"output": "[WILDLINE]badly_formatted.css\nChecked 1 file\n"
|
||||
},
|
||||
"config_file": {
|
||||
"steps": [{
|
||||
"args": [
|
||||
"eval",
|
||||
"Deno.writeTextFile('deno.json', '{\\n \"unstable\": [\"fmt-css\"]\\n}\\n')"
|
||||
],
|
||||
"output": "[WILDCARD]"
|
||||
}, {
|
||||
"args": "fmt",
|
||||
"output": "[WILDLINE]badly_formatted.css\nChecked 2 files\n"
|
||||
}]
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,25 +0,0 @@
|
|||
{
|
||||
"tempDir": true,
|
||||
"tests": {
|
||||
"nothing": {
|
||||
"args": "fmt",
|
||||
"output": "Checked 1 file\n"
|
||||
},
|
||||
"flag": {
|
||||
"args": "fmt --unstable-css --unstable-html",
|
||||
"output": "[WILDLINE]badly_formatted.html\nChecked 1 file\n"
|
||||
},
|
||||
"config_file": {
|
||||
"steps": [{
|
||||
"args": [
|
||||
"eval",
|
||||
"Deno.writeTextFile('deno.json', '{\\n \"unstable\": [\"fmt-css\", \"fmt-html\"]\\n}\\n')"
|
||||
],
|
||||
"output": "[WILDCARD]"
|
||||
}, {
|
||||
"args": "fmt",
|
||||
"output": "[WILDLINE]badly_formatted.html\nChecked 2 files\n"
|
||||
}]
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,25 +0,0 @@
|
|||
{
|
||||
"tempDir": true,
|
||||
"tests": {
|
||||
"nothing": {
|
||||
"args": "fmt",
|
||||
"output": "Checked 1 file\n"
|
||||
},
|
||||
"flag": {
|
||||
"args": "fmt --unstable-yaml",
|
||||
"output": "[WILDLINE]badly_formatted.yml\nChecked 1 file\n"
|
||||
},
|
||||
"config_file": {
|
||||
"steps": [{
|
||||
"args": [
|
||||
"eval",
|
||||
"Deno.writeTextFile('deno.json', '{\\n \"unstable\": [\"fmt-yaml\"]\\n}\\n')"
|
||||
],
|
||||
"output": "[WILDCARD]"
|
||||
}, {
|
||||
"args": "fmt",
|
||||
"output": "[WILDLINE]badly_formatted.yml\nChecked 2 files\n"
|
||||
}]
|
||||
}
|
||||
}
|
||||
}
|
5
tests/specs/fmt/yaml/__test__.jsonc
Normal file
5
tests/specs/fmt/yaml/__test__.jsonc
Normal file
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"tempDir": true,
|
||||
"args": "fmt",
|
||||
"output": "[WILDLINE]badly_formatted.yml\nChecked 1 file\n"
|
||||
}
|
Loading…
Reference in a new issue