domd 2.2.64__tar.gz → 2.2.65__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 (150) hide show
  1. domd-2.2.65/CHANGELOG.md +243 -0
  2. {domd-2.2.64/src/domd.egg-info → domd-2.2.65}/PKG-INFO +34 -36
  3. domd-2.2.65/VERSION +1 -0
  4. {domd-2.2.64 → domd-2.2.65}/pyproject.toml +5 -4
  5. {domd-2.2.64 → domd-2.2.65}/src/domd/cli/cli.py +20 -20
  6. domd-2.2.65/src/domd/cli/commands/test_commands.py +138 -0
  7. domd-2.2.64/PKG-INFO +0 -843
  8. domd-2.2.64/setup.cfg +0 -53
  9. domd-2.2.64/setup.py +0 -40
  10. domd-2.2.64/src/domd.egg-info/SOURCES.txt +0 -146
  11. domd-2.2.64/src/domd.egg-info/dependency_links.txt +0 -1
  12. domd-2.2.64/src/domd.egg-info/entry_points.txt +0 -5
  13. domd-2.2.64/src/domd.egg-info/requires.txt +0 -19
  14. domd-2.2.64/src/domd.egg-info/top_level.txt +0 -1
  15. domd-2.2.64/tests/test_ansible.py +0 -179
  16. domd-2.2.64/tests/test_ansible_galaxy.py +0 -173
  17. domd-2.2.64/tests/test_ansible_inventory.py +0 -113
  18. domd-2.2.64/tests/test_ansible_playbook.py +0 -124
  19. domd-2.2.64/tests/test_ansible_roles.py +0 -134
  20. domd-2.2.64/tests/test_ansible_vault.py +0 -111
  21. domd-2.2.64/tests/test_cli.py +0 -4
  22. domd-2.2.64/tests/test_command_handling.py +0 -245
  23. domd-2.2.64/tests/test_command_testing.py +0 -201
  24. domd-2.2.64/tests/test_detector.py +0 -1377
  25. domd-2.2.64/tests/test_virtualenv.py +0 -277
  26. {domd-2.2.64 → domd-2.2.65}/LICENSE +0 -0
  27. {domd-2.2.64 → domd-2.2.65}/README.md +0 -0
  28. {domd-2.2.64 → domd-2.2.65}/src/domd/__init__.py +0 -0
  29. {domd-2.2.64 → domd-2.2.65}/src/domd/adapters/__init__.py +0 -0
  30. {domd-2.2.64 → domd-2.2.65}/src/domd/adapters/api/__init__.py +0 -0
  31. {domd-2.2.64 → domd-2.2.65}/src/domd/adapters/api/command_testing.py +0 -0
  32. {domd-2.2.64 → domd-2.2.65}/src/domd/adapters/api/flask_api.py +0 -0
  33. {domd-2.2.64 → domd-2.2.65}/src/domd/adapters/cli/__init__.py +0 -0
  34. {domd-2.2.64 → domd-2.2.65}/src/domd/adapters/cli/command_presenter.py +0 -0
  35. {domd-2.2.64 → domd-2.2.65}/src/domd/adapters/formatters/__init__.py +0 -0
  36. {domd-2.2.64 → domd-2.2.65}/src/domd/adapters/formatters/markdown_formatter.py +0 -0
  37. {domd-2.2.64 → domd-2.2.65}/src/domd/adapters/persistence/__init__.py +0 -0
  38. {domd-2.2.64 → domd-2.2.65}/src/domd/adapters/persistence/in_memory_command_repository.py +0 -0
  39. {domd-2.2.64 → domd-2.2.65}/src/domd/adapters/persistence/shell_command_executor.py +0 -0
  40. {domd-2.2.64 → domd-2.2.65}/src/domd/api.py +0 -0
  41. {domd-2.2.64 → domd-2.2.65}/src/domd/application/__init__.py +0 -0
  42. {domd-2.2.64 → domd-2.2.65}/src/domd/application/factory.py +0 -0
  43. {domd-2.2.64 → domd-2.2.65}/src/domd/cli/__init__.py +0 -0
  44. {domd-2.2.64 → domd-2.2.65}/src/domd/command_execution/__init__.py +0 -0
  45. {domd-2.2.64 → domd-2.2.65}/src/domd/core/__init__.py +0 -0
  46. {domd-2.2.64 → domd-2.2.65}/src/domd/core/command_detection/__init__.py +0 -0
  47. {domd-2.2.64 → domd-2.2.65}/src/domd/core/command_detection/base_detector.py +0 -0
  48. {domd-2.2.64 → domd-2.2.65}/src/domd/core/command_detection/docker_tester.py +0 -0
  49. {domd-2.2.64 → domd-2.2.65}/src/domd/core/command_detection/handlers/__init__.py +0 -0
  50. {domd-2.2.64 → domd-2.2.65}/src/domd/core/command_detection/handlers/command_handler.py +0 -0
  51. {domd-2.2.64 → domd-2.2.65}/src/domd/core/command_detection/handlers/config_handler.py +0 -0
  52. {domd-2.2.64 → domd-2.2.65}/src/domd/core/command_detection/models.py +0 -0
  53. {domd-2.2.64 → domd-2.2.65}/src/domd/core/command_detection/parsers/__init__.py +0 -0
  54. {domd-2.2.64 → domd-2.2.65}/src/domd/core/command_detection/parsers/base_parser.py +0 -0
  55. {domd-2.2.64 → domd-2.2.65}/src/domd/core/command_detection/parsers/parser_registry.py +0 -0
  56. {domd-2.2.64 → domd-2.2.65}/src/domd/core/command_detection/project_detector.py +0 -0
  57. {domd-2.2.64 → domd-2.2.65}/src/domd/core/command_detection/utils/__init__.py +0 -0
  58. {domd-2.2.64 → domd-2.2.65}/src/domd/core/command_detection/utils/file_utils.py +0 -0
  59. {domd-2.2.64 → domd-2.2.65}/src/domd/core/command_detection/utils/virtualenv.py +0 -0
  60. {domd-2.2.64 → domd-2.2.65}/src/domd/core/command_execution/__init__.py +0 -0
  61. {domd-2.2.64 → domd-2.2.65}/src/domd/core/command_execution/command_executor.py +0 -0
  62. {domd-2.2.64 → domd-2.2.65}/src/domd/core/command_execution/command_recorder.py +0 -0
  63. {domd-2.2.64 → domd-2.2.65}/src/domd/core/command_execution/command_runner.py +0 -0
  64. {domd-2.2.64 → domd-2.2.65}/src/domd/core/command_execution/environment_detector.py +0 -0
  65. {domd-2.2.64 → domd-2.2.65}/src/domd/core/command_execution/executor.py +0 -0
  66. {domd-2.2.64 → domd-2.2.65}/src/domd/core/commands/__init__.py +0 -0
  67. {domd-2.2.64 → domd-2.2.65}/src/domd/core/commands/command.py +0 -0
  68. {domd-2.2.64 → domd-2.2.65}/src/domd/core/commands/executor.py +0 -0
  69. {domd-2.2.64 → domd-2.2.65}/src/domd/core/detector.py +0 -0
  70. {domd-2.2.64 → domd-2.2.65}/src/domd/core/domain/__init__.py +0 -0
  71. {domd-2.2.64 → domd-2.2.65}/src/domd/core/domain/command.py +0 -0
  72. {domd-2.2.64 → domd-2.2.65}/src/domd/core/parsers/__init__.py +0 -0
  73. {domd-2.2.64 → domd-2.2.65}/src/domd/core/parsers/ansible_galaxy.py +0 -0
  74. {domd-2.2.64 → domd-2.2.65}/src/domd/core/parsers/ansible_inventory.py +0 -0
  75. {domd-2.2.64 → domd-2.2.65}/src/domd/core/parsers/ansible_playbook.py +0 -0
  76. {domd-2.2.64 → domd-2.2.65}/src/domd/core/parsers/ansible_role.py +0 -0
  77. {domd-2.2.64 → domd-2.2.65}/src/domd/core/parsers/ansible_vault.py +0 -0
  78. {domd-2.2.64 → domd-2.2.65}/src/domd/core/parsers/base.py +0 -0
  79. {domd-2.2.64 → domd-2.2.65}/src/domd/core/parsers/cargo_toml.py +0 -0
  80. {domd-2.2.64 → domd-2.2.65}/src/domd/core/parsers/composer_json.py +0 -0
  81. {domd-2.2.64 → domd-2.2.65}/src/domd/core/parsers/go_mod.py +0 -0
  82. {domd-2.2.64 → domd-2.2.65}/src/domd/core/parsers/makefile.py +0 -0
  83. {domd-2.2.64 → domd-2.2.65}/src/domd/core/parsers/package_json.py +0 -0
  84. {domd-2.2.64 → domd-2.2.65}/src/domd/core/parsers/pyproject_toml.py +0 -0
  85. {domd-2.2.64 → domd-2.2.65}/src/domd/core/parsers/tox_ini.py +0 -0
  86. {domd-2.2.64 → domd-2.2.65}/src/domd/core/parsing/__init__.py +0 -0
  87. {domd-2.2.64 → domd-2.2.65}/src/domd/core/parsing/base.py +0 -0
  88. {domd-2.2.64 → domd-2.2.65}/src/domd/core/parsing/file_processor.py +0 -0
  89. {domd-2.2.64 → domd-2.2.65}/src/domd/core/parsing/parser_registry.py +0 -0
  90. {domd-2.2.64 → domd-2.2.65}/src/domd/core/parsing/pattern_matcher.py +0 -0
  91. {domd-2.2.64 → domd-2.2.65}/src/domd/core/ports/__init__.py +0 -0
  92. {domd-2.2.64 → domd-2.2.65}/src/domd/core/ports/command_executor.py +0 -0
  93. {domd-2.2.64 → domd-2.2.65}/src/domd/core/ports/command_repository.py +0 -0
  94. {domd-2.2.64 → domd-2.2.65}/src/domd/core/ports/report_formatter.py +0 -0
  95. {domd-2.2.64 → domd-2.2.65}/src/domd/core/project_detection/__init__.py +0 -0
  96. {domd-2.2.64 → domd-2.2.65}/src/domd/core/project_detection/command_handling.py +0 -0
  97. {domd-2.2.64 → domd-2.2.65}/src/domd/core/project_detection/config_files.py +0 -0
  98. {domd-2.2.64 → domd-2.2.65}/src/domd/core/project_detection/detector.py +0 -0
  99. {domd-2.2.64 → domd-2.2.65}/src/domd/core/project_detection/virtualenv.py +0 -0
  100. {domd-2.2.64 → domd-2.2.65}/src/domd/core/reporters/__init__.py +0 -0
  101. {domd-2.2.64 → domd-2.2.65}/src/domd/core/reporters/base.py +0 -0
  102. {domd-2.2.64 → domd-2.2.65}/src/domd/core/reporters/done_md.py +0 -0
  103. {domd-2.2.64 → domd-2.2.65}/src/domd/core/reporters/todo_md.py +0 -0
  104. {domd-2.2.64 → domd-2.2.65}/src/domd/core/reporting/__init__.py +0 -0
  105. {domd-2.2.64 → domd-2.2.65}/src/domd/core/reporting/formatters.py +0 -0
  106. {domd-2.2.64 → domd-2.2.65}/src/domd/core/reporting/reporter.py +0 -0
  107. {domd-2.2.64 → domd-2.2.65}/src/domd/core/services/__init__.py +0 -0
  108. {domd-2.2.64 → domd-2.2.65}/src/domd/core/services/command_service.py +0 -0
  109. {domd-2.2.64 → domd-2.2.65}/src/domd/core/services/report_service.py +0 -0
  110. {domd-2.2.64 → domd-2.2.65}/src/domd/core/utils/__init__.py +0 -0
  111. {domd-2.2.64 → domd-2.2.65}/src/domd/core/utils/command_utils.py +0 -0
  112. {domd-2.2.64 → domd-2.2.65}/src/domd/core/utils/environment.py +0 -0
  113. {domd-2.2.64 → domd-2.2.65}/src/domd/core/utils/file_utils.py +0 -0
  114. {domd-2.2.64 → domd-2.2.65}/src/domd/core/utils/logging_utils.py +0 -0
  115. {domd-2.2.64 → domd-2.2.65}/src/domd/core/utils/virtualenv.py +0 -0
  116. {domd-2.2.64 → domd-2.2.65}/src/domd/parsers/__init__.py +0 -0
  117. {domd-2.2.64 → domd-2.2.65}/src/domd/parsers/ansible.py +0 -0
  118. {domd-2.2.64 → domd-2.2.65}/src/domd/parsers/base.py +0 -0
  119. {domd-2.2.64 → domd-2.2.65}/src/domd/parsers/build_systems.py +0 -0
  120. {domd-2.2.64 → domd-2.2.65}/src/domd/parsers/ci_cd.py +0 -0
  121. {domd-2.2.64 → domd-2.2.65}/src/domd/parsers/docker/__init__.py +0 -0
  122. {domd-2.2.64 → domd-2.2.65}/src/domd/parsers/docker/docker_compose.py +0 -0
  123. {domd-2.2.64 → domd-2.2.65}/src/domd/parsers/docker/dockerfile.py +0 -0
  124. {domd-2.2.64 → domd-2.2.65}/src/domd/parsers/docker.py +0 -0
  125. {domd-2.2.64 → domd-2.2.65}/src/domd/parsers/javascript/__init__.py +0 -0
  126. {domd-2.2.64 → domd-2.2.65}/src/domd/parsers/javascript.py +0 -0
  127. {domd-2.2.64 → domd-2.2.65}/src/domd/parsers/markdown_parser.py +0 -0
  128. {domd-2.2.64 → domd-2.2.65}/src/domd/parsers/package_json.py +0 -0
  129. {domd-2.2.64 → domd-2.2.65}/src/domd/parsers/python.py +0 -0
  130. {domd-2.2.64 → domd-2.2.65}/src/domd/parsers/test_build_systems.py +0 -0
  131. {domd-2.2.64 → domd-2.2.65}/src/domd/parsers/test_ci_cd.py +0 -0
  132. {domd-2.2.64 → domd-2.2.65}/src/domd/parsers/test_docker.py +0 -0
  133. {domd-2.2.64 → domd-2.2.65}/src/domd/parsers/test_javascript.py +0 -0
  134. {domd-2.2.64 → domd-2.2.65}/src/domd/parsers/test_python.py +0 -0
  135. {domd-2.2.64 → domd-2.2.65}/src/domd/parsing/__init__.py +0 -0
  136. {domd-2.2.64 → domd-2.2.65}/src/domd/parsing/base.py +0 -0
  137. {domd-2.2.64 → domd-2.2.65}/src/domd/reporters/__init__.py +0 -0
  138. {domd-2.2.64 → domd-2.2.65}/src/domd/reporters/console.py +0 -0
  139. {domd-2.2.64 → domd-2.2.65}/src/domd/reporters/json_reporter.py +0 -0
  140. {domd-2.2.64 → domd-2.2.65}/src/domd/reporters/test_console.py +0 -0
  141. {domd-2.2.64 → domd-2.2.65}/src/domd/reporters/test_json_reporter.py +0 -0
  142. {domd-2.2.64 → domd-2.2.65}/src/domd/reporters/test_todo_md.py +0 -0
  143. {domd-2.2.64 → domd-2.2.65}/src/domd/reporters/todo_md.py +0 -0
  144. {domd-2.2.64 → domd-2.2.65}/src/domd/reporting/__init__.py +0 -0
  145. {domd-2.2.64 → domd-2.2.65}/src/domd/utils/__init__.py +0 -0
  146. {domd-2.2.64 → domd-2.2.65}/src/domd/utils/command_runner.py +0 -0
  147. {domd-2.2.64 → domd-2.2.65}/src/domd/utils/file_utils.py +0 -0
  148. {domd-2.2.64 → domd-2.2.65}/src/domd/utils/path_utils.py +0 -0
  149. {domd-2.2.64 → domd-2.2.65}/src/domd/utils/test_command_runner.py +0 -0
  150. {domd-2.2.64 → domd-2.2.65}/src/domd/utils/test_file_utils.py +0 -0
