mvn-tree-visualizer 1.3.0__tar.gz → 1.4.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of mvn-tree-visualizer might be problematic. Click here for more details.
- {mvn_tree_visualizer-1.3.0 → mvn_tree_visualizer-1.4.0}/.github/SECURITY.md +2 -1
- {mvn_tree_visualizer-1.3.0 → mvn_tree_visualizer-1.4.0}/.github/dependabot.yml +13 -0
- mvn_tree_visualizer-1.4.0/.github/instructions/copilot-instructions.md +92 -0
- mvn_tree_visualizer-1.4.0/.github/workflows/release.yml +58 -0
- {mvn_tree_visualizer-1.3.0 → mvn_tree_visualizer-1.4.0}/CHANGELOG.md +34 -4
- {mvn_tree_visualizer-1.3.0 → mvn_tree_visualizer-1.4.0}/CONTRIBUTING.md +41 -1
- {mvn_tree_visualizer-1.3.0 → mvn_tree_visualizer-1.4.0}/PKG-INFO +21 -2
- {mvn_tree_visualizer-1.3.0 → mvn_tree_visualizer-1.4.0}/README.md +20 -1
- mvn_tree_visualizer-1.4.0/RELEASE.md +185 -0
- {mvn_tree_visualizer-1.3.0 → mvn_tree_visualizer-1.4.0}/ROADMAP.md +51 -20
- mvn_tree_visualizer-1.4.0/docs/THEMES.md +106 -0
- {mvn_tree_visualizer-1.3.0 → mvn_tree_visualizer-1.4.0}/examples/README.md +32 -3
- mvn_tree_visualizer-1.4.0/examples/complex-project/diagram-dark.html +467 -0
- mvn_tree_visualizer-1.4.0/examples/complex-project/diagram-minimal.html +442 -0
- mvn_tree_visualizer-1.4.0/examples/simple-project/diagram-dark.html +250 -0
- mvn_tree_visualizer-1.4.0/examples/simple-project/diagram-minimal.html +225 -0
- mvn_tree_visualizer-1.4.0/issues.md +79 -0
- {mvn_tree_visualizer-1.3.0 → mvn_tree_visualizer-1.4.0}/pyproject.toml +31 -1
- {mvn_tree_visualizer-1.3.0 → mvn_tree_visualizer-1.4.0}/src/mvn_tree_visualizer/cli.py +13 -3
- mvn_tree_visualizer-1.4.0/src/mvn_tree_visualizer/enhanced_template.py +218 -0
- mvn_tree_visualizer-1.4.0/src/mvn_tree_visualizer/outputs/html_output.py +132 -0
- mvn_tree_visualizer-1.4.0/src/mvn_tree_visualizer/themes.py +189 -0
- mvn_tree_visualizer-1.4.0/tests/test_html_output.py +200 -0
- {mvn_tree_visualizer-1.3.0 → mvn_tree_visualizer-1.4.0}/tests/test_watch_mode.py +2 -1
- {mvn_tree_visualizer-1.3.0 → mvn_tree_visualizer-1.4.0}/uv.lock +300 -0
- mvn_tree_visualizer-1.3.0/.github/workflows/publish.yml +0 -29
- mvn_tree_visualizer-1.3.0/examples/complex-project/diagram.html +0 -145
- mvn_tree_visualizer-1.3.0/examples/simple-project/diagram.html +0 -70
- mvn_tree_visualizer-1.3.0/issues.md +0 -73
- mvn_tree_visualizer-1.3.0/src/mvn_tree_visualizer/TEMPLATE.py +0 -61
- mvn_tree_visualizer-1.3.0/src/mvn_tree_visualizer/outputs/html_output.py +0 -65
- mvn_tree_visualizer-1.3.0/tests/test_html_output.py +0 -159
- {mvn_tree_visualizer-1.3.0 → mvn_tree_visualizer-1.4.0}/.github/FUNDING.yml +0 -0
- {mvn_tree_visualizer-1.3.0 → mvn_tree_visualizer-1.4.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {mvn_tree_visualizer-1.3.0 → mvn_tree_visualizer-1.4.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {mvn_tree_visualizer-1.3.0 → mvn_tree_visualizer-1.4.0}/.github/ISSUE_TEMPLATE/question.md +0 -0
- {mvn_tree_visualizer-1.3.0 → mvn_tree_visualizer-1.4.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {mvn_tree_visualizer-1.3.0 → mvn_tree_visualizer-1.4.0}/.github/workflows/ci.yml +0 -0
- {mvn_tree_visualizer-1.3.0 → mvn_tree_visualizer-1.4.0}/.gitignore +0 -0
- {mvn_tree_visualizer-1.3.0 → mvn_tree_visualizer-1.4.0}/.python-version +0 -0
- {mvn_tree_visualizer-1.3.0 → mvn_tree_visualizer-1.4.0}/CODE_OF_CONDUCT.md +0 -0
- {mvn_tree_visualizer-1.3.0 → mvn_tree_visualizer-1.4.0}/LICENSE +0 -0
- {mvn_tree_visualizer-1.3.0 → mvn_tree_visualizer-1.4.0}/docs/INTEGRATION.md +0 -0
- {mvn_tree_visualizer-1.3.0 → mvn_tree_visualizer-1.4.0}/docs/README.md +0 -0
- {mvn_tree_visualizer-1.3.0 → mvn_tree_visualizer-1.4.0}/examples/complex-project/maven_dependency_file +0 -0
- {mvn_tree_visualizer-1.3.0 → mvn_tree_visualizer-1.4.0}/examples/simple-project/dependencies.json +0 -0
- {mvn_tree_visualizer-1.3.0 → mvn_tree_visualizer-1.4.0}/examples/simple-project/maven_dependency_file +0 -0
- {mvn_tree_visualizer-1.3.0 → mvn_tree_visualizer-1.4.0}/examples/watch-test/README.md +0 -0
- {mvn_tree_visualizer-1.3.0 → mvn_tree_visualizer-1.4.0}/examples/watch-test/test_maven_file +0 -0
- {mvn_tree_visualizer-1.3.0 → mvn_tree_visualizer-1.4.0}/ruff.toml +0 -0
- {mvn_tree_visualizer-1.3.0 → mvn_tree_visualizer-1.4.0}/src/mvn_tree_visualizer/__init__.py +0 -0
- {mvn_tree_visualizer-1.3.0 → mvn_tree_visualizer-1.4.0}/src/mvn_tree_visualizer/__main__.py +0 -0
- {mvn_tree_visualizer-1.3.0 → mvn_tree_visualizer-1.4.0}/src/mvn_tree_visualizer/diagram.py +0 -0
- {mvn_tree_visualizer-1.3.0 → mvn_tree_visualizer-1.4.0}/src/mvn_tree_visualizer/exceptions.py +0 -0
- {mvn_tree_visualizer-1.3.0 → mvn_tree_visualizer-1.4.0}/src/mvn_tree_visualizer/file_watcher.py +0 -0
- {mvn_tree_visualizer-1.3.0 → mvn_tree_visualizer-1.4.0}/src/mvn_tree_visualizer/get_dependencies_in_one_file.py +0 -0
- {mvn_tree_visualizer-1.3.0 → mvn_tree_visualizer-1.4.0}/src/mvn_tree_visualizer/outputs/json_output.py +0 -0
- {mvn_tree_visualizer-1.3.0 → mvn_tree_visualizer-1.4.0}/src/mvn_tree_visualizer/validation.py +0 -0
- {mvn_tree_visualizer-1.3.0 → mvn_tree_visualizer-1.4.0}/tests/test_json_output.py +0 -0
|
@@ -6,8 +6,9 @@ We actively support the following versions of mvn-tree-visualizer:
|
|
|
6
6
|
|
|
7
7
|
| Version | Supported |
|
|
8
8
|
| ------- | ------------------ |
|
|
9
|
+
| 1.3.x | :white_check_mark: |
|
|
9
10
|
| 1.2.x | :white_check_mark: |
|
|
10
|
-
| 1.1.x | :
|
|
11
|
+
| 1.1.x | :x: |
|
|
11
12
|
| 1.0.x | :x: |
|
|
12
13
|
|
|
13
14
|
## Reporting a Vulnerability
|
|
@@ -12,6 +12,19 @@ updates:
|
|
|
12
12
|
labels:
|
|
13
13
|
- "dependencies"
|
|
14
14
|
- "python"
|
|
15
|
+
|
|
16
|
+
- package-ecosystem: "uv"
|
|
17
|
+
directory: "/"
|
|
18
|
+
schedule:
|
|
19
|
+
interval: "weekly"
|
|
20
|
+
open-pull-requests-limit: 10
|
|
21
|
+
commit-message:
|
|
22
|
+
prefix: "deps"
|
|
23
|
+
prefix-development: "deps-dev"
|
|
24
|
+
labels:
|
|
25
|
+
- "dependencies"
|
|
26
|
+
- "uv"
|
|
27
|
+
- "python"
|
|
15
28
|
|
|
16
29
|
# Enable version updates for GitHub Actions
|
|
17
30
|
- package-ecosystem: "github-actions"
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# GitHub Copilot Instructions for mvn-tree-visualizer
|
|
2
|
+
|
|
3
|
+
## Project Overview
|
|
4
|
+
This is a Python CLI tool that parses Maven dependency trees (`mvn dependency:tree` output) and generates interactive HTML diagrams (using Mermaid.js) or JSON outputs. The tool supports watch mode for real-time regeneration and has a modular architecture focused on error handling and user experience.
|
|
5
|
+
|
|
6
|
+
## Architecture & Key Components
|
|
7
|
+
|
|
8
|
+
### Core Flow
|
|
9
|
+
1. **Input Validation** (`validation.py`) - Find and validate Maven dependency files
|
|
10
|
+
2. **File Merging** (`get_dependencies_in_one_file.py`) - Combine multiple dependency files
|
|
11
|
+
3. **Parsing** (`diagram.py`) - Read merged dependency tree
|
|
12
|
+
4. **Output Generation** (`outputs/`) - Generate HTML (Mermaid.js) or JSON
|
|
13
|
+
5. **Watch Mode** (`file_watcher.py`) - Monitor files for changes using watchdog
|
|
14
|
+
|
|
15
|
+
### Module Structure
|
|
16
|
+
```
|
|
17
|
+
src/mvn_tree_visualizer/
|
|
18
|
+
├── cli.py # Entry point with comprehensive error handling
|
|
19
|
+
├── exceptions.py # Custom exception hierarchy
|
|
20
|
+
├── validation.py # File discovery and validation logic
|
|
21
|
+
├── diagram.py # Core dependency tree processing
|
|
22
|
+
├── file_watcher.py # Real-time file monitoring
|
|
23
|
+
├── get_dependencies... # Multi-file merging logic
|
|
24
|
+
├── TEMPLATE.py # Jinja2 HTML template for Mermaid.js
|
|
25
|
+
└── outputs/
|
|
26
|
+
├── html_output.py # Mermaid diagram generation
|
|
27
|
+
└── json_output.py # Structured JSON output
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Development Conventions
|
|
31
|
+
|
|
32
|
+
### Error Handling Pattern
|
|
33
|
+
- Use custom exceptions from `exceptions.py`: `DependencyFileNotFoundError`, `DependencyParsingError`, `OutputGenerationError`
|
|
34
|
+
- Provide actionable error messages with Maven commands and file paths
|
|
35
|
+
- Follow the pattern in `cli.py:generate_diagram()` for comprehensive error handling
|
|
36
|
+
|
|
37
|
+
### Testing Approach
|
|
38
|
+
- Use pytest with descriptive test names like `test_convert_to_mermaid_deeper_tree()`
|
|
39
|
+
- Test both positive cases and error conditions
|
|
40
|
+
- Include realistic Maven dependency tree samples in test data
|
|
41
|
+
- Run tests with: `uv run pytest tests/ -v`
|
|
42
|
+
|
|
43
|
+
### Package Management
|
|
44
|
+
- Uses `uv` as package manager - always use `uv run` for commands
|
|
45
|
+
- Core dependencies: `jinja2` (templating), `watchdog` (file monitoring)
|
|
46
|
+
- Entry point: `mvn-tree-visualizer` command maps to `cli:cli`
|
|
47
|
+
|
|
48
|
+
### Code Quality
|
|
49
|
+
- Lint with: `uv run ruff check .`
|
|
50
|
+
- Type hints required throughout (project uses Python 3.13+)
|
|
51
|
+
- Follow existing patterns for file validation and path handling
|
|
52
|
+
|
|
53
|
+
## Critical Implementation Details
|
|
54
|
+
|
|
55
|
+
### Maven Dependency Parsing
|
|
56
|
+
- Input format: `[INFO] groupId:artifactId:type:version:scope` with tree structure using `+`, `|`, `\`
|
|
57
|
+
- Handle both 4-part and 5-part dependency strings (see `html_output.py:_convert_to_mermaid`)
|
|
58
|
+
- Depth calculation based on whitespace: `depth = len(parts[0].split(" ")) - 1`
|
|
59
|
+
|
|
60
|
+
### File Discovery Pattern
|
|
61
|
+
- Multi-file support: searches directory tree for `maven_dependency_file` (configurable)
|
|
62
|
+
- Merges files from different Maven modules into single intermediate file
|
|
63
|
+
- Validates file existence, permissions, and content before processing
|
|
64
|
+
|
|
65
|
+
### Output Generation
|
|
66
|
+
- HTML uses Mermaid.js with `graph LR` format
|
|
67
|
+
- Version display controlled by `--show-versions` flag
|
|
68
|
+
- JSON output maintains tree structure with parent-child relationships
|
|
69
|
+
|
|
70
|
+
### Watch Mode Implementation
|
|
71
|
+
- Uses watchdog library for cross-platform file monitoring
|
|
72
|
+
- Monitors specific filename pattern across directory tree
|
|
73
|
+
- Debounces changes and provides timestamped feedback
|
|
74
|
+
|
|
75
|
+
## Common Development Tasks
|
|
76
|
+
|
|
77
|
+
### Adding New Output Formats
|
|
78
|
+
1. Create new module in `outputs/` directory
|
|
79
|
+
2. Follow pattern from `html_output.py` and `json_output.py`
|
|
80
|
+
3. Add format option to CLI and update `generate_diagram()` in `cli.py`
|
|
81
|
+
|
|
82
|
+
### Error Message Improvements
|
|
83
|
+
- All user-facing errors should include specific file paths and suggested Maven commands
|
|
84
|
+
- Use `print_maven_help()` pattern for guiding users to generate dependency files
|
|
85
|
+
- Test error scenarios in addition to happy path
|
|
86
|
+
|
|
87
|
+
### Testing New Features
|
|
88
|
+
- Include realistic Maven dependency trees in test data
|
|
89
|
+
- Test both single-module and multi-module project scenarios
|
|
90
|
+
- Verify error handling with invalid/missing files
|
|
91
|
+
|
|
92
|
+
Remember: This tool processes Maven output files, not Maven projects directly. Users must run `mvn dependency:tree -DoutputFile=maven_dependency_file` first.
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
name: Semantic Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [ master ]
|
|
6
|
+
workflow_dispatch:
|
|
7
|
+
|
|
8
|
+
concurrency: ${{ github.workflow }}-${{ github.ref }}
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
release:
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
permissions:
|
|
14
|
+
contents: write
|
|
15
|
+
id-token: write
|
|
16
|
+
issues: write
|
|
17
|
+
pull-requests: write
|
|
18
|
+
|
|
19
|
+
steps:
|
|
20
|
+
- name: Checkout
|
|
21
|
+
uses: actions/checkout@v4
|
|
22
|
+
with:
|
|
23
|
+
fetch-depth: 0
|
|
24
|
+
token: ${{ secrets.GITHUB_TOKEN }}
|
|
25
|
+
|
|
26
|
+
- name: Set up Python
|
|
27
|
+
uses: actions/setup-python@v5
|
|
28
|
+
with:
|
|
29
|
+
python-version: '3.13'
|
|
30
|
+
|
|
31
|
+
- name: Install uv
|
|
32
|
+
uses: astral-sh/setup-uv@v4
|
|
33
|
+
|
|
34
|
+
- name: Install dependencies
|
|
35
|
+
run: |
|
|
36
|
+
uv sync --dev
|
|
37
|
+
|
|
38
|
+
- name: Run tests
|
|
39
|
+
run: |
|
|
40
|
+
uv run pytest tests/ -v
|
|
41
|
+
|
|
42
|
+
- name: Run linting
|
|
43
|
+
run: |
|
|
44
|
+
uv run ruff check .
|
|
45
|
+
|
|
46
|
+
- name: Python Semantic Release
|
|
47
|
+
id: release
|
|
48
|
+
uses: python-semantic-release/python-semantic-release@v10.2.0
|
|
49
|
+
with:
|
|
50
|
+
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
51
|
+
|
|
52
|
+
- name: Publish to PyPI
|
|
53
|
+
if: steps.release.outputs.released == 'true'
|
|
54
|
+
env:
|
|
55
|
+
TWINE_USERNAME: __token__
|
|
56
|
+
TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
|
|
57
|
+
run: |
|
|
58
|
+
uv run twine upload dist/*
|
|
@@ -5,10 +5,7 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
### Added
|
|
11
|
-
- Placeholder for future features
|
|
8
|
+
<!--next-version-placeholder-->
|
|
12
9
|
|
|
13
10
|
## [1.3.0] - 2025-07-09
|
|
14
11
|
|
|
@@ -48,6 +45,39 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
48
45
|
|
|
49
46
|
### Changed
|
|
50
47
|
- Enhanced CLI help text to reflect new features
|
|
48
|
+
- Improved JSON output structure for better programmatic access
|
|
49
|
+
- Updated documentation with version feature examples
|
|
50
|
+
|
|
51
|
+
### Fixed
|
|
52
|
+
- Type annotation issues and improved code clarity
|
|
53
|
+
- JSON serialization for complex dependency structures
|
|
54
|
+
|
|
55
|
+
## [1.1.0] - 2025-07-05
|
|
56
|
+
|
|
57
|
+
### Added
|
|
58
|
+
- JSON output format option for programmatic consumption
|
|
59
|
+
- Multi-file support for Maven modules (searches for multiple `maven_dependency_file`)
|
|
60
|
+
- File merging functionality for complex projects
|
|
61
|
+
- Comprehensive error handling for file operations
|
|
62
|
+
- Enhanced CLI with format selection
|
|
63
|
+
|
|
64
|
+
### Changed
|
|
65
|
+
- Improved project structure with organized outputs directory
|
|
66
|
+
- Better separation of concerns between HTML and JSON generation
|
|
67
|
+
|
|
68
|
+
### Fixed
|
|
69
|
+
- File handling issues with large dependency trees
|
|
70
|
+
- Output format validation and error messages
|
|
71
|
+
|
|
72
|
+
## [1.0.0] - 2025-07-01
|
|
73
|
+
|
|
74
|
+
### Added
|
|
75
|
+
- Initial release of mvn-tree-visualizer
|
|
76
|
+
- HTML diagram generation using Mermaid.js
|
|
77
|
+
- CLI interface for processing Maven dependency files
|
|
78
|
+
- Basic error handling and validation
|
|
79
|
+
- Support for Maven dependency tree parsing
|
|
80
|
+
- Interactive HTML output with visual dependency graphs
|
|
51
81
|
- Improved code documentation and readability with type hints
|
|
52
82
|
- Updated README.md with new feature documentation and usage examples
|
|
53
83
|
|
|
@@ -47,8 +47,48 @@ pytest
|
|
|
47
47
|
|
|
48
48
|
### Commit and push
|
|
49
49
|
|
|
50
|
+
We use [Conventional Commits](https://www.conventionalcommits.org/) for commit messages to enable automatic versioning and changelog generation.
|
|
51
|
+
|
|
52
|
+
**Commit Message Format:**
|
|
53
|
+
```
|
|
54
|
+
<type>[optional scope]: <description>
|
|
55
|
+
|
|
56
|
+
[optional body]
|
|
57
|
+
|
|
58
|
+
[optional footer(s)]
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
**Types:**
|
|
62
|
+
- `feat`: A new feature (triggers minor version bump)
|
|
63
|
+
- `fix`: A bug fix (triggers patch version bump)
|
|
64
|
+
- `docs`: Documentation only changes
|
|
65
|
+
- `style`: Changes that do not affect the meaning of the code
|
|
66
|
+
- `refactor`: A code change that neither fixes a bug nor adds a feature
|
|
67
|
+
- `perf`: A code change that improves performance (triggers patch version bump)
|
|
68
|
+
- `test`: Adding missing tests or correcting existing tests
|
|
69
|
+
- `chore`: Changes to the build process or auxiliary tools
|
|
70
|
+
- `ci`: Changes to CI configuration files and scripts
|
|
71
|
+
|
|
72
|
+
**Examples:**
|
|
73
|
+
```bash
|
|
74
|
+
feat: add theme support with --theme option
|
|
75
|
+
fix: resolve dependency parsing error with special characters
|
|
76
|
+
docs: update README with new theme examples
|
|
77
|
+
chore: update dependencies to latest versions
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
**BREAKING CHANGES:**
|
|
81
|
+
For breaking changes, add `!` after the type or include `BREAKING CHANGE:` in the footer:
|
|
82
|
+
```bash
|
|
83
|
+
feat!: change CLI interface for better usability
|
|
84
|
+
# or
|
|
85
|
+
feat: change CLI interface
|
|
86
|
+
|
|
87
|
+
BREAKING CHANGE: --output-format flag renamed to --format
|
|
88
|
+
```
|
|
89
|
+
|
|
50
90
|
```bash
|
|
51
|
-
git commit -m "
|
|
91
|
+
git commit -m "feat: add your new feature description"
|
|
52
92
|
git push origin 123-add-a-feature
|
|
53
93
|
```
|
|
54
94
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mvn-tree-visualizer
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.4.0
|
|
4
4
|
Summary: A simple command line tool to visualize the dependency tree of a Maven project in a graphical format.
|
|
5
5
|
Project-URL: source, https://github.com/dyka3773/mvn-tree-visualizer
|
|
6
6
|
Author-email: Iraklis Konsoulas <dyka3773@gmail.com>
|
|
@@ -55,12 +55,14 @@ pip install mvn-tree-visualizer
|
|
|
55
55
|
- **🌐 Multiple Output Formats:**
|
|
56
56
|
- **HTML:** Generates an interactive HTML diagram of your dependency tree using Mermaid.js.
|
|
57
57
|
- **JSON:** Creates a structured JSON representation of the dependency tree, perfect for scripting or integration with other tools.
|
|
58
|
+
- **🎨 Theme System:** Choose from 2 built-in themes (minimal, dark) for clean and consistent diagram styling.
|
|
58
59
|
- **🔄 Watch Mode:** Automatically regenerates diagrams when Maven dependency files change using the `--watch` flag.
|
|
59
60
|
- **📋 Version Display:** Show or hide dependency versions in both HTML and JSON outputs using the `--show-versions` flag.
|
|
60
61
|
- **⚡ Easy to Use:** A simple command-line interface that gets the job done with minimal configuration.
|
|
61
62
|
- **📂 File Merging:** Automatically finds and merges multiple `maven_dependency_file` files from different subdirectories.
|
|
62
63
|
- **🎨 Customizable Output:** Specify the output file name and location.
|
|
63
|
-
- **💾
|
|
64
|
+
- **💾 Enhanced Downloads:** Download diagrams as SVG or high-resolution PNG directly from the HTML page.
|
|
65
|
+
- **🖱️ Interactive Features:** Hover tooltips, click-to-highlight connections, pan/zoom controls, and keyboard shortcuts.
|
|
64
66
|
|
|
65
67
|
## How to Use
|
|
66
68
|
|
|
@@ -93,6 +95,15 @@ mvn_tree_visualizer --filename "maven_dependency_file" --output "dependencies.js
|
|
|
93
95
|
mvn_tree_visualizer --filename "maven_dependency_file" --output "diagram.html" --show-versions
|
|
94
96
|
```
|
|
95
97
|
|
|
98
|
+
#### With Custom Themes
|
|
99
|
+
```bash
|
|
100
|
+
# Dark theme for low-light environments
|
|
101
|
+
mvn_tree_visualizer --filename "maven_dependency_file" --output "diagram.html" --theme dark
|
|
102
|
+
|
|
103
|
+
# Default minimal theme (clean monospace design)
|
|
104
|
+
mvn_tree_visualizer --filename "maven_dependency_file" --output "diagram.html"
|
|
105
|
+
```
|
|
106
|
+
|
|
96
107
|
#### JSON Output with Versions
|
|
97
108
|
```bash
|
|
98
109
|
mvn_tree_visualizer --filename "maven_dependency_file" --output "dependencies.json" --format json --show-versions
|
|
@@ -129,12 +140,20 @@ Each example includes:
|
|
|
129
140
|
| `--filename` | The name of the file containing the Maven dependency tree | `maven_dependency_file` |
|
|
130
141
|
| `--output` | The name of the output file | `diagram.html` |
|
|
131
142
|
| `--format` | The output format (`html` or `json`) | `html` |
|
|
143
|
+
| `--theme` | Theme for HTML diagrams (`minimal`, `dark`) | `minimal` |
|
|
132
144
|
| `--show-versions` | Show dependency versions in the diagram | `False` |
|
|
133
145
|
| `--watch` | Watch for file changes and auto-regenerate diagram | `False` |
|
|
134
146
|
| `--directory` | The directory to scan for the Maven dependency file(s) | current directory |
|
|
135
147
|
| `--keep-tree` | Keep the intermediate `dependency_tree.txt` file | `False` |
|
|
136
148
|
| `--help` | Show the help message and exit | - |
|
|
137
149
|
|
|
150
|
+
### Theme Options
|
|
151
|
+
|
|
152
|
+
- **`minimal`**: Clean monospace design with simple black borders (default)
|
|
153
|
+
- **`dark`**: Same minimal styling but with white text on black background
|
|
154
|
+
|
|
155
|
+
📖 **See the complete [Theme Documentation](docs/THEMES.md) for detailed information about themes and interactive features.**
|
|
156
|
+
|
|
138
157
|
## Performance
|
|
139
158
|
|
|
140
159
|
**For Large Projects:**
|
|
@@ -35,12 +35,14 @@ pip install mvn-tree-visualizer
|
|
|
35
35
|
- **🌐 Multiple Output Formats:**
|
|
36
36
|
- **HTML:** Generates an interactive HTML diagram of your dependency tree using Mermaid.js.
|
|
37
37
|
- **JSON:** Creates a structured JSON representation of the dependency tree, perfect for scripting or integration with other tools.
|
|
38
|
+
- **🎨 Theme System:** Choose from 2 built-in themes (minimal, dark) for clean and consistent diagram styling.
|
|
38
39
|
- **🔄 Watch Mode:** Automatically regenerates diagrams when Maven dependency files change using the `--watch` flag.
|
|
39
40
|
- **📋 Version Display:** Show or hide dependency versions in both HTML and JSON outputs using the `--show-versions` flag.
|
|
40
41
|
- **⚡ Easy to Use:** A simple command-line interface that gets the job done with minimal configuration.
|
|
41
42
|
- **📂 File Merging:** Automatically finds and merges multiple `maven_dependency_file` files from different subdirectories.
|
|
42
43
|
- **🎨 Customizable Output:** Specify the output file name and location.
|
|
43
|
-
- **💾
|
|
44
|
+
- **💾 Enhanced Downloads:** Download diagrams as SVG or high-resolution PNG directly from the HTML page.
|
|
45
|
+
- **🖱️ Interactive Features:** Hover tooltips, click-to-highlight connections, pan/zoom controls, and keyboard shortcuts.
|
|
44
46
|
|
|
45
47
|
## How to Use
|
|
46
48
|
|
|
@@ -73,6 +75,15 @@ mvn_tree_visualizer --filename "maven_dependency_file" --output "dependencies.js
|
|
|
73
75
|
mvn_tree_visualizer --filename "maven_dependency_file" --output "diagram.html" --show-versions
|
|
74
76
|
```
|
|
75
77
|
|
|
78
|
+
#### With Custom Themes
|
|
79
|
+
```bash
|
|
80
|
+
# Dark theme for low-light environments
|
|
81
|
+
mvn_tree_visualizer --filename "maven_dependency_file" --output "diagram.html" --theme dark
|
|
82
|
+
|
|
83
|
+
# Default minimal theme (clean monospace design)
|
|
84
|
+
mvn_tree_visualizer --filename "maven_dependency_file" --output "diagram.html"
|
|
85
|
+
```
|
|
86
|
+
|
|
76
87
|
#### JSON Output with Versions
|
|
77
88
|
```bash
|
|
78
89
|
mvn_tree_visualizer --filename "maven_dependency_file" --output "dependencies.json" --format json --show-versions
|
|
@@ -109,12 +120,20 @@ Each example includes:
|
|
|
109
120
|
| `--filename` | The name of the file containing the Maven dependency tree | `maven_dependency_file` |
|
|
110
121
|
| `--output` | The name of the output file | `diagram.html` |
|
|
111
122
|
| `--format` | The output format (`html` or `json`) | `html` |
|
|
123
|
+
| `--theme` | Theme for HTML diagrams (`minimal`, `dark`) | `minimal` |
|
|
112
124
|
| `--show-versions` | Show dependency versions in the diagram | `False` |
|
|
113
125
|
| `--watch` | Watch for file changes and auto-regenerate diagram | `False` |
|
|
114
126
|
| `--directory` | The directory to scan for the Maven dependency file(s) | current directory |
|
|
115
127
|
| `--keep-tree` | Keep the intermediate `dependency_tree.txt` file | `False` |
|
|
116
128
|
| `--help` | Show the help message and exit | - |
|
|
117
129
|
|
|
130
|
+
### Theme Options
|
|
131
|
+
|
|
132
|
+
- **`minimal`**: Clean monospace design with simple black borders (default)
|
|
133
|
+
- **`dark`**: Same minimal styling but with white text on black background
|
|
134
|
+
|
|
135
|
+
📖 **See the complete [Theme Documentation](docs/THEMES.md) for detailed information about themes and interactive features.**
|
|
136
|
+
|
|
118
137
|
## Performance
|
|
119
138
|
|
|
120
139
|
**For Large Projects:**
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
# Release Procedure
|
|
2
|
+
|
|
3
|
+
This document describes the automated release process for `mvn-tree-visualizer` using `python-semantic-release`.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
The project uses automated releases with **python-semantic-release**:
|
|
8
|
+
- **Automatic versioning** based on conventional commit messages
|
|
9
|
+
- **Automatic CHANGELOG.md generation** from commit history
|
|
10
|
+
- **Automatic PyPI publication** when code is pushed to `master`
|
|
11
|
+
- **Automatic GitHub releases** with release notes
|
|
12
|
+
|
|
13
|
+
### Workflow Branches:
|
|
14
|
+
- `develop` - Active development branch where features are integrated
|
|
15
|
+
- `master` - Protected production branch, triggers automated releases
|
|
16
|
+
- `feature/*` - Individual feature branches
|
|
17
|
+
|
|
18
|
+
## Conventional Commits
|
|
19
|
+
|
|
20
|
+
All commits must follow [Conventional Commits](https://www.conventionalcommits.org/) specification:
|
|
21
|
+
|
|
22
|
+
### Commit Types and Version Impact:
|
|
23
|
+
- `feat:` - New feature → **MINOR** version bump (1.3.0 → 1.4.0)
|
|
24
|
+
- `fix:` - Bug fix → **PATCH** version bump (1.3.0 → 1.3.1)
|
|
25
|
+
- `perf:` - Performance improvement → **PATCH** version bump
|
|
26
|
+
- `feat!:` or `BREAKING CHANGE:` → **MAJOR** version bump (1.3.0 → 2.0.0)
|
|
27
|
+
- `docs:`, `style:`, `refactor:`, `test:`, `chore:` - No version bump
|
|
28
|
+
|
|
29
|
+
### Examples:
|
|
30
|
+
```bash
|
|
31
|
+
feat: add theme support with --theme option
|
|
32
|
+
fix: resolve dependency parsing error with special characters
|
|
33
|
+
feat!: change CLI interface for better usability
|
|
34
|
+
docs: update README with theme examples
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Automated Release Process
|
|
38
|
+
|
|
39
|
+
### 1. Development Workflow
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
# Create feature branch from develop
|
|
43
|
+
git checkout develop
|
|
44
|
+
git pull origin develop
|
|
45
|
+
git checkout -b feature/add-theme-support
|
|
46
|
+
|
|
47
|
+
# Make changes and commit using conventional commits
|
|
48
|
+
git add .
|
|
49
|
+
git commit -m "feat: add theme system with dark/light modes"
|
|
50
|
+
git push origin feature/add-theme-support
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### 2. Create Pull Request to Develop
|
|
54
|
+
|
|
55
|
+
Create a pull request from your feature branch to `develop`:
|
|
56
|
+
- Title: Clear description of the feature
|
|
57
|
+
- Description: Details of changes and any breaking changes
|
|
58
|
+
- Ensure all tests pass in CI
|
|
59
|
+
|
|
60
|
+
### 3. Merge to Develop
|
|
61
|
+
|
|
62
|
+
Once the PR is reviewed and approved, merge it into `develop`.
|
|
63
|
+
|
|
64
|
+
### 4. Release to Master
|
|
65
|
+
|
|
66
|
+
When ready for a release:
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
# Create release PR from develop to master
|
|
70
|
+
git checkout develop
|
|
71
|
+
git pull origin develop
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Create a pull request from `develop` to `master`:
|
|
75
|
+
- Title: "Release: Prepare for next version"
|
|
76
|
+
- Description: Summary of changes since last release
|
|
77
|
+
- List any breaking changes
|
|
78
|
+
|
|
79
|
+
### 5. Automated Release (Master Branch)
|
|
80
|
+
|
|
81
|
+
When the release PR is merged to `master`, the automation triggers:
|
|
82
|
+
|
|
83
|
+
1. **python-semantic-release analyzes commits** since the last release
|
|
84
|
+
2. **Determines version bump** based on conventional commit types
|
|
85
|
+
3. **Updates version** in `pyproject.toml`
|
|
86
|
+
4. **Generates CHANGELOG.md** from commit messages
|
|
87
|
+
5. **Creates Git tag** with new version
|
|
88
|
+
6. **Builds package** using `python -m build`
|
|
89
|
+
7. **Publishes to PyPI** automatically
|
|
90
|
+
8. **Creates GitHub release** with generated release notes
|
|
91
|
+
|
|
92
|
+
## Manual Release (Emergency)
|
|
93
|
+
|
|
94
|
+
For emergency releases or manual intervention:
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
# Install semantic-release locally
|
|
98
|
+
uv sync --dev
|
|
99
|
+
|
|
100
|
+
# Preview what will be released (dry-run)
|
|
101
|
+
uv run semantic-release --dry-run
|
|
102
|
+
|
|
103
|
+
# Force a specific version type
|
|
104
|
+
uv run semantic-release --patch # or --minor, --major
|
|
105
|
+
|
|
106
|
+
# Generate changelog only
|
|
107
|
+
uv run semantic-release changelog
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
## Monitoring Releases
|
|
111
|
+
|
|
112
|
+
### Check Release Status:
|
|
113
|
+
1. **GitHub Actions**: Monitor the [release workflow](https://github.com/dyka3773/mvn-tree-visualizer/actions)
|
|
114
|
+
2. **PyPI**: Verify new version appears on [PyPI](https://pypi.org/project/mvn-tree-visualizer/)
|
|
115
|
+
3. **GitHub Releases**: Check [GitHub releases page](https://github.com/dyka3773/mvn-tree-visualizer/releases)
|
|
116
|
+
|
|
117
|
+
### Troubleshooting:
|
|
118
|
+
|
|
119
|
+
**Failed Release:**
|
|
120
|
+
- Check GitHub Actions logs for specific errors
|
|
121
|
+
- Verify conventional commit format in recent commits
|
|
122
|
+
- Ensure GITHUB_TOKEN has sufficient permissions
|
|
123
|
+
- Check PyPI trusted publishing configuration
|
|
124
|
+
|
|
125
|
+
**No Version Bump:**
|
|
126
|
+
- Ensure commits follow conventional commit format
|
|
127
|
+
- Check that commits include `feat:` or `fix:` types
|
|
128
|
+
- Verify commits are not filtered out by semantic-release config
|
|
129
|
+
|
|
130
|
+
## Configuration
|
|
131
|
+
|
|
132
|
+
The release behavior is configured in `pyproject.toml`:
|
|
133
|
+
|
|
134
|
+
```toml
|
|
135
|
+
[tool.semantic_release]
|
|
136
|
+
version_toml = ["pyproject.toml:project.version"]
|
|
137
|
+
build_command = "python -m build"
|
|
138
|
+
upload_to_pypi = true
|
|
139
|
+
upload_to_release = true
|
|
140
|
+
|
|
141
|
+
[tool.semantic_release.commit_parser_options]
|
|
142
|
+
allowed_tags = ["build", "chore", "ci", "docs", "feat", "fix", "perf", "style", "refactor", "test"]
|
|
143
|
+
minor_tags = ["feat"]
|
|
144
|
+
patch_tags = ["fix", "perf"]
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
## Migration from Manual Process
|
|
148
|
+
|
|
149
|
+
**Previous manual steps no longer needed:**
|
|
150
|
+
- ❌ Manual version updates in `pyproject.toml`
|
|
151
|
+
- ❌ Manual CHANGELOG.md editing
|
|
152
|
+
- ❌ Manual Git tag creation
|
|
153
|
+
- ❌ Manual PyPI uploads
|
|
154
|
+
|
|
155
|
+
**New automated process:**
|
|
156
|
+
- ✅ Conventional commit messages
|
|
157
|
+
- ✅ Automatic version management
|
|
158
|
+
- ✅ Automatic changelog generation
|
|
159
|
+
- ✅ Automatic PyPI publishing
|
|
160
|
+
- ✅ Automatic GitHub releases
|
|
161
|
+
|
|
162
|
+
## Emergency Procedures
|
|
163
|
+
|
|
164
|
+
### Rollback a Release:
|
|
165
|
+
```bash
|
|
166
|
+
# Revert the problematic release commit
|
|
167
|
+
git revert <release-commit-hash>
|
|
168
|
+
|
|
169
|
+
# Push to master to trigger new patch release
|
|
170
|
+
git push origin master
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
### Hotfix Process:
|
|
174
|
+
```bash
|
|
175
|
+
# Create hotfix branch from master
|
|
176
|
+
git checkout master
|
|
177
|
+
git checkout -b hotfix/critical-bug-fix
|
|
178
|
+
|
|
179
|
+
# Make minimal fix
|
|
180
|
+
git commit -m "fix: resolve critical security vulnerability"
|
|
181
|
+
|
|
182
|
+
# Create PR directly to master (bypass develop for emergencies)
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
This automated approach ensures consistent, reliable releases while reducing manual effort and human error.
|
|
@@ -33,38 +33,69 @@ This document outlines the future direction of the `mvn-tree-visualizer` project
|
|
|
33
33
|
|
|
34
34
|
**Focus:** Making the tool more user-friendly and robust for daily use.
|
|
35
35
|
|
|
36
|
-
* **
|
|
37
|
-
|
|
38
|
-
* [
|
|
36
|
+
* **Status:** Released July 9, 2025
|
|
37
|
+
* **Completed Tasks:**
|
|
38
|
+
* [x] Watch mode functionality with `--watch` flag
|
|
39
|
+
* [x] Enhanced error handling system with comprehensive user guidance
|
|
40
|
+
* [x] Custom exception classes and validation modules
|
|
41
|
+
* [x] Comprehensive test coverage (22 tests)
|
|
42
|
+
* [x] Modular code organization improvements
|
|
39
43
|
|
|
40
|
-
## v1.4.0 - Visual and Theme Enhancements
|
|
44
|
+
## v1.4.0 - Visual and Theme Enhancements ✅ (Released)
|
|
41
45
|
|
|
42
46
|
**Focus:** Making the output more visually appealing and customizable.
|
|
43
47
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
* [
|
|
48
|
-
* [
|
|
49
|
-
*
|
|
50
|
-
* [
|
|
51
|
-
* [
|
|
52
|
-
|
|
48
|
+
**Status:** Released July 17, 2025
|
|
49
|
+
|
|
50
|
+
* **Visual Themes (Completed):**
|
|
51
|
+
* [x] `--theme` option with multiple built-in themes (default/minimal, dark, light)
|
|
52
|
+
* [x] Standardized color scheme across all themes
|
|
53
|
+
* [x] Clean minimal design as default theme
|
|
54
|
+
* [x] Enhanced dark theme with proper text visibility
|
|
55
|
+
* [x] Consistent graphDiv styling across themes
|
|
56
|
+
* **Interactive Features (Completed):**
|
|
57
|
+
* [x] SVG download functionality
|
|
58
|
+
* [x] Pan and zoom controls with keyboard shortcuts
|
|
59
|
+
* [x] Full-screen diagram experience
|
|
60
|
+
* [x] Improved hover effects for nodes
|
|
61
|
+
* **Template Enhancements (Completed):**
|
|
62
|
+
* [x] Enhanced template system with theme support
|
|
63
|
+
* [x] Improved Mermaid.js configuration options
|
|
64
|
+
* [x] Standardized color coding for node types (root=blue, intermediate=orange, leaf=green)
|
|
65
|
+
* [x] Comprehensive examples for all themes
|
|
66
|
+
|
|
67
|
+
## v1.5.0 - Interactive Features 🎯 (Next Release)
|
|
68
|
+
|
|
69
|
+
**Focus:** Enhanced interactivity and user experience.
|
|
70
|
+
|
|
71
|
+
**Priority:** High - Building on the solid theme foundation with interactive capabilities.
|
|
72
|
+
|
|
73
|
+
* **Node Interaction Features (High Priority):**
|
|
74
|
+
* [ ] **Descendant Highlighting:** Click nodes to highlight only their downstream dependencies
|
|
75
|
+
* [ ] Tooltips with detailed dependency information (groupId, version, scope)
|
|
76
|
+
* [ ] Expandable/collapsible dependency groups for large trees
|
|
77
|
+
* [ ] Search and filter functionality within diagrams
|
|
78
|
+
* **Enhanced Controls (Medium Priority):**
|
|
79
|
+
* [ ] PNG download option alongside SVG
|
|
80
|
+
* [ ] Zoom to fit specific dependency subtrees
|
|
81
|
+
* [ ] Better visual hierarchy controls for nested dependencies
|
|
82
|
+
* **Performance & Layout (Medium Priority):**
|
|
83
|
+
* [ ] Better layout options for large dependency trees
|
|
84
|
+
* [ ] Performance optimizations for very large projects
|
|
53
85
|
|
|
54
|
-
## v1.
|
|
86
|
+
## v1.6.0 - Advanced Features 🚀
|
|
55
87
|
|
|
56
88
|
**Focus:** Performance and advanced functionality for power users.
|
|
57
89
|
|
|
58
|
-
* **Performance & Layout:**
|
|
59
|
-
* [ ] Better layout options for large dependency trees
|
|
60
|
-
* [ ] Performance optimizations for very large projects
|
|
61
|
-
* [ ] Memory usage improvements for complex graphs
|
|
62
90
|
* **Export Enhancements:**
|
|
63
91
|
* [ ] PNG, PDF export options
|
|
64
92
|
* [ ] SVG improvements and customization
|
|
65
93
|
* [ ] High-quality output for presentations
|
|
94
|
+
* **Advanced Analysis:**
|
|
95
|
+
* [ ] Memory usage improvements for complex graphs
|
|
96
|
+
* [ ] Dependency statistics and analysis
|
|
66
97
|
|
|
67
|
-
## v1.
|
|
98
|
+
## v1.7.0+ - Extended Capabilities 🔮
|
|
68
99
|
|
|
69
100
|
**Focus:** Advanced analysis and integration features.
|
|
70
101
|
|
|
@@ -97,4 +128,4 @@ If you're interested in contributing to any of these features, please check out
|
|
|
97
128
|
|
|
98
129
|
---
|
|
99
130
|
|
|
100
|
-
*Last updated: July
|
|
131
|
+
*Last updated: July 16, 2025*
|