Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/nachokhan/pstruc
Get a project file structure to analyze it
https://github.com/nachokhan/pstruc
Last synced: 3 months ago
JSON representation
Get a project file structure to analyze it
- Host: GitHub
- URL: https://github.com/nachokhan/pstruc
- Owner: nachokhan
- License: mit
- Created: 2023-12-18T14:44:24.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2024-02-24T23:36:19.000Z (11 months ago)
- Last Synced: 2024-08-01T09:38:09.313Z (5 months ago)
- Language: Python
- Homepage:
- Size: 471 KB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# Project Structure Generator
## Overview
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.## Features
- 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.## Installation
To install the package, use the following command:
```
pip install pstruc
```## CLI Usage
The `pstruc` tool supports various arguments for generating and customizing the directory structure.### Arguments
- `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.### Example
```
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.## Library Usage
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.### Example
```python
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)
```## Library Available Methods
- `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.## Contributing
Contributions are welcome! Please follow our [Contributing Guidelines](CONTRIBUTING.md).## License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.## Acknowledgments
- [colorama](https://pypi.org/project/colorama/) - For colorful output.