@@ -0,0 +1,243 @@
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][keep-a-changelog],
6
+ and this project adheres to [Semantic Versioning][semver].
7
+
8
+ [keep-a-changelog]: https://keepachangelog.com/en/1.0.0/
9
+ [semver]: https://semver.org/spec/v2.0.0.html
10
+
11
+ ## [Unreleased] - YYYY-MM-DD
12
+
13
+ ### Added
14
+
15
+ - Placeholder for upcoming features
16
+
17
+ ### Changed
18
+
19
+ - Placeholder for changes in upcoming release
20
+
21
+ ### Deprecated
22
+
23
+ - Placeholder for soon-to-be removed features
24
+
25
+ ### Removed
26
+
27
+ - Placeholder for removed features
28
+
29
+ ### Fixed
30
+
31
+ - Placeholder for bug fixes
32
+
33
+ ### Security
34
+
35
+ - Placeholder for security-related fixes
36
+
37
+ ## [2.2.50] - 2025-06-18
38
+
39
+ ### Fixed
40
+
41
+ - Fixed version inconsistency across the codebase
42
+ - Resolved build issues with package versioning
43
+
44
+ ## [2.2.41] - 2025-06-18
45
+
46
+ ### Added
47
+
48
+ - Web interface for interactive command management
49
+ - Comprehensive documentation for web interface usage
50
+ - Support for custom ports and host binding in web interface
51
+
52
+ ### Changed
53
+
54
+ - Updated version to 2.2.41 for PyPI publication
55
+ - Improved error handling in command detection
56
+ - Enhanced documentation structure and readability
57
+
58
+ ### Fixed
59
+
60
+ - Resolved version mismatch in build artifacts
61
+ - Fixed markdown linting issues in documentation
62
+ - Addressed various code quality and test issues
63
+
64
+ ## [0.1.0] - 2025-06-06
65
+
66
+ ### Features Added in 0.1.0
67
+
68
+ - Initial release of DoMD
69
+ - Project command detection for 15+ project types
70
+ - Support for JavaScript/Node.js projects (package.json, npm scripts)
71
+ - Support for Python projects (pyproject.toml, setup.py, requirements.txt, tox.ini, pytest.ini)
72
+ - Support for build systems (Makefile, CMakeLists.txt, Gradle, Maven)
73
+ - Support for Docker (Dockerfile, docker-compose.yml)
74
+ - Support for CI/CD workflows (GitHub Actions, GitLab CI, Jenkins)
75
+ - Support for other languages (PHP, Ruby, Rust, Go)
76
+ - Command execution with configurable timeouts
77
+ - Detailed error reporting and analysis
78
+ - TODO.md generation with formatted output
79
+ - Multiple output formats (Markdown, JSON, Text)
80
+ - Comprehensive CLI interface with dry-run mode
81
+ - Verbose and quiet logging options
82
+ - Pattern-based file inclusion/exclusion
83
+ - Unit tests and integration tests
84
+ - Code quality tools (Black, isort, flake8, mypy)
85
+ - Documentation with MkDocs
86
+ - CI/CD pipeline configuration
87
+ - Pre-commit hooks setup
88
+ - Development environment automation with Makefile
89
+
90
+ ### Technical Details
91
+
92
+ - Python 3.8+ support
93
+ - Poetry for dependency management
94
+ - pytest for testing framework
95
+ - Type hints throughout codebase
96
+ - Comprehensive error handling
97
+ - Cross-platform compatibility (Windows, macOS, Linux)
98
+ - Modular architecture with pluggable parsers
99
+ - Extensible reporter system
100
+
101
+ ### Example Commands
102
+
103
+ - `domd` - Basic project scanning
104
+ - `domd --dry-run` - Preview mode
105
+ - `domd --verbose` - Detailed output
106
+ - `domd --format json` - JSON output
107
+ - `domd --timeout 120` - Custom timeout
108
+ - `domd --exclude "*.test.*"` - Pattern exclusion
109
+
110
+ ### Supported Parsers
111
+
112
+ - **JavaScript**: package.json scripts, npm/yarn/pnpm installations
113
+ - **Python**: Poetry scripts, pytest, tox environments, pip requirements
114
+ - **Make**: Makefile targets detection
115
+ - **CMake**: Build configuration parsing
116
+ - **Docker**: Image builds and compose services
117
+ - **Gradle**: Build and test tasks
118
+ - **Maven**: Compile and test goals
119
+ - **Composer**: PHP dependency management
120
+ - **Bundler**: Ruby gem management
121
+ - **Cargo**: Rust build system
122
+ - **Go**: Module build and test commands
123
+
124
+ ### Output Features
125
+
126
+ - Structured TODO.md with error analysis
127
+ - Command categorization by source file
128
+ - Suggested fix actions for common issues
129
+ - Return code reporting
130
+ - Execution time tracking
131
+ - Summary statistics
132
+ - Progress indicators
133
+
134
+ ### Quality Assurance
135
+
136
+ - 95%+ test coverage
137
+ - Type checking with mypy
138
+ - Code formatting with Black
139
+ - Import sorting with isort
140
+ - Linting with flake8
141
+ - Security scanning with bandit
142
+ - Pre-commit hooks for quality gates
143
+ - Continuous integration pipeline
144
+
145
+ ## [0.0.1] - 2025-06-05
146
+
147
+ ### Added in 0.0.1
148
+
149
+ - Project initialization
150
+ - Basic project structure
151
+ - Initial documentation outline
152
+
153
+ ---
154
+
155
+ ## Version History
156
+
157
+ - **2.2.41** - Web interface and documentation improvements
158
+ - **0.1.0** - Full initial release with comprehensive project support
159
+ - **0.0.1** - Project setup and structure
160
+
161
+ ## Migration Guide
162
+
163
+ ### From Manual Command Testing to DoMD
164
+
165
+ If you're currently manually testing project commands:
166
+
167
+ 1. Install DoMD: `pip install domd`
168
+ 2. Run in your project: `domd`
169
+ 3. Review generated TODO.md for failed commands
170
+ 4. Fix issues using provided suggestions
171
+
172
+ ### Integration with Existing Workflows
173
+
174
+ #### 1. CI/CD Integration
175
+
176
+ Add to your pipeline:
177
+
178
+ ```yaml
179
+ - name: Project Health Check
180
+ run: domd --quiet || echo "Some commands failed"
181
+ ```
182
+
183
+ #### 2. Pre-commit Integration
184
+
185
+ Add to `.pre-commit-config.yaml`:
186
+
187
+ ```yaml
188
+ - repo: local
189
+ hooks:
190
+ - id: domd
191
+ name: DoMD Health Check
192
+ entry: domd
193
+ language: system
194
+ ```
195
+
196
+ #### 3. Makefile Integration
197
+
198
+ Add to your Makefile:
199
+
200
+ ```makefile
201
+ health-check:
202
+ domd --verbose
203
+ ```
204
+
205
+ ## Roadmap
206
+
207
+ ### Upcoming Features (v0.2.0)
208
+
209
+ - Configuration file support (`.domd.yaml`)
210
+ - Custom parser plugins
211
+ - Parallel command execution
212
+ - Interactive fix mode
213
+ - Web dashboard
214
+ - Slack/Teams notifications
215
+
216
+ ### Future Enhancements (v0.3.0)
217
+
218
+ - Machine learning suggestions
219
+ - Historical trend analysis
220
+ - Integration with issue trackers
221
+ - Command dependency mapping
222
+ - Performance benchmarking
223
+
224
+ ### Long-term Goals (v1.0.0+)
225
+
226
+ - Stable API
227
+ - Enterprise features
228
+ - Advanced analytics
229
+ - Plugin ecosystem
230
+ - Community contributions
231
+ - Advanced reporting
232
+ - Multi-project support
233
+ - Cloud service integration
234
+
235
+ ## Contributing
236
+
237
+ See [CONTRIBUTING.md] for guidelines on how to contribute to this project.
238
+
239
+ ## Support
240
+
241
+ - Documentation: https://domd.readthedocs.io
242
+ - Issues: https://github.com/wronai/domd/issues
243
+ - Discussions: https://github.com/wronai/domd/discussions
@@ -1,51 +1,48 @@
1
- Metadata-Version: 2.4
1
+ Metadata-Version: 2.3
2
2
  Name: domd
