From 90c66470f9d87fd61a9d80b6f29e53e85a0a340e Mon Sep 17 00:00:00 2001 From: Josh Mcguigan Date: Sat, 21 Mar 2020 08:04:28 -0700 Subject: gen_assists_docs skip hidden files --- xtask/src/codegen/gen_assists_docs.rs | 10 +++------- xtask/src/lib.rs | 16 ++++++++++++++++ 2 files changed, 19 insertions(+), 7 deletions(-) (limited to 'xtask/src') diff --git a/xtask/src/codegen/gen_assists_docs.rs b/xtask/src/codegen/gen_assists_docs.rs index 6da5ca89e..31d606535 100644 --- a/xtask/src/codegen/gen_assists_docs.rs +++ b/xtask/src/codegen/gen_assists_docs.rs @@ -4,7 +4,7 @@ use std::{fs, path::Path}; use crate::{ codegen::{self, extract_comment_blocks_with_empty_lines, Mode}, - project_root, Result, + project_root, rust_files, Result, }; pub fn generate_assists_docs(mode: Mode) -> Result<()> { @@ -46,12 +46,8 @@ fn reveal_hash_comments(text: &str) -> String { fn collect_assists() -> Result> { let mut res = Vec::new(); - for entry in fs::read_dir(project_root().join(codegen::ASSISTS_DIR))? { - let entry = entry?; - let path = entry.path(); - if path.is_file() { - collect_file(&mut res, path.as_path())?; - } + for path in rust_files(&project_root().join(codegen::ASSISTS_DIR)) { + collect_file(&mut res, path.as_path())?; } res.sort_by(|lhs, rhs| lhs.id.cmp(&rhs.id)); return Ok(res); diff --git a/xtask/src/lib.rs b/xtask/src/lib.rs index e1472e85d..4f01f84fb 100644 --- a/xtask/src/lib.rs +++ b/xtask/src/lib.rs @@ -17,6 +17,7 @@ use std::{ path::{Path, PathBuf}, process::{Command, Stdio}, }; +use walkdir::{DirEntry, WalkDir}; use crate::{ codegen::Mode, @@ -37,6 +38,21 @@ pub fn project_root() -> PathBuf { .to_path_buf() } +pub fn rust_files(path: &Path) -> impl Iterator { + let iter = WalkDir::new(path); + return iter + .into_iter() + .filter_entry(|e| !is_hidden(e)) + .map(|e| e.unwrap()) + .filter(|e| !e.file_type().is_dir()) + .map(|e| e.into_path()) + .filter(|path| path.extension().map(|it| it == "rs").unwrap_or(false)); + + fn is_hidden(entry: &DirEntry) -> bool { + entry.file_name().to_str().map(|s| s.starts_with('.')).unwrap_or(false) + } +} + pub fn run_rustfmt(mode: Mode) -> Result<()> { let _dir = pushd(project_root()); ensure_rustfmt()?; -- cgit v1.2.3