Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions .changeset/css-parse-modules-flag.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
---
"@biomejs/biome": minor
---

Added `--css-parse-css-modules` CLI flag to control whether CSS Modules syntax is enabled.

You can now enable or disable CSS Modules parsing directly from the command line:

```shell
biome check --css-parse-css-modules=true file.module.css
biome format --css-parse-css-modules=true file.module.css
biome lint --css-parse-css-modules=true file.module.css
biome ci --css-parse-css-modules=true file.module.css
```
14 changes: 14 additions & 0 deletions .changeset/css-parse-tailwind-flag.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
---
"@biomejs/biome": minor
---

Added `--css-parse-tailwind-directives` CLI flag to control whether Tailwind CSS 4.0 directives and functions are enabled.

You can now enable or disable Tailwind CSS 4.0 directive parsing directly from the command line:

```shell
biome check --css-parse-tailwind-directives=true file.css
biome format --css-parse-tailwind-directives=true file.css
biome lint --css-parse-tailwind-directives=true file.css
biome ci --css-parse-tailwind-directives=true file.css
```
14 changes: 14 additions & 0 deletions .changeset/json-parse-comments-flag.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
---
"@biomejs/biome": minor
---

Added `--json-parse-allow-comments` CLI flag to control whether comments are allowed in JSON files.

You can now enable or disable comment parsing in JSON files directly from the command line:

```shell
biome check --json-parse-allow-comments=true file.json
biome format --json-parse-allow-comments=true file.json
biome lint --json-parse-allow-comments=true file.json
biome ci --json-parse-allow-comments=true file.json
```
14 changes: 14 additions & 0 deletions .changeset/json-parse-trailing-commas-flag.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
---
"@biomejs/biome": minor
---

Added `--json-parse-allow-trailing-commas` CLI flag to control whether trailing commas are allowed in JSON files.

You can now enable or disable trailing comma parsing in JSON files directly from the command line:

```shell
biome check --json-parse-allow-trailing-commas=true file.json
biome format --json-parse-allow-trailing-commas=true file.json
biome lint --json-parse-allow-trailing-commas=true file.json
biome ci --json-parse-allow-trailing-commas=true file.json
```
20 changes: 19 additions & 1 deletion crates/biome_cli/src/commands/check.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@ use crate::commands::{CommandRunner, get_files_to_process_with_cli_options};
use crate::{CliDiagnostic, Execution, TraversalMode};
use biome_configuration::analyzer::LinterEnabled;
use biome_configuration::analyzer::assist::{AssistConfiguration, AssistEnabled};
use biome_configuration::formatter::FormatterEnabled;
use biome_configuration::css::CssParserConfiguration;
use biome_configuration::formatter::{FormatWithErrorsEnabled, FormatterEnabled};
use biome_configuration::json::JsonParserConfiguration;
use biome_configuration::{Configuration, FormatterConfiguration, LinterConfiguration};
use biome_console::Console;
use biome_deserialize::Merge;
Expand All @@ -26,6 +28,9 @@ pub(crate) struct CheckCommandPayload {
pub(crate) staged: bool,
pub(crate) changed: bool,
pub(crate) since: Option<String>,
pub(crate) format_with_errors: Option<FormatWithErrorsEnabled>,
pub(crate) json_parser: Option<JsonParserConfiguration>,
pub(crate) css_parser: Option<CssParserConfiguration>,
}