3
- Version: 2.2.64
4
- Summary: DoMD - Do Markdown Docs - automatically detect, run and show working commands in DONE.md and errors in TODO.md markdown files
5
- Home-page: https://github.com/wronai/domd
3
+ Version: 2.2.65
4
+ Summary: DoMD - Do Markdown Docs - automatically detect, run and show working commands in DONE.md and errors in TODO.md markdown files
5
+ License: Apache-2.0
6
6
  Author: Tom Sapletta
7
7
  Author-email: info@softreck.dev
8
- License: Apache-2.0
8
+ Maintainer: WRONAI Team
9
+ Requires-Python: >=3.9,<4.0
9
10
  Classifier: Development Status :: 3 - Alpha
11
+ Classifier: Environment :: Console
10
12
  Classifier: Intended Audience :: Developers
11
- Classifier: Topic :: Software Development :: Quality Assurance
12
- Classifier: Topic :: Software Development :: Build Tools
13
- Classifier: Topic :: Software Development :: Testing
14
- Classifier: Topic :: System :: Systems Administration
15
13
  Classifier: License :: OSI Approved :: Apache Software License
14
+ Classifier: Natural Language :: English
15
+ Classifier: Operating System :: OS Independent
16
16
  Classifier: Programming Language :: Python :: 3
