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.
- mvn_tree_visualizer-1.7.0/.github/workflows/ci.yml +35 -0
- {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/.github/workflows/release.yml +1 -9
- mvn_tree_visualizer-1.7.0/CHANGELOG.md +113 -0
- {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/PKG-INFO +17 -3
- {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/README.md +12 -1
- {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/RELEASE.md +0 -33
- mvn_tree_visualizer-1.7.0/ROADMAP.md +119 -0
- {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/pyproject.toml +25 -9
- {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/src/mvn_tree_visualizer/cli.py +65 -17
- mvn_tree_visualizer-1.7.0/tests/test_cli.py +322 -0
- {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/tests/test_watch_mode.py +45 -37
- mvn_tree_visualizer-1.7.0/uv.lock +1202 -0
- mvn_tree_visualizer-1.6.0b1/.github/copilot-instructions.md +0 -87
- mvn_tree_visualizer-1.6.0b1/.github/workflows/ci.yml +0 -38
- mvn_tree_visualizer-1.6.0b1/CHANGELOG.md +0 -109
- mvn_tree_visualizer-1.6.0b1/ROADMAP.md +0 -149
- mvn_tree_visualizer-1.6.0b1/issues.md +0 -79
- mvn_tree_visualizer-1.6.0b1/uv.lock +0 -838
- {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/.github/FUNDING.yml +0 -0
- {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/.github/ISSUE_TEMPLATE/question.md +0 -0
- {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/.github/SECURITY.md +0 -0
- {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/.github/dependabot.yml +0 -0
- {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/.gitignore +0 -0
- {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/.python-version +0 -0
- {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/CODE_OF_CONDUCT.md +0 -0
- {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/CONTRIBUTING.md +0 -0
- {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/LICENSE +0 -0
- {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/docs/INTEGRATION.md +0 -0
- {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/docs/README.md +0 -0
- {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/docs/THEMES.md +0 -0
- {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/examples/README.md +0 -0
- {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/examples/complex-project/diagram-dark.html +0 -0
- {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/examples/complex-project/diagram-minimal.html +0 -0
- {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/examples/complex-project/maven_dependency_file +0 -0
- {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/examples/simple-project/dependencies.json +0 -0
- {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/examples/simple-project/diagram-dark.html +0 -0
- {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/examples/simple-project/diagram-minimal.html +0 -0
- {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/examples/simple-project/maven_dependency_file +0 -0
- {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/examples/watch-test/README.md +0 -0
- {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/examples/watch-test/test_maven_file +0 -0
- {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/ruff.toml +0 -0
- {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/src/mvn_tree_visualizer/__init__.py +0 -0
- {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/src/mvn_tree_visualizer/__main__.py +0 -0
- {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/src/mvn_tree_visualizer/diagram.py +0 -0
- {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/src/mvn_tree_visualizer/enhanced_template.py +0 -0
- {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/src/mvn_tree_visualizer/exceptions.py +0 -0
- {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/src/mvn_tree_visualizer/file_watcher.py +0 -0
- {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/src/mvn_tree_visualizer/get_dependencies_in_one_file.py +0 -0
- {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/src/mvn_tree_visualizer/outputs/html_output.py +0 -0
- {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/src/mvn_tree_visualizer/outputs/json_output.py +0 -0
- {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/src/mvn_tree_visualizer/themes.py +0 -0
- {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/src/mvn_tree_visualizer/validation.py +0 -0
- {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/tests/test_github_issue_7.py +0 -0
- {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/tests/test_html_output.py +0 -0
- {mvn_tree_visualizer-1.6.0b1 → mvn_tree_visualizer-1.7.0}/tests/test_json_output.py +0 -0
- {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
|
|
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.
|
|
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.
|
|
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
|
[](https://badge.fury.io/py/mvn-tree-visualizer)
|
|
24
|
-

|
|
25
28
|

|
|
26
29
|
[](https://pepy.tech/project/mvn-tree-visualizer)
|
|
27
30
|
[](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
|
[](https://badge.fury.io/py/mvn-tree-visualizer)
|
|
4
|
-

|
|
5
5
|

|
|
6
6
|
[](https://pepy.tech/project/mvn-tree-visualizer)
|
|
7
7
|
[](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.
|
|
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.
|
|
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
|
-
|
|
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}]
|
|
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}]
|
|
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}]
|
|
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
|
-
|
|
201
|
-
|
|
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
|
-
|
|
205
|
-
|
|
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
|
-
|
|
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
|
-
|
|
266
|
+
if not quiet:
|
|
267
|
+
print("Thank you for using mvn-tree-visualizer!")
|
|
220
268
|
|
|
221
269
|
|
|
222
270
|
if __name__ == "__main__":
|