mvn-tree-visualizer 1.2.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.4.0/.github/FUNDING.yml +13 -0
- mvn_tree_visualizer-1.4.0/.github/ISSUE_TEMPLATE/bug_report.md +36 -0
- mvn_tree_visualizer-1.4.0/.github/ISSUE_TEMPLATE/feature_request.md +22 -0
- mvn_tree_visualizer-1.4.0/.github/ISSUE_TEMPLATE/question.md +21 -0
- mvn_tree_visualizer-1.4.0/.github/PULL_REQUEST_TEMPLATE.md +30 -0
- mvn_tree_visualizer-1.4.0/.github/SECURITY.md +52 -0
- mvn_tree_visualizer-1.4.0/.github/dependabot.yml +39 -0
- mvn_tree_visualizer-1.4.0/.github/instructions/copilot-instructions.md +92 -0
- mvn_tree_visualizer-1.4.0/.github/workflows/ci.yml +38 -0
- mvn_tree_visualizer-1.4.0/.github/workflows/release.yml +58 -0
- {mvn_tree_visualizer-1.2.0 → mvn_tree_visualizer-1.4.0}/.gitignore +9 -1
- mvn_tree_visualizer-1.4.0/CHANGELOG.md +109 -0
- {mvn_tree_visualizer-1.2.0 → mvn_tree_visualizer-1.4.0}/CONTRIBUTING.md +41 -1
- mvn_tree_visualizer-1.4.0/PKG-INFO +209 -0
- mvn_tree_visualizer-1.4.0/README.md +189 -0
- mvn_tree_visualizer-1.4.0/RELEASE.md +185 -0
- mvn_tree_visualizer-1.4.0/ROADMAP.md +131 -0
- mvn_tree_visualizer-1.4.0/docs/INTEGRATION.md +261 -0
- mvn_tree_visualizer-1.4.0/docs/README.md +42 -0
- mvn_tree_visualizer-1.4.0/docs/THEMES.md +106 -0
- mvn_tree_visualizer-1.4.0/examples/README.md +91 -0
- 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/complex-project/maven_dependency_file +84 -0
- mvn_tree_visualizer-1.4.0/examples/simple-project/dependencies.json +40 -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/examples/simple-project/maven_dependency_file +9 -0
- mvn_tree_visualizer-1.4.0/examples/watch-test/README.md +22 -0
- mvn_tree_visualizer-1.4.0/examples/watch-test/test_maven_file +2 -0
- mvn_tree_visualizer-1.4.0/issues.md +79 -0
- {mvn_tree_visualizer-1.2.0 → mvn_tree_visualizer-1.4.0}/pyproject.toml +32 -1
- mvn_tree_visualizer-1.4.0/src/mvn_tree_visualizer/cli.py +225 -0
- mvn_tree_visualizer-1.4.0/src/mvn_tree_visualizer/diagram.py +26 -0
- 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/exceptions.py +25 -0
- mvn_tree_visualizer-1.4.0/src/mvn_tree_visualizer/file_watcher.py +71 -0
- mvn_tree_visualizer-1.4.0/src/mvn_tree_visualizer/get_dependencies_in_one_file.py +40 -0
- mvn_tree_visualizer-1.4.0/src/mvn_tree_visualizer/outputs/html_output.py +132 -0
- {mvn_tree_visualizer-1.2.0 → mvn_tree_visualizer-1.4.0}/src/mvn_tree_visualizer/outputs/json_output.py +2 -2
- mvn_tree_visualizer-1.4.0/src/mvn_tree_visualizer/themes.py +189 -0
- mvn_tree_visualizer-1.4.0/src/mvn_tree_visualizer/validation.py +86 -0
- mvn_tree_visualizer-1.4.0/tests/test_html_output.py +200 -0
- {mvn_tree_visualizer-1.2.0 → mvn_tree_visualizer-1.4.0}/tests/test_json_output.py +7 -7
- mvn_tree_visualizer-1.4.0/tests/test_watch_mode.py +169 -0
- {mvn_tree_visualizer-1.2.0 → mvn_tree_visualizer-1.4.0}/uv.lock +327 -2
- mvn_tree_visualizer-1.2.0/.github/workflows/publish.yml +0 -29
- mvn_tree_visualizer-1.2.0/CHANGELOG.md +0 -49
- mvn_tree_visualizer-1.2.0/PKG-INFO +0 -94
- mvn_tree_visualizer-1.2.0/README.md +0 -75
- mvn_tree_visualizer-1.2.0/ROADMAP.md +0 -34
- mvn_tree_visualizer-1.2.0/issues.md +0 -84
- mvn_tree_visualizer-1.2.0/src/mvn_tree_visualizer/TEMPLATE.py +0 -61
- mvn_tree_visualizer-1.2.0/src/mvn_tree_visualizer/cli.py +0 -94
- mvn_tree_visualizer-1.2.0/src/mvn_tree_visualizer/diagram.py +0 -14
- mvn_tree_visualizer-1.2.0/src/mvn_tree_visualizer/get_dependencies_in_one_file.py +0 -13
- mvn_tree_visualizer-1.2.0/src/mvn_tree_visualizer/outputs/html_output.py +0 -65
- mvn_tree_visualizer-1.2.0/tests/test_html_output.py +0 -159
- {mvn_tree_visualizer-1.2.0 → mvn_tree_visualizer-1.4.0}/.python-version +0 -0
- {mvn_tree_visualizer-1.2.0 → mvn_tree_visualizer-1.4.0}/CODE_OF_CONDUCT.md +0 -0
- {mvn_tree_visualizer-1.2.0 → mvn_tree_visualizer-1.4.0}/LICENSE +0 -0
- {mvn_tree_visualizer-1.2.0 → mvn_tree_visualizer-1.4.0}/ruff.toml +0 -0
- {mvn_tree_visualizer-1.2.0 → mvn_tree_visualizer-1.4.0}/src/mvn_tree_visualizer/__init__.py +0 -0
- {mvn_tree_visualizer-1.2.0 → mvn_tree_visualizer-1.4.0}/src/mvn_tree_visualizer/__main__.py +0 -0
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# These are supported funding model platforms
|
|
2
|
+
|
|
3
|
+
github: # Replace with a single GitHub username or organization
|
|
4
|
+
patreon: # Replace with a single Patreon username
|
|
5
|
+
open_collective: # Replace with a single Open Collective username
|
|
6
|
+
ko_fi: irakliskonsoulas
|
|
7
|
+
tidelift: # Replace with a single Tidelift package-name e.g., npm/babel
|
|
8
|
+
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
|
|
9
|
+
liberapay: # Replace with a single Liberapay username
|
|
10
|
+
issuehunt: # Replace with a single IssueHunt username
|
|
11
|
+
otechie: # Replace with a single Otechie username
|
|
12
|
+
lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
|
|
13
|
+
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Bug report
|
|
3
|
+
about: Create a report to help us improve
|
|
4
|
+
title: '[BUG] '
|
|
5
|
+
labels: bug
|
|
6
|
+
assignees: ''
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
**Describe the bug**
|
|
10
|
+
A clear and concise description of what the bug is.
|
|
11
|
+
|
|
12
|
+
**To Reproduce**
|
|
13
|
+
Steps to reproduce the behavior:
|
|
14
|
+
1. Run command '...'
|
|
15
|
+
2. See error
|
|
16
|
+
|
|
17
|
+
**Expected behavior**
|
|
18
|
+
A clear and concise description of what you expected to happen.
|
|
19
|
+
|
|
20
|
+
**Maven dependency tree sample**
|
|
21
|
+
Please provide a sample of your Maven dependency tree output:
|
|
22
|
+
```
|
|
23
|
+
[paste your maven dependency tree here]
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
**Screenshots**
|
|
27
|
+
If applicable, add screenshots to help explain your problem.
|
|
28
|
+
|
|
29
|
+
**Environment:**
|
|
30
|
+
- OS: [e.g. Windows 10, macOS, Ubuntu 20.04]
|
|
31
|
+
- Python version: [e.g. 3.13]
|
|
32
|
+
- Package version: [e.g. 1.2.0]
|
|
33
|
+
- Maven version: [e.g. 3.8.1]
|
|
34
|
+
|
|
35
|
+
**Additional context**
|
|
36
|
+
Add any other context about the problem here.
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Feature request
|
|
3
|
+
about: Suggest an idea for this project
|
|
4
|
+
title: '[FEATURE] '
|
|
5
|
+
labels: enhancement
|
|
6
|
+
assignees: ''
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
**Is your feature request related to a problem? Please describe.**
|
|
10
|
+
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
|
11
|
+
|
|
12
|
+
**Describe the solution you'd like**
|
|
13
|
+
A clear and concise description of what you want to happen.
|
|
14
|
+
|
|
15
|
+
**Describe alternatives you've considered**
|
|
16
|
+
A clear and concise description of any alternative solutions or features you've considered.
|
|
17
|
+
|
|
18
|
+
**Use case**
|
|
19
|
+
Describe how this feature would be used and who would benefit from it.
|
|
20
|
+
|
|
21
|
+
**Additional context**
|
|
22
|
+
Add any other context or screenshots about the feature request here.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Question
|
|
3
|
+
about: Ask a question about usage or functionality
|
|
4
|
+
title: '[QUESTION] '
|
|
5
|
+
labels: question
|
|
6
|
+
assignees: ''
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
**Question**
|
|
10
|
+
What would you like to know?
|
|
11
|
+
|
|
12
|
+
**Context**
|
|
13
|
+
Provide any relevant context about your use case or what you're trying to achieve.
|
|
14
|
+
|
|
15
|
+
**What you've tried**
|
|
16
|
+
If applicable, describe what you've already tried.
|
|
17
|
+
|
|
18
|
+
**Environment (if relevant):**
|
|
19
|
+
- OS: [e.g. Windows 10, macOS, Ubuntu 20.04]
|
|
20
|
+
- Python version: [e.g. 3.13]
|
|
21
|
+
- Package version: [e.g. 1.2.0]
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
## Description
|
|
2
|
+
Brief description of the changes made in this PR.
|
|
3
|
+
|
|
4
|
+
## Type of Change
|
|
5
|
+
- [ ] Bug fix (non-breaking change which fixes an issue)
|
|
6
|
+
- [ ] New feature (non-breaking change which adds functionality)
|
|
7
|
+
- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
|
|
8
|
+
- [ ] Documentation update
|
|
9
|
+
- [ ] Code refactoring
|
|
10
|
+
- [ ] Performance improvement
|
|
11
|
+
- [ ] Other (please describe):
|
|
12
|
+
|
|
13
|
+
## Testing
|
|
14
|
+
- [ ] I have added tests that prove my fix is effective or that my feature works
|
|
15
|
+
- [ ] New and existing unit tests pass locally with my changes
|
|
16
|
+
- [ ] I have tested the CLI functionality manually
|
|
17
|
+
|
|
18
|
+
## Checklist
|
|
19
|
+
- [ ] My code follows the project's style guidelines
|
|
20
|
+
- [ ] I have performed a self-review of my code
|
|
21
|
+
- [ ] I have commented my code, particularly in hard-to-understand areas
|
|
22
|
+
- [ ] I have made corresponding changes to the documentation
|
|
23
|
+
- [ ] My changes generate no new warnings
|
|
24
|
+
- [ ] I have updated the CHANGELOG.md file (if applicable)
|
|
25
|
+
|
|
26
|
+
## Screenshots (if applicable)
|
|
27
|
+
Add screenshots to help explain your changes.
|
|
28
|
+
|
|
29
|
+
## Additional Notes
|
|
30
|
+
Any additional information that would be helpful for reviewers.
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Security Policy
|
|
2
|
+
|
|
3
|
+
## Supported Versions
|
|
4
|
+
|
|
5
|
+
We actively support the following versions of mvn-tree-visualizer:
|
|
6
|
+
|
|
7
|
+
| Version | Supported |
|
|
8
|
+
| ------- | ------------------ |
|
|
9
|
+
| 1.3.x | :white_check_mark: |
|
|
10
|
+
| 1.2.x | :white_check_mark: |
|
|
11
|
+
| 1.1.x | :x: |
|
|
12
|
+
| 1.0.x | :x: |
|
|
13
|
+
|
|
14
|
+
## Reporting a Vulnerability
|
|
15
|
+
|
|
16
|
+
If you discover a security vulnerability in mvn-tree-visualizer, please report it to us responsibly.
|
|
17
|
+
|
|
18
|
+
### How to Report
|
|
19
|
+
|
|
20
|
+
1. **Do not create a public GitHub issue** for security vulnerabilities
|
|
21
|
+
2. **Email us directly** at: dyka3773@gmail.com
|
|
22
|
+
3. **Include the following information:**
|
|
23
|
+
- Description of the vulnerability
|
|
24
|
+
- Steps to reproduce
|
|
25
|
+
- Affected versions
|
|
26
|
+
- Potential impact
|
|
27
|
+
- Suggested fix (if available)
|
|
28
|
+
|
|
29
|
+
### Response Timeline
|
|
30
|
+
|
|
31
|
+
- **Acknowledgment**: We will acknowledge receipt of your report as soon as possible (usually within 48 hours)
|
|
32
|
+
- **Assessment**: We will assess the vulnerability within 7 days
|
|
33
|
+
- **Fix**: We will work on a fix and release it as soon as possible
|
|
34
|
+
- **Credit**: We will credit you in the security advisory (unless you prefer to remain anonymous)
|
|
35
|
+
|
|
36
|
+
### Security Best Practices
|
|
37
|
+
|
|
38
|
+
When using mvn-tree-visualizer:
|
|
39
|
+
|
|
40
|
+
1. **Keep updated**: Always use the latest version
|
|
41
|
+
2. **Validate inputs**: Be cautious with dependency files from untrusted sources
|
|
42
|
+
3. **File permissions**: Ensure proper file permissions on generated outputs
|
|
43
|
+
4. **CI/CD**: Use in secure CI/CD environments
|
|
44
|
+
|
|
45
|
+
### Scope
|
|
46
|
+
|
|
47
|
+
This security policy applies to:
|
|
48
|
+
- The mvn-tree-visualizer Python package
|
|
49
|
+
- Official GitHub repository
|
|
50
|
+
- Documentation and examples
|
|
51
|
+
|
|
52
|
+
Thank you for helping keep mvn-tree-visualizer secure!
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
version: 2
|
|
2
|
+
updates:
|
|
3
|
+
# Enable version updates for Python dependencies
|
|
4
|
+
- package-ecosystem: "pip"
|
|
5
|
+
directory: "/"
|
|
6
|
+
schedule:
|
|
7
|
+
interval: "weekly"
|
|
8
|
+
open-pull-requests-limit: 10
|
|
9
|
+
commit-message:
|
|
10
|
+
prefix: "deps"
|
|
11
|
+
prefix-development: "deps-dev"
|
|
12
|
+
labels:
|
|
13
|
+
- "dependencies"
|
|
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"
|
|
28
|
+
|
|
29
|
+
# Enable version updates for GitHub Actions
|
|
30
|
+
- package-ecosystem: "github-actions"
|
|
31
|
+
directory: "/"
|
|
32
|
+
schedule:
|
|
33
|
+
interval: "weekly"
|
|
34
|
+
open-pull-requests-limit: 5
|
|
35
|
+
commit-message:
|
|
36
|
+
prefix: "ci"
|
|
37
|
+
labels:
|
|
38
|
+
- "dependencies"
|
|
39
|
+
- "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,38 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [ master, develop ]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [ master, develop ]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
test:
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
strategy:
|
|
13
|
+
matrix:
|
|
14
|
+
python-version: ["3.13"]
|
|
15
|
+
|
|
16
|
+
steps:
|
|
17
|
+
- uses: actions/checkout@v4
|
|
18
|
+
|
|
19
|
+
- name: Set up Python ${{ matrix.python-version }}
|
|
20
|
+
uses: actions/setup-python@v5
|
|
21
|
+
with:
|
|
22
|
+
python-version: ${{ matrix.python-version }}
|
|
23
|
+
|
|
24
|
+
- name: Install dependencies
|
|
25
|
+
run: |
|
|
26
|
+
python -m pip install --upgrade pip
|
|
27
|
+
pip install -e .
|
|
28
|
+
pip install pytest ruff
|
|
29
|
+
|
|
30
|
+
- name: Run linter
|
|
31
|
+
run: ruff check src/ tests/
|
|
32
|
+
|
|
33
|
+
- name: Run tests
|
|
34
|
+
run: pytest -v
|
|
35
|
+
|
|
36
|
+
- name: Test CLI
|
|
37
|
+
run: |
|
|
38
|
+
python -m mvn_tree_visualizer --help
|
|
@@ -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/*
|
|
@@ -18,6 +18,14 @@ lib/
|
|
|
18
18
|
lib64/
|
|
19
19
|
parts/
|
|
20
20
|
sdist/
|
|
21
|
+
|
|
22
|
+
# Project specific - only ignore in root directory
|
|
23
|
+
/dependency_tree.txt
|
|
24
|
+
/maven_dependency_file
|
|
25
|
+
/diagram.html
|
|
26
|
+
/dependencies.json
|
|
27
|
+
/*.svg
|
|
28
|
+
|
|
21
29
|
var/
|
|
22
30
|
wheels/
|
|
23
31
|
share/python-wheels/
|
|
@@ -179,7 +187,7 @@ cython_debug/
|
|
|
179
187
|
# that can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore
|
|
180
188
|
# and can be added to the global gitignore or merged into this file. However, if you prefer,
|
|
181
189
|
# you could uncomment the following to ignore the entire vscode folder
|
|
182
|
-
|
|
190
|
+
.vscode/
|
|
183
191
|
|
|
184
192
|
# Ruff stuff:
|
|
185
193
|
.ruff_cache/
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
<!--next-version-placeholder-->
|
|
9
|
+
|
|
10
|
+
## [1.3.0] - 2025-07-09
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
- Watch mode functionality with `--watch` flag for automatic diagram regeneration
|
|
14
|
+
- File system monitoring using watchdog library for real-time updates
|
|
15
|
+
- New file_watcher module for decoupled file monitoring logic
|
|
16
|
+
- Enhanced error handling system with comprehensive user guidance
|
|
17
|
+
- Clear error messages for missing dependency files with helpful Maven commands
|
|
18
|
+
- Specific validation for directories, file permissions, and content
|
|
19
|
+
- Detailed diagnostics for parsing errors and empty files
|
|
20
|
+
- User-friendly error messages with emojis and actionable suggestions
|
|
21
|
+
- Custom exception classes for better error categorization
|
|
22
|
+
- Comprehensive test coverage for error scenarios
|
|
23
|
+
|
|
24
|
+
### Changed
|
|
25
|
+
- **BREAKING**: JSON output now uses simplified package names (artifact-id only) to match HTML output behavior
|
|
26
|
+
- Root packages now show as "my-app" instead of "com.example:my-app"
|
|
27
|
+
- Ensures consistency between HTML and JSON output formats
|
|
28
|
+
- Refactored CLI module to separate concerns and improve maintainability
|
|
29
|
+
- Improved error handling with timestamped console output and graceful failure modes
|
|
30
|
+
- Enhanced file processing with better encoding handling (UTF-8) and validation
|
|
31
|
+
- Updated dependency file merging logic with better error detection
|
|
32
|
+
|
|
33
|
+
### Fixed
|
|
34
|
+
- Removed unused imports and improved code organization
|
|
35
|
+
- Fixed intermediate file path handling in diagram generation
|
|
36
|
+
|
|
37
|
+
## [1.2.0] - 2025-07-09
|
|
38
|
+
|
|
39
|
+
### Added
|
|
40
|
+
- Comprehensive type hints throughout the entire codebase
|
|
41
|
+
- `--show-versions` flag to display dependency versions in both HTML and JSON outputs
|
|
42
|
+
- Support for complex dependency trees with real-world examples
|
|
43
|
+
- "Typing :: Typed" classifier in pyproject.toml to indicate type hint support
|
|
44
|
+
- CHANGELOG.md to track project changes
|
|
45
|
+
|
|
46
|
+
### Changed
|
|
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
|
|
81
|
+
- Improved code documentation and readability with type hints
|
|
82
|
+
- Updated README.md with new feature documentation and usage examples
|
|
83
|
+
|
|
84
|
+
### Fixed
|
|
85
|
+
- Better static type checking support for development tools
|
|
86
|
+
|
|
87
|
+
## [1.1.0] - 2025-07-08
|
|
88
|
+
|
|
89
|
+
### Added
|
|
90
|
+
- JSON output format support alongside existing HTML format
|
|
91
|
+
- `--format` CLI argument to choose between HTML and JSON outputs
|
|
92
|
+
- Comprehensive test suite for both output formats
|
|
93
|
+
- GitHub Actions workflow for automated PyPI publishing
|
|
94
|
+
|
|
95
|
+
### Changed
|
|
96
|
+
- Decoupled output generation logic from core diagram creation
|
|
97
|
+
- Improved code modularity with separate output modules
|
|
98
|
+
|
|
99
|
+
### Fixed
|
|
100
|
+
- Enhanced project structure and maintainability
|
|
101
|
+
|
|
102
|
+
## [1.0.0] - Initial Release
|
|
103
|
+
|
|
104
|
+
### Added
|
|
105
|
+
- HTML diagram generation using Mermaid.js
|
|
106
|
+
- Interactive SVG export functionality
|
|
107
|
+
- File merging from multiple Maven dependency files
|
|
108
|
+
- Basic CLI interface with essential options
|
|
109
|
+
- Project documentation and contribution guidelines
|
|
@@ -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
|
|