mvn-tree-visualizer 1.6.0b1__tar.gz → 1.7.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.
Files changed (59) hide show
  1. mvn_tree_visualizer-1.7.0/.github/workflows/ci.yml +35 -0
  2. {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/.github/workflows/release.yml +1 -9
  3. mvn_tree_visualizer-1.7.0/CHANGELOG.md +113 -0
  4. {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/PKG-INFO +17 -3
  5. {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/README.md +12 -1
  6. {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/RELEASE.md +0 -33
  7. mvn_tree_visualizer-1.7.0/ROADMAP.md +119 -0
  8. {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/pyproject.toml +25 -9
  9. {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/src/mvn_tree_visualizer/cli.py +65 -17
  10. mvn_tree_visualizer-1.7.0/tests/test_cli.py +322 -0
  11. {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/tests/test_watch_mode.py +45 -37
  12. mvn_tree_visualizer-1.7.0/uv.lock +1202 -0
  13. mvn_tree_visualizer-1.6.0b1/.github/copilot-instructions.md +0 -87
  14. mvn_tree_visualizer-1.6.0b1/.github/workflows/ci.yml +0 -38
  15. mvn_tree_visualizer-1.6.0b1/CHANGELOG.md +0 -109
  16. mvn_tree_visualizer-1.6.0b1/ROADMAP.md +0 -149
  17. mvn_tree_visualizer-1.6.0b1/issues.md +0 -79
  18. mvn_tree_visualizer-1.6.0b1/uv.lock +0 -838
  19. {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/.github/FUNDING.yml +0 -0
  20. {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  21. {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  22. {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/.github/ISSUE_TEMPLATE/question.md +0 -0
  23. {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  24. {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/.github/SECURITY.md +0 -0
  25. {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/.github/dependabot.yml +0 -0
  26. {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/.gitignore +0 -0
  27. {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/.python-version +0 -0
  28. {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/CODE_OF_CONDUCT.md +0 -0
  29. {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/CONTRIBUTING.md +0 -0
  30. {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/LICENSE +0 -0
  31. {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/docs/INTEGRATION.md +0 -0
  32. {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/docs/README.md +0 -0
  33. {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/docs/THEMES.md +0 -0
  34. {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/examples/README.md +0 -0
  35. {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/examples/complex-project/diagram-dark.html +0 -0
  36. {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/examples/complex-project/diagram-minimal.html +0 -0
  37. {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/examples/complex-project/maven_dependency_file +0 -0
  38. {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/examples/simple-project/dependencies.json +0 -0
  39. {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/examples/simple-project/diagram-dark.html +0 -0
  40. {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/examples/simple-project/diagram-minimal.html +0 -0
  41. {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/examples/simple-project/maven_dependency_file +0 -0
  42. {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/examples/watch-test/README.md +0 -0
  43. {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/examples/watch-test/test_maven_file +0 -0
  44. {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/ruff.toml +0 -0
  45. {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/src/mvn_tree_visualizer/__init__.py +0 -0
  46. {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/src/mvn_tree_visualizer/__main__.py +0 -0
  47. {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/src/mvn_tree_visualizer/diagram.py +0 -0
  48. {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/src/mvn_tree_visualizer/enhanced_template.py +0 -0
  49. {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/src/mvn_tree_visualizer/exceptions.py +0 -0
  50. {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/src/mvn_tree_visualizer/file_watcher.py +0 -0
  51. {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/src/mvn_tree_visualizer/get_dependencies_in_one_file.py +0 -0
  52. {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/src/mvn_tree_visualizer/outputs/html_output.py +0 -0
  53. {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/src/mvn_tree_visualizer/outputs/json_output.py +0 -0
  54. {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/src/mvn_tree_visualizer/themes.py +0 -0
  55. {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/src/mvn_tree_visualizer/validation.py +0 -0
  56. {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/tests/test_github_issue_7.py +0 -0
  57. {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/tests/test_html_output.py +0 -0
  58. {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/tests/test_json_output.py +0 -0
  59. {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/tests/test_large_diagram_support.py +0 -0
@@ -0,0 +1,35 @@
1
+ name: CI
2
+
3
+ on:
4
+ pull_request:
5
+ branches: [ master, develop ]
6
+
7
+ jobs:
8
+ test:
9
+ runs-on: ubuntu-latest
10
+ strategy:
11
+ matrix:
12
+ python-version: ["3.13"]
13
+
14
+ steps:
15
+ - uses: actions/checkout@v4
16
+
17
+ - name: Set up Python
18
+ uses: actions/setup-python@v5
19
+
20
+ - name: Install uv
21
+ uses: astral-sh/setup-uv@v4
22
+ with:
23
+ version: "latest"
24
+
25
+ - name: Install dependencies
26
+ run: uv sync --dev
27
+
28
+ - name: Install tox
29
+ run: uv tool install tox --with tox-uv
30
+
31
+ - name: Run linter & tests
32
+ run: tox --parallel
33
+
34
+ - name: Test CLI
35
+ run: uv run python -m mvn_tree_visualizer --help
@@ -2,7 +2,7 @@ name: Semantic Release
2
2
 
3
3
  on:
4
4
  push:
5
- branches: [ master, develop ]
5
+ branches: [ master ]
6
6
  workflow_dispatch:
7
7
 
8
8
  concurrency: ${{ github.workflow }}-${{ github.ref }}
@@ -34,14 +34,6 @@ jobs:
34
34
  - name: Install dependencies
35
35
  run: |
36
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
37
 
46
38
  - name: Python Semantic Release
47
39
  id: release
@@ -0,0 +1,113 @@
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](http://keepachangelog.com/en/1.0.0/)
6
+ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
7
+
8
+ <!-- insertion marker -->
9
+ ## [v1.6.0](https://github.com/dyka3773/mvn-tree-visualizer/releases/tag/v1.6.0) - 2025-07-24
10
+
11
+ <small>[Compare with v1.6.0-beta.1](https://github.com/dyka3773/mvn-tree-visualizer/compare/v1.6.0-beta.1...v1.6.0)</small>
12
+
13
+ ## [v1.6.0-beta.1](https://github.com/dyka3773/mvn-tree-visualizer/releases/tag/v1.6.0-beta.1) - 2025-07-24
14
+
15
+ <small>[Compare with v1.5.2](https://github.com/dyka3773/mvn-tree-visualizer/compare/v1.5.2...v1.6.0-beta.1)</small>
16
+
17
+ ### Features
18
+
19
+ - add beta release support for develop branch ([e578499](https://github.com/dyka3773/mvn-tree-visualizer/commit/e5784991ae136242fd4c8ddb929704f2b6f77616) by Hercules Konsoulas).
20
+
21
+ ### Bug Fixes
22
+
23
+ - implement comprehensive changelog generation with git-changelog ([17e0c89](https://github.com/dyka3773/mvn-tree-visualizer/commit/17e0c894dfaff23ab464be52c9e1df8ac4bf71bc) by Hercules Konsoulas).
24
+
25
+ ## [v1.5.2](https://github.com/dyka3773/mvn-tree-visualizer/releases/tag/v1.5.2) - 2025-07-24
26
+
27
+ <small>[Compare with v1.5.1](https://github.com/dyka3773/mvn-tree-visualizer/compare/v1.5.1...v1.5.2)</small>
28
+
29
+ ### Bug Fixes
30
+
31
+ - enable automatic changelog generation in semantic release ([c10460e](https://github.com/dyka3773/mvn-tree-visualizer/commit/c10460e09e96510ae95e795dafae53ac28230c50) by Hercules Konsoulas).
32
+
33
+ ## [v1.5.1](https://github.com/dyka3773/mvn-tree-visualizer/releases/tag/v1.5.1) - 2025-07-21
34
+
35
+ <small>[Compare with v1.5.0](https://github.com/dyka3773/mvn-tree-visualizer/compare/v1.5.0...v1.5.1)</small>
36
+
37
+ ### Bug Fixes
38
+
39
+ - resolve an issue causing similar duplicate logs ([e861008](https://github.com/dyka3773/mvn-tree-visualizer/commit/e86100867de380ea37ff49a8b4d4659486bd7046) by Hercules Konsoulas).
40
+
41
+ ### Code Refactoring
42
+
43
+ - remove unused and wrong imports ([3051ea2](https://github.com/dyka3773/mvn-tree-visualizer/commit/3051ea20b9f40f40c97a5b3aed5a67c167b75a99) by Hercules Konsoulas).
44
+
45
+ ## [v1.5.0](https://github.com/dyka3773/mvn-tree-visualizer/releases/tag/v1.5.0) - 2025-07-19
46
+
47
+ <small>[Compare with v1.4.0](https://github.com/dyka3773/mvn-tree-visualizer/compare/v1.4.0...v1.5.0)</small>
48
+
49
+ ### Features
50
+
51
+ - resolve GitHub issue #7 with enhanced large project support ([3b3b14e](https://github.com/dyka3773/mvn-tree-visualizer/commit/3b3b14e88608c4b1c64295bbf786a898e3b600be) by Hercules Konsoulas).
52
+
53
+ ### Code Refactoring
54
+
55
+ - updated another test to stay consistent with the previous commits ([01a100f](https://github.com/dyka3773/mvn-tree-visualizer/commit/01a100f01587a3f2b43eaa9b6859d7c77e849202) by Hercules Konsoulas).
56
+ - centralize all magic numbers into shared constants module ([e3ee53c](https://github.com/dyka3773/mvn-tree-visualizer/commit/e3ee53cd99f146ca56265ea54c1ea3389ee1e1d8) by Hercules Konsoulas).
57
+ - extract hardcoded magic numbers to named constants ([f1f6734](https://github.com/dyka3773/mvn-tree-visualizer/commit/f1f67347b401959d1700e2da36632e1eb87e6a34) by Hercules Konsoulas).
58
+ - fix to previous commit ([2652892](https://github.com/dyka3773/mvn-tree-visualizer/commit/265289286eafe94f3aeef649ed6856c587061941) by Hercules Konsoulas).
59
+ - extract zoom configuration values to constants ([b2d506e](https://github.com/dyka3773/mvn-tree-visualizer/commit/b2d506e7446e79e998be3bc6bd000930a7cab78c) by Hercules Konsoulas).
60
+
61
+ ## [v1.4.0](https://github.com/dyka3773/mvn-tree-visualizer/releases/tag/v1.4.0) - 2025-07-17
62
+
63
+ <small>[Compare with v1.3.0](https://github.com/dyka3773/mvn-tree-visualizer/compare/v1.3.0...v1.4.0)</small>
64
+
65
+ ### Features
66
+
67
+ - add theme system with minimal and dark themes ([649e317](https://github.com/dyka3773/mvn-tree-visualizer/commit/649e317dac9531cc16b03cba3602994188468bf9) by Hercules Konsoulas).
68
+
69
+ ## [v1.3.0](https://github.com/dyka3773/mvn-tree-visualizer/releases/tag/v1.3.0) - 2025-07-16
70
+
71
+ <small>[Compare with v1.2.0](https://github.com/dyka3773/mvn-tree-visualizer/compare/v1.2.0...v1.3.0)</small>
72
+
73
+ ### Features
74
+
75
+ - implement automated release system ([e8fc847](https://github.com/dyka3773/mvn-tree-visualizer/commit/e8fc8472ecbc3ebc7376b07f43aae63a27f299bc) by Hercules Konsoulas).
76
+ - implement v1.3.0 user experience improvements ([2b87699](https://github.com/dyka3773/mvn-tree-visualizer/commit/2b8769903c34527542ee491ea9ac58f46e439e23) by Hercules Konsoulas).
77
+ - enhance error handling and refactor code organization ([c4a183c](https://github.com/dyka3773/mvn-tree-visualizer/commit/c4a183c59380c30d6fe74e8609fc5eb706e88c85) by Hercules Konsoulas).
78
+ - transform repository into professional open-source project ([4ceebdc](https://github.com/dyka3773/mvn-tree-visualizer/commit/4ceebdc886c87eb0d9852259a3aa06d0bc610ab2) by Hercules Konsoulas).
79
+
80
+ ### Bug Fixes
81
+
82
+ - install build module within semantic-release build command ([cd5718d](https://github.com/dyka3773/mvn-tree-visualizer/commit/cd5718d56cd91934b55285c46713bb6cd738b4fa) by Hercules Konsoulas).
83
+ - ensure build tools available for semantic-release action ([e2db367](https://github.com/dyka3773/mvn-tree-visualizer/commit/e2db367f3ebd14768eee5efc5d7515fab0f48c1c) by Hercules Konsoulas).
84
+ - use uv run for build command in semantic-release ([bc5857b](https://github.com/dyka3773/mvn-tree-visualizer/commit/bc5857b080224b2489542470bff9beabf84b59fa) by Hercules Konsoulas).
85
+ - add missing ruff dependency for CI linting ([675d892](https://github.com/dyka3773/mvn-tree-visualizer/commit/675d89209db91d0bbf234b7872a5a1893d81b729) by Hercules Konsoulas).
86
+ - corrected funding link ([13c76c4](https://github.com/dyka3773/mvn-tree-visualizer/commit/13c76c4ad99ead6ecb5d7471c07b5ea5a22ffc8f) by Hercules Konsoulas).
87
+ - install pytest separately in CI to resolve command not found error ([1a99192](https://github.com/dyka3773/mvn-tree-visualizer/commit/1a991927a9d94a405170d93660b62f89513e0056) by Hercules Konsoulas).
88
+ - update JSON tests to match show_versions=False default ([88bcf95](https://github.com/dyka3773/mvn-tree-visualizer/commit/88bcf951f08243c97ddf8d3f3fa4c26e3f7de41d) by Hercules Konsoulas).
89
+
90
+ ### Code Refactoring
91
+
92
+ - add watch mode and standardize JSON output format ([c1a6e14](https://github.com/dyka3773/mvn-tree-visualizer/commit/c1a6e143120031b4f9cf2417cb5db32a35899ddb) by Hercules Konsoulas).
93
+
94
+ ## [v1.2.0](https://github.com/dyka3773/mvn-tree-visualizer/releases/tag/v1.2.0) - 2025-07-08
95
+
96
+ <small>[Compare with v1.1.0](https://github.com/dyka3773/mvn-tree-visualizer/compare/v1.1.0...v1.2.0)</small>
97
+
98
+ ### Features
99
+
100
+ - add --show-versions flag for both HTML and JSON outputs ([80c7d10](https://github.com/dyka3773/mvn-tree-visualizer/commit/80c7d1089e21c3a345bdc9a61242ed1233605a0e) by Hercules Konsoulas).
101
+ - add comprehensive type hints to improve code quality ([b9b9da5](https://github.com/dyka3773/mvn-tree-visualizer/commit/b9b9da5a48b3c40feeca40de0c69eef3316afc7f) by Hercules Konsoulas).
102
+
103
+ ### Bug Fixes
104
+
105
+ - Correct dependency installation in workflow ([3e500fc](https://github.com/dyka3773/mvn-tree-visualizer/commit/3e500fc76927b736a0f529ad8b2261b6735b949d) by Hercules Konsoulas).
106
+
107
+ ## [v1.1.0](https://github.com/dyka3773/mvn-tree-visualizer/releases/tag/v1.1.0) - 2025-07-08
108
+
109
+ <small>[Compare with first commit](https://github.com/dyka3773/mvn-tree-visualizer/compare/58ba414323de8d69f0f80a514cf9bb14f40fa22c...v1.1.0)</small>
110
+
111
+ ### Features
112
+
113
+ - Add JSON output and decouple output logic ([e6cd138](https://github.com/dyka3773/mvn-tree-visualizer/commit/e6cd13836f93221f2dbd334574ca614d7dbe0e4a) by Hercules Konsoulas).
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mvn-tree-visualizer
3
- Version: 1.6.0b1
3
+ Version: 1.7.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>
@@ -10,10 +10,13 @@ Keywords: cli,command-line,dependency,graph,maven,mermaid,tool,tree,visualizatio
10
10
  Classifier: Development Status :: 4 - Beta
11
11
  Classifier: Intended Audience :: Developers
12
12
  Classifier: Programming Language :: Python :: 3
13
+ Classifier: Programming Language :: Python :: 3.10
14
+ Classifier: Programming Language :: Python :: 3.11
15
+ Classifier: Programming Language :: Python :: 3.12
13
16
  Classifier: Programming Language :: Python :: 3.13
14
17
  Classifier: Topic :: Software Development :: Build Tools
15
18
  Classifier: Typing :: Typed
16
- Requires-Python: >=3.13
19
+ Requires-Python: >=3.10
17
20
  Requires-Dist: jinja2>=3.1.6
18
21
  Requires-Dist: watchdog>=6.0.0
19
22
  Description-Content-Type: text/markdown
@@ -21,7 +24,7 @@ Description-Content-Type: text/markdown
21
24
  # Maven Dependency Tree Visualizer
22
25
 
23
26
  [![PyPI version](https://badge.fury.io/py/mvn-tree-visualizer.svg)](https://badge.fury.io/py/mvn-tree-visualizer)
24
- ![Python](https://img.shields.io/badge/python-3.13+-blue.svg)
27
+ ![Python](https://img.shields.io/badge/python-3.10%20|%203.11%20|%203.12%20|%203.13-blue.svg)
25
28
  ![License](https://img.shields.io/badge/license-MIT-green.svg)
26
29
  [![Downloads](https://pepy.tech/badge/mvn-tree-visualizer)](https://pepy.tech/project/mvn-tree-visualizer)
27
30
  [![CI](https://github.com/dyka3773/mvn-tree-visualizer/workflows/CI/badge.svg)](https://github.com/dyka3773/mvn-tree-visualizer/actions)
@@ -112,6 +115,15 @@ mvn-tree-visualizer --filename "maven_dependency_file" --output "dependencies.js
112
115
  mvn-tree-visualizer --filename "maven_dependency_file" --output "diagram.html" --watch
113
116
  ```
114
117
 
118
+ #### Quiet Mode (For Automation/Scripts)
119
+ ```bash
120
+ # Only show errors, suppress success messages
121
+ mvn-tree-visualizer --filename "maven_dependency_file" --output "diagram.html" --quiet
122
+
123
+ # Short form also available
124
+ mvn-tree-visualizer --filename "maven_dependency_file" --output "diagram.html" -q
125
+ ```
126
+
115
127
  > **💡 Tip:** In watch mode, the tool will monitor for changes to your Maven dependency files and automatically regenerate the diagram. Perfect for development workflows! Press `Ctrl+C` to stop watching.
116
128
 
117
129
  ### Step 3: View the output
@@ -143,6 +155,8 @@ Each example includes:
143
155
  | `--watch` | Watch for file changes and auto-regenerate diagram | `False` |
144
156
  | `--directory` | The directory to scan for the Maven dependency file(s) | current directory |
145
157
  | `--keep-tree` | Keep the intermediate `dependency_tree.txt` file | `False` |
158
+ | `--quiet`, `-q` | Suppress all console output except errors | `False` |
159
+ | `--version`, `-v` | Show the current version and exit | - |
146
160
  | `--help` | Show the help message and exit | - |
147
161
 
148
162
  ### Theme Options
@@ -1,7 +1,7 @@
1
1
  # Maven Dependency Tree Visualizer
2
2
 
3
3
  [![PyPI version](https://badge.fury.io/py/mvn-tree-visualizer.svg)](https://badge.fury.io/py/mvn-tree-visualizer)
4
- ![Python](https://img.shields.io/badge/python-3.13+-blue.svg)
4
+ ![Python](https://img.shields.io/badge/python-3.10%20|%203.11%20|%203.12%20|%203.13-blue.svg)
5
5
  ![License](https://img.shields.io/badge/license-MIT-green.svg)
6
6
  [![Downloads](https://pepy.tech/badge/mvn-tree-visualizer)](https://pepy.tech/project/mvn-tree-visualizer)
7
7
  [![CI](https://github.com/dyka3773/mvn-tree-visualizer/workflows/CI/badge.svg)](https://github.com/dyka3773/mvn-tree-visualizer/actions)
@@ -92,6 +92,15 @@ mvn-tree-visualizer --filename "maven_dependency_file" --output "dependencies.js
92
92
  mvn-tree-visualizer --filename "maven_dependency_file" --output "diagram.html" --watch
93
93
  ```
94
94
 
95
+ #### Quiet Mode (For Automation/Scripts)
96
+ ```bash
97
+ # Only show errors, suppress success messages
98
+ mvn-tree-visualizer --filename "maven_dependency_file" --output "diagram.html" --quiet
99
+
100
+ # Short form also available
101
+ mvn-tree-visualizer --filename "maven_dependency_file" --output "diagram.html" -q
102
+ ```
103
+
95
104
  > **💡 Tip:** In watch mode, the tool will monitor for changes to your Maven dependency files and automatically regenerate the diagram. Perfect for development workflows! Press `Ctrl+C` to stop watching.
96
105
 
97
106
  ### Step 3: View the output
@@ -123,6 +132,8 @@ Each example includes:
123
132
  | `--watch` | Watch for file changes and auto-regenerate diagram | `False` |
124
133
  | `--directory` | The directory to scan for the Maven dependency file(s) | current directory |
125
134
  | `--keep-tree` | Keep the intermediate `dependency_tree.txt` file | `False` |
135
+ | `--quiet`, `-q` | Suppress all console output except errors | `False` |
136
+ | `--version`, `-v` | Show the current version and exit | - |
126
137
  | `--help` | Show the help message and exit | - |
127
138
 
128
139
  ### Theme Options
@@ -89,24 +89,6 @@ When the release PR is merged to `master`, the automation triggers:
89
89
  7. **Publishes to PyPI** automatically
90
90
  8. **Creates GitHub release** with generated release notes
91
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
92
  ## Monitoring Releases
111
93
 
112
94
  ### Check Release Status:
@@ -144,21 +126,6 @@ minor_tags = ["feat"]
144
126
  patch_tags = ["fix", "perf"]
145
127
  ```
146
128
 
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
129
  ## Emergency Procedures
163
130
 
164
131
  ### Rollback a Release:
@@ -0,0 +1,119 @@
1
+ # Project Roadmap
2
+
3
+ This document outlines the evolution and future direction of the `mvn-tree-visualizer` project. Major milestones show the progression from a basic tool to an enterprise-ready solution.
4
+
5
+ ## 🎉 Recently Completed ✅
6
+
7
+ ### v1.6.0 - Mistake Release (Released)
8
+
9
+ **Focus:** Enhance automatic documentation generation and prerelease configs
10
+
11
+ **Status:** Released July 24, 2025
12
+
13
+ ### Previous Major Releases ✅
14
+
15
+ * **v1.5 - GitHub Issue #7 Resolution and Navigation Enhancements** (July 19, 2025)
16
+ * [x] **Support for Massive Dependency Trees**: Enhanced Mermaid configuration with `maxTextSize: 900000000` and `maxEdges: 20000`
17
+ * [x] **Advanced Zoom Controls**: 50x zoom range with smooth mouse wheel support
18
+ * [x] **Keyboard Shortcuts**: `Ctrl+R` for reset, `+/-` for zoom, `Ctrl+S` for download
19
+
20
+ * **v1.4 - Visual and Theme Enhancements** (July 17, 2025)
21
+ * [x] Professional minimal and dark themes
22
+ * [x] Enhanced HTML templates with interactive features
23
+ * [x] SVG download functionality and improved user experience
24
+
25
+ * **v1.3 - User Experience Improvements** (July 9, 2025)
26
+ * [x] Watch mode functionality with `--watch` flag
27
+ * [x] Enhanced error handling system with comprehensive guidance
28
+ * [x] Custom exception classes and validation modules
29
+ * [x] Comprehensive test coverage and modular organization
30
+
31
+ * **Core Foundation** (Earlier versions)
32
+ * [x] Multiple output formats (HTML and JSON)
33
+ * [x] Dependency version display with `--show-versions`
34
+ * [x] Multi-module Maven project support
35
+ * [x] CI/CD workflows and comprehensive documentation
36
+ * [x] `--theme` option with multiple built-in themes (default/minimal, dark, light)
37
+ ## 🔮 Future Development
38
+
39
+ ### Candidate Features for Upcoming Releases
40
+
41
+ **Philosophy:** Small, practical improvements that provide immediate value to users. Features will be selected based on user feedback, development bandwidth, and priority.
42
+
43
+ #### Essential CLI Features
44
+ * [ ] **`--quiet` / `-q` flag:** Suppress all console output except errors
45
+ * **Use Case:** Perfect for CI/CD pipelines and scripted usage
46
+ * [ ] **`--version` / `-v` flag:** Display the current version of the tool
47
+ * **Use Case:** Essential for any CLI tool, currently missing
48
+
49
+ #### User Experience Enhancements
50
+ * [ ] **Alternative output filename patterns:** `--timestamp-output` flag to auto-append timestamp
51
+ * **Use Case:** Useful for version tracking (e.g., `diagram-2025-08-01-143022.html`)
52
+ * [ ] **`--open` flag:** Automatically open generated diagram in default browser
53
+ * **Implementation:** Platform-agnostic using Python's `webbrowser` module
54
+ * [ ] **Custom title support:** `--title "My Project Dependencies"`
55
+ * **Use Case:** Personalize diagrams with meaningful project names
56
+ * [ ] **Progress indicators:** Simple feedback during long operations
57
+ * **Implementation:** "Parsing dependencies..." → "Generating diagram..." → "Done!"
58
+
59
+ #### Configuration & Customization
60
+ * [ ] **Configuration file support:** `.mvnviz.conf` file for default options
61
+ * **Use Case:** Avoid typing same flags repeatedly, team consistency
62
+ * [ ] **`--exclude-scopes` option:** Filter out test, provided, or other scopes
63
+ * [ ] **`--max-depth` option:** Limit dependency tree depth for overview mode
64
+
65
+ #### Output & Analysis Improvements
66
+ * [ ] **Basic dependency statistics:** Show total counts in CLI output and HTML comments
67
+
68
+ #### Enterprise & Integration Features
69
+ * [ ] **Docker container:** Official container images for CI/CD
70
+ * [ ] **GitHub Actions integration:** Pre-built actions for automated diagram generation
71
+
72
+ ## 🎯 Technical Debt & Maintenance
73
+
74
+ ### Ongoing Improvements
75
+ * **Performance Optimization:** Continuous improvements for larger and more complex projects
76
+ * **Browser Compatibility:** Ensure compatibility with all major browsers and versions
77
+ * **Accessibility:** Enhanced accessibility features for users with disabilities
78
+ * **Documentation:** Comprehensive API documentation and developer guides
79
+
80
+ ### Code Quality
81
+ * **Test Coverage:** Maintain high test coverage with focus on edge cases
82
+ * **Type Safety:** Full type annotation coverage and strict type checking
83
+ * **Security:** Regular security audits and dependency updates
84
+ * **Performance:** Continuous profiling and optimization of critical paths
85
+
86
+ **Focus:** Advanced analysis and integration features.
87
+
88
+ * **Dependency Analysis:**
89
+ * [ ] Dependency conflict detection and highlighting
90
+ * [ ] Dependency statistics and analysis
91
+ * [ ] Version mismatch warnings
92
+ * **Integration Capabilities:**
93
+ * [ ] CI/CD pipeline integration examples
94
+ * [ ] Docker support and containerization
95
+ * [ ] Maven plugin version (if demand exists)
96
+
97
+ ## Long-Term Vision (6-12 Months+)
98
+
99
+ * **Web-Based Version:** A web-based version where users can paste their dependency tree and get a visualization without installing the CLI.
100
+ * **IDE Integration:** Plugins for VS Code, IntelliJ IDEA, or Eclipse for direct dependency visualization.
101
+ * **Multi-Language Support:** Extend beyond Maven to support Gradle, npm, pip, etc.
102
+
103
+ ## Release Strategy
104
+
105
+ Each release follows this approach:
106
+ - **Incremental Value:** Each version adds meaningful value without breaking existing functionality
107
+ - **User-Driven:** Priority based on user feedback and common pain points
108
+ - **Quality First:** New features include comprehensive tests and documentation
109
+ - **Backward Compatibility:** CLI interface remains stable across minor versions
110
+ - **Small & Focused:** Features are kept small and manageable for faster delivery
111
+ - **Feature Selection:** Features are chosen from the candidate list based on current priorities and available development time
112
+
113
+ ## Contributing
114
+
115
+ If you're interested in contributing to any of these features, please check out our [CONTRIBUTING.md](CONTRIBUTING.md) file for more information.
116
+
117
+ ---
118
+
119
+ *Last updated: August 1, 2025*
@@ -1,12 +1,12 @@
1
1
  [project]
2
2
  name = "mvn-tree-visualizer"
3
- version = "1.6.0-beta.1"
3
+ version = "1.7.0"
4
4
  authors = [
5
5
  { name = "Iraklis Konsoulas", email = "dyka3773@gmail.com" },
6
6
  ]
7
7
  description = "A simple command line tool to visualize the dependency tree of a Maven project in a graphical format."
8
8
  readme = "README.md"
9
- requires-python = ">=3.13"
9
+ requires-python = ">=3.10"
10
10
  license = "MIT"
11
11
  keywords = [
12
12
  "maven",
@@ -23,6 +23,9 @@ classifiers = [
23
23
  "Development Status :: 4 - Beta",
24
24
  "Intended Audience :: Developers",
25
25
  "Programming Language :: Python :: 3",
26
+ "Programming Language :: Python :: 3.10",
27
+ "Programming Language :: Python :: 3.11",
28
+ "Programming Language :: Python :: 3.12",
26
29
  "Programming Language :: Python :: 3.13",
27
30
  "Topic :: Software Development :: Build Tools",
28
31
  "Typing :: Typed",
@@ -41,11 +44,11 @@ mvn-tree-visualizer = "mvn_tree_visualizer.cli:cli"
41
44
  [dependency-groups]
42
45
  dev = [
43
46
  "twine>=6.1.0",
44
- "ruff>=0.12.3",
45
- "pytest>=8.3.2",
46
47
  "python-semantic-release>=10.2.0",
47
48
  "build>=1.0.0",
48
49
  "git-changelog>=2.5.3",
50
+ "tox>=4.28.4",
51
+ "pytest>=8.4.1",
49
52
  ]
50
53
 
51
54
  [build-system]
@@ -67,11 +70,6 @@ remove_dist = false
67
70
  match = "master"
68
71
  prerelease = false
69
72
 
70
- [tool.semantic_release.branches.develop]
71
- match = "develop"
72
- prerelease = true
73
- prerelease_token = "beta"
74
-
75
73
  [tool.semantic_release.commit_parser_options]
76
74
  allowed_tags = ["build", "chore", "ci", "docs", "feat", "fix", "perf", "style", "refactor", "test"]
77
75
  minor_tags = ["feat"]
@@ -92,3 +90,21 @@ sections = [
92
90
  {type = "test", section = "Tests", scopes = []},
93
91
  {type = "style", section = "Style", scopes = []},
94
92
  ]
93
+
94
+ [tool.tox]
95
+ env_list = ["lint", "3.10", "3.11", "3.12", "3.13"]
96
+
97
+ [tool.tox.env_run_base]
98
+ description = "Run tests with the current Python version"
99
+ deps = [
100
+ "pytest>=8.3.2",
101
+ ]
102
+ commands = [[ "pytest", "-v" ]]
103
+
104
+ [tool.tox.env.lint]
105
+ description = "Lint the codebase with ruff"
106
+ deps = [
107
+ "ruff>=0.12.3",
108
+ ]
109
+ skip_install = true
110
+ commands = [[ "ruff", "check", "src/", "tests/" ]]
@@ -1,5 +1,8 @@
1
1
  import argparse
2
+ import sys
2
3
  import time
4
+ import traceback
5
+ from importlib import metadata
3
6
  from pathlib import Path
4
7
  from typing import NoReturn
5
8
 
@@ -12,6 +15,14 @@ from .outputs.json_output import create_json_output
12
15
  from .validation import find_dependency_files, validate_dependency_files, validate_output_directory
13
16
 
14
17
 
18
+ def get_version() -> str:
19
+ """Get the current version of the package."""
20
+ try:
21
+ return metadata.version("mvn-tree-visualizer")
22
+ except metadata.PackageNotFoundError:
23
+ return "unknown"
24
+
25
+
15
26
  def generate_diagram(
16
27
  directory: str,
17
28
  output_file: str,
@@ -20,6 +31,7 @@ def generate_diagram(
20
31
  output_format: str,
21
32
  show_versions: bool,
22
33
  theme: str = "minimal",
34
+ quiet: bool = False,
23
35
  ) -> None:
24
36
  """Generate the dependency diagram with comprehensive error handling."""
25
37
  timestamp = time.strftime("%H:%M:%S")
@@ -31,7 +43,7 @@ def generate_diagram(
31
43
 
32
44
  # Show what files we found
33
45
  dependency_files = find_dependency_files(directory, filename)
34
- if len(dependency_files) > 1:
46
+ if len(dependency_files) > 1 and not quiet:
35
47
  print(f"[{timestamp}] Found {len(dependency_files)} dependency files")
36
48
 
37
49
  # Setup paths
@@ -103,24 +115,27 @@ def generate_diagram(
103
115
  except Exception as e:
104
116
  raise OutputGenerationError(f"Error generating {output_format.upper()} output: {e}")
105
117
 
106
- print(f"[{timestamp}] Diagram generated and saved to {output_file}")
118
+ if not quiet:
119
+ print(f"[{timestamp}] SUCCESS: Diagram generated and saved to {output_file}")
107
120
 
108
121
  except MvnTreeVisualizerError as e:
109
122
  # Our custom errors already have helpful messages
110
- print(f"[{timestamp}] ❌ Error: {e}")
123
+ print(f"[{timestamp}] ERROR: {e}", file=sys.stderr)
124
+ raise # Re-raise the exception for the caller to handle
111
125
  except KeyboardInterrupt:
112
- print(f"\n[{timestamp}] ⏹️ Operation cancelled by user")
126
+ print(f"\n[{timestamp}] Operation cancelled by user", file=sys.stderr)
127
+ raise # Re-raise for the caller to handle
113
128
  except Exception as e:
114
129
  # Unexpected errors
115
- print(f"[{timestamp}] Unexpected error: {e}")
116
- print("This is an internal error. Please report this issue with the following details:")
117
- print(f" - Directory: {directory}")
118
- print(f" - Filename: {filename}")
119
- print(f" - Output: {output_file}")
120
- print(f" - Format: {output_format}")
121
- import traceback
130
+ print(f"[{timestamp}] UNEXPECTED ERROR: {e}", file=sys.stderr)
131
+ print("This is an internal error. Please report this issue with the following details:", file=sys.stderr)
132
+ print(f" - Directory: {directory}", file=sys.stderr)
133
+ print(f" - Filename: {filename}", file=sys.stderr)
134
+ print(f" - Output: {output_file}", file=sys.stderr)
135
+ print(f" - Format: {output_format}", file=sys.stderr)
122
136
 
123
137
  traceback.print_exc()
138
+ raise # Re-raise for the caller to handle
124
139
 
125
140
 
126
141
  def cli() -> NoReturn:
@@ -128,6 +143,14 @@ def cli() -> NoReturn:
128
143
  prog="mvn-tree-visualizer",
129
144
  description="Generate a dependency diagram from a file.",
130
145
  )
146
+
147
+ parser.add_argument(
148
+ "-v",
149
+ "--version",
150
+ action="version",
151
+ version=f"mvn-tree-visualizer {get_version()}",
152
+ )
153
+
131
154
  parser.add_argument(
132
155
  "directory",
133
156
  type=str,
@@ -186,6 +209,13 @@ def cli() -> NoReturn:
186
209
  help="Theme for the diagram visualization. Default is 'minimal'.",
187
210
  )
188
211
 
212
+ parser.add_argument(
213
+ "-q",
214
+ "--quiet",
215
+ action="store_true",
216
+ help="Suppress all console output except errors. Perfect for CI/CD pipelines and scripted usage.",
217
+ )
218
+
189
219
  args = parser.parse_args()
190
220
  directory: str = args.directory
191
221
  output_file: str = args.output
@@ -195,20 +225,37 @@ def cli() -> NoReturn:
195
225
  show_versions: bool = args.show_versions
196
226
  watch_mode: bool = args.watch
197
227
  theme: str = args.theme
228
+ quiet: bool = args.quiet
198
229
 
199
230
  # Generate initial diagram
200
- print("Generating initial diagram...")
201
- generate_diagram(directory, output_file, filename, keep_tree, output_format, show_versions, theme)
231
+ if not quiet:
232
+ timestamp = time.strftime("%Y-%m-%d %H:%M:%S")
233
+ print(f"[{timestamp}] Generating initial diagram...")
234
+
235
+ try:
236
+ generate_diagram(directory, output_file, filename, keep_tree, output_format, show_versions, theme, quiet)
237
+ except MvnTreeVisualizerError:
238
+ sys.exit(1)
239
+ except KeyboardInterrupt:
240
+ sys.exit(130) # Standard exit code for SIGINT
241
+ except Exception:
242
+ sys.exit(1)
202
243
 
203
244
  if not watch_mode:
204
- print("You can open it in your browser to view the dependency tree.")
205
- print("Thank you for using mvn-tree-visualizer!")
245
+ if not quiet:
246
+ print("You can open it in your browser to view the dependency tree.")
247
+ print("Thank you for using mvn-tree-visualizer!")
206
248
  return
207
249
 
208
250
  # Watch mode
209
251
  def regenerate_callback():
210
252
  """Callback function for file watcher."""
211
- generate_diagram(directory, output_file, filename, keep_tree, output_format, show_versions, theme)
253
+ try:
254
+ generate_diagram(directory, output_file, filename, keep_tree, output_format, show_versions, theme, quiet)
255
+ except Exception:
256
+ # In watch mode, we don't want to exit on errors, just log them
257
+ print("Error during diagram regeneration:", file=sys.stderr)
258
+ traceback.print_exc()
212
259
 
213
260
  watcher = FileWatcher(directory, filename, regenerate_callback)
214
261
  watcher.start()
@@ -216,7 +263,8 @@ def cli() -> NoReturn:
216
263
  try:
217
264
  watcher.wait()
218
265
  finally:
219
- print("Thank you for using mvn-tree-visualizer!")
266
+ if not quiet:
267
+ print("Thank you for using mvn-tree-visualizer!")
220
268
 
221
269
 
222
270
  if __name__ == "__main__":