diff --git a/etc/lint-config/ignore.yaml b/etc/lint-config/ignore.yaml new file mode 100644 index 00000000000..108192b1843 --- /dev/null +++ b/etc/lint-config/ignore.yaml @@ -0,0 +1,26 @@ +files: [ + "KeysWithPlonkVerifier.sol", + "TokenInit.sol", + ".tslintrc.js", + ".prettierrc.js" +] +dirs: [ + "target", + "node_modules", + "volumes", + "build", + "dist", + ".git", + "generated", + "grafonnet-lib", + "prettier-config", + "lint-config", + "cache", + "artifacts", + "typechain", + "binaryen", + "system-contracts", + "artifacts-zk", + "cache-zk", + "contracts/" +] diff --git a/zk_toolbox/Cargo.lock b/zk_toolbox/Cargo.lock index efc0e56ac94..6fc03e6c483 100644 --- a/zk_toolbox/Cargo.lock +++ b/zk_toolbox/Cargo.lock @@ -6305,8 +6305,10 @@ dependencies = [ "human-panic", "serde", "serde_json", + "serde_yaml", "strum", "tokio", + "types", "url", "xshell", ] diff --git a/zk_toolbox/crates/zk_supervisor/Cargo.toml b/zk_toolbox/crates/zk_supervisor/Cargo.toml index e24c88f3ec2..f562aa05776 100644 --- a/zk_toolbox/crates/zk_supervisor/Cargo.toml +++ b/zk_toolbox/crates/zk_supervisor/Cargo.toml @@ -23,4 +23,6 @@ xshell.workspace = true serde.workspace = true clap-markdown.workspace = true futures.workspace = true +types.workspace = true +serde_yaml.workspace = true serde_json.workspace = true diff --git a/zk_toolbox/crates/zk_supervisor/src/commands/fmt.rs b/zk_toolbox/crates/zk_supervisor/src/commands/fmt.rs index 5ee0c4efb34..fc55ed2c1f6 100644 --- a/zk_toolbox/crates/zk_supervisor/src/commands/fmt.rs +++ b/zk_toolbox/crates/zk_supervisor/src/commands/fmt.rs @@ -18,6 +18,7 @@ async fn prettier(shell: Shell, target: Target, check: bool) -> anyhow::Result<( let files = get_unignored_files(&shell, &target)?; if files.is_empty() { + logger::info(format!("No files for {target} found")); return Ok(()); } diff --git a/zk_toolbox/crates/zk_supervisor/src/commands/lint_utils.rs b/zk_toolbox/crates/zk_supervisor/src/commands/lint_utils.rs index 6d7bef6eb45..a7236dc04fb 100644 --- a/zk_toolbox/crates/zk_supervisor/src/commands/lint_utils.rs +++ b/zk_toolbox/crates/zk_supervisor/src/commands/lint_utils.rs @@ -1,35 +1,9 @@ use clap::ValueEnum; +use serde::{Deserialize, Serialize}; use strum::EnumIter; use xshell::{cmd, Shell}; -const IGNORED_DIRS: [&str; 18] = [ - "target", - "node_modules", - "volumes", - "build", - "dist", - ".git", - "generated", - "grafonnet-lib", - "prettier-config", - "lint-config", - "cache", - "artifacts", - "typechain", - "binaryen", - "system-contracts", - "artifacts-zk", - "cache-zk", - // Ignore directories with OZ and forge submodules. - "contracts/l1-contracts/lib", -]; - -const IGNORED_FILES: [&str; 4] = [ - "KeysWithPlonkVerifier.sol", - "TokenInit.sol", - ".tslintrc.js", - ".prettierrc.js", -]; +const IGNORE_FILE: &str = "etc/lint-config/ignore.yaml"; #[derive(Debug, ValueEnum, EnumIter, strum::Display, PartialEq, Eq, Clone, Copy)] #[strum(serialize_all = "lowercase")] @@ -42,14 +16,21 @@ pub enum Target { Contracts, } +#[derive(Deserialize, Serialize, Debug)] +struct IgnoredData { + files: Vec, + dirs: Vec, +} + pub fn get_unignored_files(shell: &Shell, target: &Target) -> anyhow::Result> { let mut files = Vec::new(); + let ignored_files: IgnoredData = serde_yaml::from_str(&shell.read_file(IGNORE_FILE)?)?; let output = cmd!(shell, "git ls-files --recurse-submodules").read()?; for line in output.lines() { let path = line.to_string(); - if !IGNORED_DIRS.iter().any(|dir| path.contains(dir)) - && !IGNORED_FILES.contains(&path.as_str()) + if !ignored_files.dirs.iter().any(|dir| path.contains(dir)) + && !ignored_files.files.contains(&path) && path.ends_with(&format!(".{}", target)) { files.push(path);