Project Structure Generator is a versatile tool available both as a command-line interface and as a library. It enables users to generate directory structures in JSON, YAML, or plain text formats and offers the ability to pretty-print the structure with color.
- Generate directory structures in JSON, YAML, Dictionary or plain text.
- Exclude patterns specified in
.gitignore
. - Pretty-print the directory structure with colorful output.
- Command-line interface for ease of use.
- Ability to include content of specified files.
- Customizable patterns for more precise control over the directory structure output.
To install the package, use the following command:
pip install pstruc
The pstruc
tool supports various arguments for generating and customizing the directory structure.
directory
: Specify the directory to inspect (not specified: current directory)-f
,--format
: Choose the output format (json, yaml, txt, dict).-o
,--output
: Specify the output file name.-p
,--print
: Print the directory structure without saving it.-ns
,--not-save
: Do not save the generated structure to an output file.-ip
,--add-ignore-patterns
: Add custom patterns to ignore.-iff
,--ignore-from-files
: List of files to get the ignore patterns from.-igi
,--ignore-git-ignore
: Ignore the patterns inside .gitignore file.-fc
,--add-content-file-patterns
: Include content of specified files.
python pstruc.py /path/to/directory -f json -o output_structure -ip "*.log","__pycache__" -fc "*.md","*.txt"
This command will generate a JSON file output_structure.json
representing the directory structure of /path/to/directory
, ignoring files matching *.log
and __pycache__
, and including content of markdown and text files.
As a library, pstruc
provides a straightforward API for generating and manipulating directory structures. The core functionality is based on generating the structure, saving it, and pretty-printing.
from pstruc import get_project_structure, save_structure_to_file, pretty_print
# Generate directory structure
structure = get_project_structure('/path/to/directory', 'json', ignore_patterns=["*.log", "__pycache__"], file_content=["*.md", "*.txt"])
# Save to a file
save_structure_to_file('output_structure.json', structure)
# Pretty-print the structure
pretty_print(structure)
-
get_project_structure(start_path, output_format, ignore_patterns, file_content)
: Generates the directory structure.start_path (str)
: The directory to inspect.output_format (str)
: The desired output format ('json', 'yaml', 'txt', 'dict').ignore_patterns (list)
: List of patterns to ignore.file_content (list)
: List of patterns to determine which file content to include in the structure.
-
save_structure_to_file(output_file, structure)
: Saves the directory structure to a file.output_file (str)
: The name of the output file.structure (str)
: The directory structure content to be saved.
-
pretty_print(structure)
: Pretty-prints the directory structure.structure (str or dict)
: The directory structure to print.indentation (str)
: The current indentation level.
-
get_all_ignore_patterns(start_path, files_with_ignore_patterns, extra_ignore_patterns)
: Retrieves a combined list of ignore patterns from specified files and additional user-provided patterns.start_path (str)
: The root directory path from where the search for ignore files begins.files_with_ignore_patterns (list of str)
: Filenames from which to read ignore patterns (e.g., '.gitignore').extra_ignore_patterns (list of str)
: Additional patterns provided by the user.
Contributions are welcome! Please follow our Contributing Guidelines.
This project is licensed under the MIT License - see the LICENSE file for details.
- colorama - For colorful output.