Skip to content

Commit 0888d13

Browse files
authored
Merge pull request #807 from myzhan/main
emmylua_doc_cli: support include patterns
2 parents 67c4e5c + da2b8d6 commit 0888d13

File tree

4 files changed

+52
-24
lines changed

4 files changed

+52
-24
lines changed

crates/emmylua_doc_cli/README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,9 @@ Arguments:
109109

110110
Options:
111111
-c, --config <CONFIG> Configuration file paths. If not provided, both ".emmyrc.json" and ".luarc.json" will be searched in the workspace directory
112-
--ignore <IGNORE> Comma separated list of ignore patterns. Patterns must follow glob syntax
112+
--include <INCLUDE> Comma separated list of include patterns. Patterns must follow glob syntax. It will override the default include patterns.
113+
--ignore <EXCLUDE> Comma separated list of exclude patterns. Patterns must follow glob syntax(deprecated, use --exclude instead)
114+
--exclude <EXCLUDE> Comma separated list of exclude patterns. Patterns must follow glob syntax. Exclude patterns take precedence over include patterns
113115
-f, --output-format <OUTPUT_FORMAT> Specify output format [default: markdown] [possible values: json, markdown]
114116
-o, --output <OUTPUT> Specify output destination (can be stdout when output_format is json) [default: ./output]
115117
--override-template <OVERRIDE_TEMPLATE> The path of the override template

crates/emmylua_doc_cli/src/cmd_args.rs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,16 @@ pub struct CmdArgs {
1818
#[arg(num_args = 1..)]
1919
pub workspace: Vec<PathBuf>,
2020

21-
/// Comma separated list of ignore patterns.
21+
/// Comma separated list of exclude patterns
2222
/// Patterns must follow glob syntax
23-
#[arg(long, value_delimiter = ',')]
24-
pub ignore: Option<Vec<String>>,
23+
/// Exclude patterns take precedence over include patterns
24+
#[arg(long = "exclude", alias = "ignore", value_delimiter = ',')]
25+
pub exclude_pattern: Option<Vec<String>>,
26+
27+
/// Comma separated list of include patterns
28+
/// Patterns must follow glob syntax
29+
#[arg(long = "include", value_delimiter = ',')]
30+
pub include_pattern: Option<Vec<String>>,
2531

2632
/// Specify output format
2733
#[arg(

crates/emmylua_doc_cli/src/init.rs

Lines changed: 38 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,8 @@ pub fn load_workspace(
6666
main_path: PathBuf,
6767
mut workspace_folders: Vec<PathBuf>,
6868
config_paths: Option<Vec<PathBuf>>,
69-
ignore: Option<Vec<String>>,
69+
exclude_pattern: Option<Vec<String>>,
70+
include_pattern: Option<Vec<String>>,
7071
) -> Option<EmmyLuaAnalysis> {
7172
let (config_files, config_root): (Vec<PathBuf>, PathBuf) =
7273
if let Some(config_paths) = config_paths {
@@ -111,7 +112,12 @@ pub fn load_workspace(
111112
analysis.update_config(Arc::new(emmyrc));
112113
analysis.init_std_lib(None);
113114

114-
let file_infos = collect_files(&workspace_folders, &analysis.emmyrc, ignore);
115+
let file_infos = collect_files(
116+
&workspace_folders,
117+
&analysis.emmyrc,
118+
exclude_pattern,
119+
include_pattern,
120+
);
115121
let files = file_infos
116122
.into_iter()
117123
.filter_map(|file| {
@@ -140,10 +146,12 @@ pub fn load_workspace(
140146
pub fn collect_files(
141147
workspaces: &Vec<PathBuf>,
142148
emmyrc: &Emmyrc,
143-
ignore: Option<Vec<String>>,
149+
exclude_pattern: Option<Vec<String>>,
150+
include_pattern: Option<Vec<String>>,
144151
) -> Vec<LuaFileInfo> {
145152
let mut files = Vec::new();
146-
let (match_pattern, exclude, exclude_dir) = calculate_include_and_exclude(emmyrc, ignore);
153+
let (match_pattern, exclude, exclude_dir) =
154+
calculate_include_and_exclude(emmyrc, exclude_pattern, include_pattern);
147155

148156
let encoding = &emmyrc.workspace.encoding;
149157

@@ -167,21 +175,32 @@ pub fn collect_files(
167175
/// File patterns for workspace scanning: (include_patterns, exclude_patterns, exclude_dirs)
168176
type FilePatterns = (Vec<String>, Vec<String>, Vec<PathBuf>);
169177

170-
pub fn calculate_include_and_exclude(emmyrc: &Emmyrc, ignore: Option<Vec<String>>) -> FilePatterns {
171-
let mut include = vec!["**/*.lua".to_string(), "**/.editorconfig".to_string()];
178+
pub fn calculate_include_and_exclude(
179+
emmyrc: &Emmyrc,
180+
exclude_pattern: Option<Vec<String>>,
181+
include_pattern: Option<Vec<String>>,
182+
) -> FilePatterns {
183+
let mut include = Vec::new();
172184
let mut exclude = Vec::new();
173185
let mut exclude_dirs = Vec::new();
174186

175-
for extension in &emmyrc.runtime.extensions {
176-
if extension.starts_with(".") {
177-
log::info!("Adding extension: **/*{}", extension);
178-
include.push(format!("**/*{}", extension));
179-
} else if extension.starts_with("*.") {
180-
log::info!("Adding extension: **/{}", extension);
181-
include.push(format!("**/{}", extension));
182-
} else {
183-
log::info!("Adding extension: {}", extension);
184-
include.push(extension.clone());
187+
if let Some(p) = include_pattern {
188+
include.extend(p);
189+
} else {
190+
include.push("**/*.lua".to_string());
191+
include.push("**/.editorconfig".to_string());
192+
193+
for extension in &emmyrc.runtime.extensions {
194+
if extension.starts_with(".") {
195+
log::info!("Adding extension: **/*{}", extension);
196+
include.push(format!("**/*{}", extension));
197+
} else if extension.starts_with("*.") {
198+
log::info!("Adding extension: **/{}", extension);
199+
include.push(format!("**/{}", extension));
200+
} else {
201+
log::info!("Adding extension: {}", extension);
202+
include.push(extension.clone());
203+
}
185204
}
186205
}
187206

@@ -190,9 +209,9 @@ pub fn calculate_include_and_exclude(emmyrc: &Emmyrc, ignore: Option<Vec<String>
190209
exclude.push(ignore_glob.clone());
191210
}
192211

193-
if let Some(ignore) = ignore {
194-
log::info!("Adding ignores from \"--ignore\": {:?}", ignore);
195-
exclude.extend(ignore);
212+
if let Some(p) = exclude_pattern {
213+
log::info!("Adding excludes from \"--exclude(or --ignore)\": {:?}", p);
214+
exclude.extend(p);
196215
}
197216

198217
for dir in &emmyrc.workspace.ignore_dir {

crates/emmylua_doc_cli/src/lib.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,8 @@ pub fn run_doc_cli(mut cmd_args: CmdArgs) -> Result<(), Box<dyn std::error::Erro
4444
main_path.clone(),
4545
workspaces.clone(),
4646
cmd_args.config,
47-
cmd_args.ignore,
47+
cmd_args.exclude_pattern,
48+
cmd_args.include_pattern,
4849
) {
4950
Some(analysis) => analysis,
5051
None => {

0 commit comments

Comments
 (0)