17
17
  Classifier: Programming Language :: Python :: 3.9
18
18
  Classifier: Programming Language :: Python :: 3.10
19
19
  Classifier: Programming Language :: Python :: 3.11
20
20
  Classifier: Programming Language :: Python :: 3.12
21
- Classifier: Operating System :: OS Independent
22
- Classifier: Environment :: Console
23
- Classifier: Natural Language :: English
24
- Requires-Python: >=3.9,<4.0
21
+ Classifier: Programming Language :: Python :: 3.13
22
+ Classifier: Programming Language :: Python :: 3.14
23
+ Classifier: Programming Language :: Python :: 3.8
24
+ Classifier: Topic :: Software Development :: Build Tools
25
+ Classifier: Topic :: Software Development :: Quality Assurance
26
+ Classifier: Topic :: Software Development :: Testing
27
+ Classifier: Topic :: System :: Systems Administration
28
+ Provides-Extra: all
29
+ Provides-Extra: api
30
+ Provides-Extra: cli
31
+ Provides-Extra: ui
32
+ Requires-Dist: click (>=8.1.0,<9.0.0) ; extra == "cli" or extra == "all"
33
+ Requires-Dist: colorama (>=0.4.6,<0.5.0) ; extra == "ui" or extra == "all"
34
+ Requires-Dist: docker (>=6.1.3,<7.0.0)
35
+ Requires-Dist: flask (>=2.0.0,<3.0.0) ; extra == "api" or extra == "all"
36
+ Requires-Dist: flask-cors (>=6.0.1,<7.0.0)
37
+ Requires-Dist: pyyaml (>=6.0,<7.0)
38
+ Requires-Dist: rich (>=13.0.0,<14.0.0) ; extra == "ui" or extra == "all"
39
+ Requires-Dist: toml (>=0.10.2,<0.11.0)
40
+ Project-URL: Bug Tracker, https://github.com/wronai/domd/issues
41
+ Project-URL: Changelog, https://github.com/wronai/domd/blob/main/CHANGELOG.md
42
+ Project-URL: Documentation, https://wronai.github.io/domd
43
+ Project-URL: Homepage, https://github.com/wronai/domd
44
+ Project-URL: Repository, https://github.com/wronai/domd.git
25
45
  Description-Content-Type: text/markdown
