diff --git a/packages/cargo-pgml-components/Cargo.lock b/packages/cargo-pgml-components/Cargo.lock index 11d3781cb..08eea0796 100644 --- a/packages/cargo-pgml-components/Cargo.lock +++ b/packages/cargo-pgml-components/Cargo.lock @@ -126,7 +126,7 @@ dependencies = [ [[package]] name = "cargo-pgml-components" -version = "0.1.22" +version = "0.1.23" dependencies = [ "anyhow", "assert_cmd", diff --git a/packages/cargo-pgml-components/Cargo.toml b/packages/cargo-pgml-components/Cargo.toml index 491af4576..0b71f80cc 100644 --- a/packages/cargo-pgml-components/Cargo.toml +++ b/packages/cargo-pgml-components/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "cargo-pgml-components" -version = "0.1.22" +version = "0.1.23" edition = "2021" authors = ["PostgresML "] license = "MIT" diff --git a/packages/cargo-pgml-components/src/frontend/tools.rs b/packages/cargo-pgml-components/src/frontend/tools.rs index 1d78a11c3..69d3731ca 100644 --- a/packages/cargo-pgml-components/src/frontend/tools.rs +++ b/packages/cargo-pgml-components/src/frontend/tools.rs @@ -11,7 +11,7 @@ use std::time::Duration; use notify_debouncer_full::{new_debouncer, notify::*, DebounceEventResult}; /// Required tools. -static TOOLS: &[&str] = &["sass", "rollup"]; +static TOOLS: &[&str] = &["sass", "rollup", "prettier"]; static ROLLUP_PLUGINS: &[&str] = &["@rollup/plugin-terser", "@rollup/plugin-node-resolve"]; static NVM_EXEC: &'static str = "/tmp/pgml-components-nvm.sh"; static NVM_SOURCE: &'static str = "https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh"; @@ -182,6 +182,34 @@ pub fn watch() { std::thread::sleep(std::time::Duration::MAX); } +pub fn lint(check: bool) { + let mut cmd = Command::new("prettier"); + if check { + cmd.arg("--check"); + } else { + cmd.arg("--write"); + } + + cmd.arg("src/**/*.js"); + + print("linting..."); + + let result = execute_with_nvm(&mut cmd); + + if let Err(err) = result { + if check { + error("diff detected"); + } else { + error!("error"); + } + + error!("{}", err); + exit(1); + } + + info("ok"); +} + fn rebuild() { unwrap_or_exit!(execute_command( Command::new("cargo").arg("pgml-components").arg("bundle") diff --git a/packages/cargo-pgml-components/src/main.rs b/packages/cargo-pgml-components/src/main.rs index 4c7c33aea..65ae67015 100644 --- a/packages/cargo-pgml-components/src/main.rs +++ b/packages/cargo-pgml-components/src/main.rs @@ -76,8 +76,14 @@ enum Commands { #[command(subcommand)] LocalDev(LocalDevCommands), - /// Watch for local changes, + /// Watch for local changes Watch, + + /// Lint your code + Lint { + #[arg(long, default_value = "false")] + check: bool, + }, } #[derive(Subcommand, Debug)] @@ -119,6 +125,9 @@ fn main() { Commands::Watch => { frontend::tools::watch(); } + Commands::Lint { check } => { + frontend::tools::lint(check); + } } } }