build_tools.tui_common.cli_utils
Shared CLI utilities for build tools.
This module provides common functionality used across multiple CLI tools, including tab completion, file discovery, and corpus database integration.
These utilities were extracted from the syllable extractor CLIs to eliminate duplication and ensure consistent behavior across tools.
Attributes
Functions
|
Execute corpus_db operation with safe error handling. |
|
Tab completion function for file paths. |
Configure readline for tab completion with file paths. |
|
|
Get user input with tab completion enabled. |
|
Discover text files in a directory matching the specified pattern. |
Module Contents
- build_tools.tui_common.cli_utils.READLINE_AVAILABLE = True
- build_tools.tui_common.cli_utils.CORPUS_DB_AVAILABLE = True
- build_tools.tui_common.cli_utils.record_corpus_db_safe(operation, func, quiet=False)[source]
Execute corpus_db operation with safe error handling.
If corpus_db recording fails, logs warning to stderr but allows extraction to continue. Ensures corpus_db is purely observational.
- Parameters:
operation (str) – Description of operation (e.g., “start run”)
func (collections.abc.Callable[[], Any]) – Callable performing the corpus_db operation
quiet (bool) – If True, suppress warning messages
- Returns:
Result of func() if successful, None if failed
- Return type:
Any
- build_tools.tui_common.cli_utils.path_completer(text, state)[source]
Tab completion function for file paths.
This enables bash-like tab completion for navigating directories and selecting files.
- build_tools.tui_common.cli_utils.setup_tab_completion()[source]
Configure readline for tab completion with file paths.
This enables: - Tab completion for file and directory names - Tilde (~) expansion for home directory - Standard bash-like completion behavior
- build_tools.tui_common.cli_utils.input_with_completion(prompt)[source]
Get user input with tab completion enabled.
- build_tools.tui_common.cli_utils.discover_files(source, pattern='*.txt', recursive=False)[source]
Discover text files in a directory matching the specified pattern.
This function searches for files matching a glob pattern in the specified directory, optionally recursing into subdirectories. Results are sorted alphabetically for deterministic processing order.
- Parameters:
source (pathlib.Path) – Directory to search for files. Must be an existing directory.
pattern (str) – Glob pattern for file matching (default: “.txt”). Examples: “.txt”, “.md”, “data_.csv”
recursive (bool) – If True, search recursively into subdirectories using rglob. If False, search only the top level (default: False).
- Returns:
List of Path objects for matching files, sorted alphabetically. Returns empty list if no files match.
- Raises:
ValueError – If source is not a directory or doesn’t exist.
- Return type:
Example
>>> # Find all .txt files in a directory >>> files = discover_files(Path("/data/texts")) >>> print(f"Found {len(files)} files")
>>> # Find all .md files recursively >>> files = discover_files(Path("/data"), pattern="*.md", recursive=True)
>>> # Find files with custom pattern >>> files = discover_files(Path("/data"), pattern="book_*.txt")