26
- License-File: LICENSE
27
- Requires-Dist: pyyaml>=6.0
28
- Requires-Dist: toml>=0.10.2
29
- Requires-Dist: configparser>=5.3.0
30
- Requires-Dist: docker>=6.1.3
31
- Requires-Dist: flask-cors>=6.0.1
32
- Provides-Extra: dev
33
- Requires-Dist: pytest>=7.0.0; extra == "dev"
34
- Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
35
- Requires-Dist: pytest-mock>=3.10.0; extra == "dev"
36
- Requires-Dist: pytest-docker>=2.0.0; extra == "dev"
37
- Requires-Dist: black>=23.0.0; extra == "dev"
38
- Requires-Dist: isort>=5.12.0; extra == "dev"
39
- Requires-Dist: flake8>=6.0.0; extra == "dev"
40
- Requires-Dist: mypy>=1.0.0; extra == "dev"
41
- Requires-Dist: pylint>=2.17.0; extra == "dev"
42
- Requires-Dist: pre-commit>=3.0.0; extra == "dev"
43
- Requires-Dist: coverage[toml]>=7.0.0; extra == "dev"
44
- Requires-Dist: codecov>=2.1.0; extra == "dev"
45
- Dynamic: license-file
46
- Dynamic: provides-extra
47
- Dynamic: requires-dist
48
- Dynamic: requires-python
49
46
 