impl LoadEditorConfig for CheckCommandPayload {
Expand Down Expand Up @@ -61,6 +66,9 @@ impl CommandRunner for CheckCommandPayload {
if self.formatter_enabled.is_some() {
formatter.enabled = self.formatter_enabled;
}
if self.format_with_errors.is_some() {
formatter.format_with_errors = self.format_with_errors;
}

let linter = configuration
.linter
Expand All @@ -78,6 +86,16 @@ impl CommandRunner for CheckCommandPayload {
assist.enabled = self.assist_enabled;
}

let css = configuration.css.get_or_insert_with(Default::default);
if self.css_parser.is_some() {
css.parser.merge_with(self.css_parser.clone());
}

let json = configuration.json.get_or_insert_with(Default::default);
if self.json_parser.is_some() {
json.parser.merge_with(self.json_parser.clone())
}

if let Some(mut conf) = self.configuration.clone() {
if let Some(linter) = conf.linter.as_mut() {
// Don't overwrite rules from the CLI configuration.
Expand Down
26 changes: 24 additions & 2 deletions crates/biome_cli/src/commands/ci.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,12 @@ use crate::commands::{CommandRunner, LoadEditorConfig};
use crate::{CliDiagnostic, Execution};
use biome_configuration::analyzer::LinterEnabled;
use biome_configuration::analyzer::assist::{AssistConfiguration, AssistEnabled};
use biome_configuration::formatter::FormatterEnabled;
use biome_configuration::{Configuration, FormatterConfiguration, LinterConfiguration};
use biome_configuration::css::CssParserConfiguration;
use biome_configuration::formatter::{FormatWithErrorsEnabled, FormatterEnabled};
use biome_configuration::json::JsonParserConfiguration;
use biome_configuration::{
Configuration, CssConfiguration, FormatterConfiguration, JsonConfiguration, LinterConfiguration,
};
use biome_console::Console;
use biome_deserialize::Merge;
use biome_fs::FileSystem;
Expand All @@ -22,6 +26,9 @@ pub(crate) struct CiCommandPayload {
pub(crate) configuration: Option<Configuration>,
pub(crate) changed: bool,
pub(crate) since: Option<String>,
pub(crate) format_with_errors: Option<FormatWithErrorsEnabled>,
pub(crate) json_parser: Option<JsonParserConfiguration>,
pub(crate) css_parser: Option<CssParserConfiguration>,
}

impl LoadEditorConfig for CiCommandPayload {
Expand Down Expand Up @@ -56,6 +63,7 @@ impl CommandRunner for CiCommandPayload {

if self.formatter_enabled.is_some() {
formatter.enabled = self.formatter_enabled;
formatter.format_with_errors = self.format_with_errors;
}

let linter = configuration
Expand All @@ -66,6 +74,20 @@ impl CommandRunner for CiCommandPayload {
linter.enabled = self.linter_enabled;
}

let json = configuration
.json
.get_or_insert_with(JsonConfiguration::default);
if self.json_parser.is_some() {
json.parser.clone_from(&self.json_parser)
}

let css = configuration
.css
.get_or_insert_with(CssConfiguration::default);
if self.css_parser.is_some() {
css.parser.clone_from(&self.css_parser);
}

let assist = configuration
.assist
.get_or_insert_with(AssistConfiguration::default);
Expand Down
19 changes: 15 additions & 4 deletions crates/biome_cli/src/commands/format.rs
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
use crate::cli_options::CliOptions;
use crate::commands::{CommandRunner, LoadEditorConfig, get_files_to_process_with_cli_options};
use crate::{CliDiagnostic, Execution, TraversalMode};
use biome_configuration::css::CssFormatterConfiguration;
use biome_configuration::css::{CssFormatterConfiguration, CssParserConfiguration};
use biome_configuration::graphql::GraphqlFormatterConfiguration;
use biome_configuration::html::HtmlFormatterConfiguration;
use biome_configuration::javascript::JsFormatterConfiguration;
use biome_configuration::json::JsonFormatterConfiguration;
use biome_configuration::json::{JsonFormatterConfiguration, JsonParserConfiguration};
use biome_configuration::vcs::VcsConfiguration;
use biome_configuration::{Configuration, FilesConfiguration, FormatterConfiguration};
use biome_console::Console;
Expand All @@ -31,6 +31,8 @@ pub(crate) struct FormatCommandPayload {
pub(crate) staged: bool,
pub(crate) changed: bool,
pub(crate) since: Option<String>,
pub(crate) json_parser: Option<JsonParserConfiguration>,
pub(crate) css_parser: Option<CssParserConfiguration>,
}

impl LoadEditorConfig for FormatCommandPayload {
Expand Down Expand Up @@ -73,10 +75,15 @@ impl CommandRunner for FormatCommandPayload {

formatter.enabled = Some(true.into());
}
let css = configuration.css.get_or_insert_with(Default::default);
if self.css_formatter.is_some() {
let css = configuration.css.get_or_insert_with(Default::default);
css.formatter.merge_with(self.css_formatter.clone());
}

if self.css_parser.is_some() {
css.parser.merge_with(self.css_parser.clone());
}

if self.graphql_formatter.is_some() {
let graphql = configuration.graphql.get_or_insert_with(Default::default);
graphql.formatter.merge_with(self.graphql_formatter.clone());
Expand All @@ -94,10 +101,14 @@ impl CommandRunner for FormatCommandPayload {
.formatter
.merge_with(self.javascript_formatter.clone());
}
let json = configuration.json.get_or_insert_with(Default::default);

if self.json_formatter.is_some() {
let json = configuration.json.get_or_insert_with(Default::default);
json.formatter.merge_with(self.json_formatter.clone());
}
if self.json_parser.is_some() {
json.parser.merge_with(self.json_parser.clone())
}

configuration
.files
Expand Down
16 changes: 12 additions & 4 deletions crates/biome_cli/src/commands/lint.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@ use crate::cli_options::CliOptions;
use crate::commands::{CommandRunner, get_files_to_process_with_cli_options};
use crate::{CliDiagnostic, Execution, TraversalMode};
use biome_configuration::analyzer::AnalyzerSelector;
use biome_configuration::css::CssLinterConfiguration;
use biome_configuration::css::{CssLinterConfiguration, CssParserConfiguration};
use biome_configuration::graphql::GraphqlLinterConfiguration;
use biome_configuration::javascript::JsLinterConfiguration;
use biome_configuration::json::JsonLinterConfiguration;
use biome_configuration::json::{JsonLinterConfiguration, JsonParserConfiguration};
use biome_configuration::vcs::VcsConfiguration;
use biome_configuration::{Configuration, FilesConfiguration, LinterConfiguration};
use biome_console::Console;
Expand Down Expand Up @@ -36,6 +36,8 @@ pub(crate) struct LintCommandPayload {
pub(crate) json_linter: Option<JsonLinterConfiguration>,
pub(crate) css_linter: Option<CssLinterConfiguration>,
pub(crate) graphql_linter: Option<GraphqlLinterConfiguration>,
pub(crate) json_parser: Option<JsonParserConfiguration>,
pub(crate) css_parser: Option<CssParserConfiguration>,
}

impl CommandRunner for LintCommandPayload {
Expand Down Expand Up @@ -71,10 +73,13 @@ impl CommandRunner for LintCommandPayload {
..Default::default()
});

let css = fs_configuration.css.get_or_insert_with(Default::default);
if self.css_linter.is_some() {
let css = fs_configuration.css.get_or_insert_with(Default::default);
css.linter.merge_with(self.css_linter.clone());
}
if self.css_parser.is_some() {
css.parser.merge_with(self.css_parser.clone());
}

if self.graphql_linter.is_some() {
let graphql = fs_configuration
Expand All @@ -88,10 +93,13 @@ impl CommandRunner for LintCommandPayload {
.get_or_insert_with(Default::default);
javascript.linter.merge_with(self.javascript_linter.clone());
}
let json = fs_configuration.json.get_or_insert_with(Default::default);
if self.json_linter.is_some() {
let json = fs_configuration.json.get_or_insert_with(Default::default);
json.linter.merge_with(self.json_linter.clone());
}
if self.json_parser.is_some() {
json.parser.merge_with(self.json_parser.clone());
}

Ok(fs_configuration)
}
Expand Down
64 changes: 54 additions & 10 deletions crates/biome_cli/src/commands/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,21 +9,31 @@ use crate::{
};
use biome_configuration::analyzer::assist::AssistEnabled;
use biome_configuration::analyzer::{AnalyzerSelector, LinterEnabled};
use biome_configuration::css::{CssFormatterConfiguration, CssLinterConfiguration};
use biome_configuration::formatter::FormatterEnabled;
use biome_configuration::css::{
CssFormatterConfiguration, CssLinterConfiguration, CssParserConfiguration,
};
use biome_configuration::formatter::{FormatWithErrorsEnabled, FormatterEnabled};
use biome_configuration::graphql::{GraphqlFormatterConfiguration, GraphqlLinterConfiguration};
use biome_configuration::html::{HtmlFormatterConfiguration, html_formatter_configuration};
use biome_configuration::javascript::{JsFormatterConfiguration, JsLinterConfiguration};
use biome_configuration::json::{JsonFormatterConfiguration, JsonLinterConfiguration};
use biome_configuration::json::{
JsonFormatterConfiguration, JsonLinterConfiguration, JsonParserConfiguration,
};
use biome_configuration::vcs::VcsConfiguration;
use biome_configuration::{BiomeDiagnostic, Configuration};
use biome_configuration::{
FilesConfiguration, FormatterConfiguration, LinterConfiguration, configuration,
css::css_formatter_configuration, css::css_linter_configuration, files_configuration,
formatter_configuration, graphql::graphql_formatter_configuration,
graphql::graphql_linter_configuration, javascript::js_formatter_configuration,
javascript::js_linter_configuration, json::json_formatter_configuration,
json::json_linter_configuration, linter_configuration, vcs::vcs_configuration,
css::{css_formatter_configuration, css_linter_configuration, css_parser_configuration},
files_configuration, formatter_configuration,
graphql::graphql_formatter_configuration,
graphql::graphql_linter_configuration,
javascript::js_formatter_configuration,
javascript::js_linter_configuration,
json::json_formatter_configuration,
json::json_linter_configuration,
json::json_parser_configuration,
linter_configuration,
vcs::vcs_configuration,
};
use biome_console::{Console, ConsoleExt, markup};
use biome_deserialize::Merge;
Expand Down Expand Up @@ -146,6 +156,17 @@ pub enum BiomeCommand {
#[bpaf(long("enforce-assist"), argument("true|false"), fallback(true))]
enforce_assist: bool,

/// Whether formatting should be allowed to proceed if a given file
/// has syntax errors
#[bpaf(long("format-with-errors"), argument("true|false"))]
format_with_errors: Option<FormatWithErrorsEnabled>,

#[bpaf(external(json_parser_configuration), optional, hide_usage)]
json_parser: Option<JsonParserConfiguration>,

#[bpaf(external(css_parser_configuration), optional, hide_usage, hide)]
css_parser: Option<CssParserConfiguration>,

#[bpaf(external(configuration), hide_usage, optional)]
configuration: Option<Configuration>,
#[bpaf(external, hide_usage)]
Expand Down Expand Up @@ -209,6 +230,12 @@ pub enum BiomeCommand {
#[bpaf(long("reason"), argument("STRING"))]
suppression_reason: Option<String>,

#[bpaf(external(json_parser_configuration), optional, hide_usage)]
json_parser: Option<JsonParserConfiguration>,

#[bpaf(external(css_parser_configuration), optional, hide_usage, hide)]
css_parser: Option<CssParserConfiguration>,

#[bpaf(external(linter_configuration), hide_usage, optional)]
linter_configuration: Option<LinterConfiguration>,

Expand Down Expand Up @@ -294,12 +321,18 @@ pub enum BiomeCommand {
#[bpaf(external(json_formatter_configuration), optional, hide_usage)]
json_formatter: Option<JsonFormatterConfiguration>,

#[bpaf(external(css_formatter_configuration), optional, hide_usage, hide)]
css_formatter: Option<CssFormatterConfiguration>,
#[bpaf(external(json_parser_configuration), optional, hide_usage)]
json_parser: Option<JsonParserConfiguration>,

#[bpaf(external(css_parser_configuration), optional, hide_usage, hide)]
css_parser: Option<CssParserConfiguration>,

#[bpaf(external(graphql_formatter_configuration), optional, hide_usage, hide)]
graphql_formatter: Option<GraphqlFormatterConfiguration>,

#[bpaf(external(css_formatter_configuration), optional, hide_usage, hide)]
css_formatter: Option<CssFormatterConfiguration>,

#[bpaf(external(html_formatter_configuration), optional, hide_usage, hide)]
html_formatter: Option<HtmlFormatterConfiguration>,

Expand Down Expand Up @@ -365,6 +398,17 @@ pub enum BiomeCommand {
#[bpaf(long("assist-enabled"), argument("true|false"), optional)]
assist_enabled: Option<AssistEnabled>,

/// Whether formatting should be allowed to proceed if a given file
/// has syntax errors
#[bpaf(long("format-with-errors"), argument("true|false"))]
format_with_errors: Option<FormatWithErrorsEnabled>,

#[bpaf(external(json_parser_configuration), optional, hide_usage)]
json_parser: Option<JsonParserConfiguration>,

#[bpaf(external(css_parser_configuration), optional, hide_usage, hide)]
css_parser: Option<CssParserConfiguration>,

/// Allows enforcing assist, and make the CLI fail if some actions aren't applied. Defaults to `true`.
#[bpaf(long("enforce-assist"), argument("true|false"), fallback(true))]
enforce_assist: bool,
Expand Down
Loading
Loading