50
47
  # ✓ DoMD - Do Markdown Docs
51
48
 
@@ -841,3 +838,4 @@ repos:
841
838
  [docker-url]: https://www.docker.com/
842
839
  [docs-badge]: https://img.shields.io/badge/Docs-Read%20the%20Docs-blue
843
840
  [docs-url]: https://wronai.github.io/domd/
841
+
domd-2.2.65/VERSION ADDED
@@ -0,0 +1 @@
1
+ 2.2.64
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "domd"
3
- version = "2.3.1"
3
+ version = "2.2.65"
4
4
  description = " ✓ DoMD - Do Markdown Docs - automatically detect, run and show working commands in DONE.md and errors in TODO.md markdown files"
5
5
  authors = ["Tom Sapletta <info@softreck.dev>"]
6
6
  maintainers = ["WRONAI Team"]
@@ -15,7 +15,8 @@ packages = [
15
15
  include = [
16
16
  "README.md",
17
17
  "CHANGELOG.md",
18
- "LICENSE"
18
+ "LICENSE",
19
+ "VERSION"
19
20
  ]
20
21
  classifiers = [
21
22
  "Development Status :: 3 - Alpha",
@@ -60,8 +61,8 @@ flask = { version = "^2.0.0", optional = true }
60
61
  flask-cors = "^6.0.1"
61
62
 
62
63
  [build-system]
63
- requires = ["setuptools>=42.0.0"]
64
- build-backend = "setuptools.build_meta"
64
+ requires = ["poetry-core>=1.0.0"]
65
+ build-backend = "poetry.core.masonry.api"
65
66
 
66
67
  [tool.poetry.scripts]
67
68
  domd = "domd.cli:main"
@@ -502,27 +502,27 @@ def main() -> int:
502
502
  if line and not line.startswith("#"):
503
503
  ignore_patterns.append(line)
504
504
 
505
- # Initialize services with default values if not provided
506
- timeout = getattr(args, "timeout", 30) # Default to 30 seconds
507
- _ = getattr(args, "todo_file", "TODO.md") # Used in other parts
508
- _ = getattr(args, "script_file", "todo.sh") # Used in other parts
509
- _ = getattr(args, "ignore_file", ".doignore") # Used in other parts
510
-
511
- # Initialize command service
512
- command_service = ApplicationFactory.create_command_service(
513
- repository=repository,
514
- executor=executor,
515
- timeout=timeout,
516
- ignore_patterns=ignore_patterns,
517
- )
505
+ # Initialize services with default values if not provided
506
+ timeout = getattr(args, "timeout", 30) # Default to 30 seconds
507
+ _ = getattr(args, "todo_file", "TODO.md") # Used in other parts
508
+ _ = getattr(args, "script_file", "todo.sh") # Used in other parts
509
+ _ = getattr(args, "ignore_file", ".doignore") # Used in other parts
510
+
511
+ # Initialize command service (moved outside the if block)
512
+ command_service = ApplicationFactory.create_command_service(
513
+ repository=repository,
514
+ executor=executor,
515
+ timeout=timeout,
516
+ ignore_patterns=ignore_patterns,
517
+ )
518
518
 
519
- # Initialize report service with the correct parameters
520
- report_service = ApplicationFactory.create_report_service(
521
- repository=repository,
522
- project_path=project_path,
523
- todo_file=getattr(args, "todo_file", "TODO.md"),
524
- done_file="DONE.md", # Using default done file name
525
- )
519
+ # Initialize report service with the correct parameters
520
+ report_service = ApplicationFactory.create_report_service(
521
+ repository=repository,
522
+ project_path=project_path,
523
+ todo_file=getattr(args, "todo_file", "TODO.md"),
524
+ done_file="DONE.md", # Using default done file name
525
+ )
526
526
 
527
527
  # Inicjalizacja prezentera
528
528
  presenter = ApplicationFactory.create_command_presenter(repository)
@@ -0,0 +1,138 @@
1
+ """CLI command for testing commands in Docker."""
2
+
3
+ import logging
4
+ from pathlib import Path
5
+ from typing import List, Optional
6
+
7
+ import click
8
+ from rich.console import Console
9
+ from rich.table import Table
10
+
11
+ from domd.core.command_detection.handlers.command_handler import CommandHandler
12
+ from domd.core.command_execution.command_runner import CommandRunner
13
+
14
+ logger = logging.getLogger(__name__)
15
+ console = Console()
16
+
17
+
18
+ @click.command()
19
+ @click.argument("commands", nargs=-1, required=False)
20
+ @click.option(
21
+ "--file",
22
+ "-f",
23
+ type=click.Path(exists=True, dir_okay=False, path_type=Path),
24
+ help="File containing commands to test (one per line)",
25
+ )
26
+ @click.option(
27
+ "--update-doignore",
28
+ is_flag=True,
29
+ help="Update .doignore with commands that fail in Docker",
30
+ )
31
+ @click.option(
32
+ "--dodocker",
33
+ type=click.Path(exists=True, dir_okay=False, path_type=Path),
34
+ default=".dodocker",
35
+ help="Path to .dodocker configuration file",
36
+ )
37
+ @click.option(
38
+ "--doignore",
39
+ type=click.Path(dir_okay=False, path_type=Path),
40
+ default=".doignore",
41
+ help="Path to .doignore file",
42
+ )
43
+ @click.option(
44
+ "--no-docker",
45
+ is_flag=True,
46
+ help="Skip Docker testing and only validate commands",
47
+ )
48
+ @click.pass_context
49
+ def test_commands(
50
+ ctx: click.Context,
51
+ commands: List[str],
52
+ file: Optional[Path],
53
+ update_doignore: bool,
54
+ dodocker: Path,
55
+ doignore: Path,
56
+ no_docker: bool,
57
+ ) -> None:
58
+ """Test commands in Docker and optionally update .doignore.
59
+
60
+ This command validates commands and can test them in Docker containers.
61
+ If more than half of commands are invalid, it will test them in Docker
62
+ and optionally update .doignore with commands that fail.
63
+
64
+ Commands can be provided as arguments or in a file (one per line).
65
+ """
66
+ # Load commands from file if provided
67
+ all_commands = list(commands)
68
+ if file:
69
+ try:
70
+ with open(file, "r") as f:
71
+ all_commands.extend(line.strip() for line in f if line.strip())
72
+ except Exception as e:
73
+ console.print(f"[red]Error reading commands from file: {e}[/red]")
74
+ ctx.exit(1)
75
+
76
+ if not all_commands:
77
+ console.print("[yellow]No commands provided to test[/yellow]")
78
+ return
79
+
80
+ # Initialize command handler with Docker testing
81
+ command_runner = CommandRunner()
82
+ handler = CommandHandler(
83
+ project_path=Path.cwd(),
84
+ command_runner=command_runner,
85
+ enable_docker_testing=not no_docker,
86
+ dodocker_path=dodocker,
87
+ doignore_path=doignore,
88
+ )
89
+
90
+ # Validate and test commands
91
+ console.print(f"[bold]Testing {len(all_commands)} commands...[/bold]")
92
+ results = handler.validate_commands(
93
+ all_commands, test_in_docker=not no_docker and update_doignore
94
+ )
95
+
96
+ # Display results
97
+ table = Table(show_header=True, header_style="bold magenta")
98
+ table.add_column("Command", style="dim", width=60, overflow="fold")
99
+ table.add_column("Status", justify="right")
100
+ table.add_column("Details", width=40, overflow="fold")
101
+
102
+ for cmd, (is_valid, reason) in results.items():
103
+ if is_valid:
104
+ status = "[green]VALID[/green]"
105
+ details = ""
106
+ else:
107
+ status = "[red]INVALID[/red]"
108
+ details = f"[yellow]{reason}[/yellow]"
109
+
110
+ # Truncate long commands for display
111
+ display_cmd = cmd if len(cmd) < 60 else f"{cmd[:57]}..."
112
+ table.add_row(display_cmd, status, details)
113
+
114
+ console.print(table)
115
+
116
+ # Show summary
117
+ valid_count = sum(1 for _, (is_valid, _) in results.items() if is_valid)
118
+ invalid_count = len(results) - valid_count
119
+
120
+ console.print(f"\n[bold]Summary:[/bold]")
121
+ console.print(f" • Total commands: {len(results)}")
122
+ console.print(f" • Valid commands: [green]{valid_count}[/green]")
123
+ console.print(f" • Invalid commands: [red]{invalid_count}[/red]")
124
+
125
+ if handler.untested_commands and not no_docker:
126
+ console.print(
127
+ "\n[yellow]Note: Some valid commands were not tested in Docker.[/yellow]"
128
+ )
129
+ console.print(" Run with --update-doignore to test valid commands in Docker.")
130
+
131
+ if update_doignore and not no_docker and invalid_count > 0:
132
+ console.print(
133
+ "\n[green]✓[/green] [bold]Updated .doignore with failing commands[/bold]"
134
+ )
135
+
136
+ # Exit with non-zero code if any commands are invalid
137
+ if invalid_count > 0:
138
+ ctx.exit(1)