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.
- domd-2.2.65/CHANGELOG.md +243 -0
- {domd-2.2.64/src/domd.egg-info → domd-2.2.65}/PKG-INFO +34 -36
- domd-2.2.65/VERSION +1 -0
- {domd-2.2.64 → domd-2.2.65}/pyproject.toml +5 -4
- {domd-2.2.64 → domd-2.2.65}/src/domd/cli/cli.py +20 -20
- domd-2.2.65/src/domd/cli/commands/test_commands.py +138 -0
- domd-2.2.64/PKG-INFO +0 -843
- domd-2.2.64/setup.cfg +0 -53
- domd-2.2.64/setup.py +0 -40
- domd-2.2.64/src/domd.egg-info/SOURCES.txt +0 -146
- domd-2.2.64/src/domd.egg-info/dependency_links.txt +0 -1
- domd-2.2.64/src/domd.egg-info/entry_points.txt +0 -5
- domd-2.2.64/src/domd.egg-info/requires.txt +0 -19
- domd-2.2.64/src/domd.egg-info/top_level.txt +0 -1
- domd-2.2.64/tests/test_ansible.py +0 -179
- domd-2.2.64/tests/test_ansible_galaxy.py +0 -173
- domd-2.2.64/tests/test_ansible_inventory.py +0 -113
- domd-2.2.64/tests/test_ansible_playbook.py +0 -124
- domd-2.2.64/tests/test_ansible_roles.py +0 -134
- domd-2.2.64/tests/test_ansible_vault.py +0 -111
- domd-2.2.64/tests/test_cli.py +0 -4
- domd-2.2.64/tests/test_command_handling.py +0 -245
- domd-2.2.64/tests/test_command_testing.py +0 -201
- domd-2.2.64/tests/test_detector.py +0 -1377
- domd-2.2.64/tests/test_virtualenv.py +0 -277
- {domd-2.2.64 → domd-2.2.65}/LICENSE +0 -0
- {domd-2.2.64 → domd-2.2.65}/README.md +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/__init__.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/adapters/__init__.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/adapters/api/__init__.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/adapters/api/command_testing.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/adapters/api/flask_api.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/adapters/cli/__init__.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/adapters/cli/command_presenter.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/adapters/formatters/__init__.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/adapters/formatters/markdown_formatter.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/adapters/persistence/__init__.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/adapters/persistence/in_memory_command_repository.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/adapters/persistence/shell_command_executor.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/api.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/application/__init__.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/application/factory.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/cli/__init__.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/command_execution/__init__.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/__init__.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/command_detection/__init__.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/command_detection/base_detector.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/command_detection/docker_tester.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/command_detection/handlers/__init__.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/command_detection/handlers/command_handler.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/command_detection/handlers/config_handler.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/command_detection/models.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/command_detection/parsers/__init__.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/command_detection/parsers/base_parser.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/command_detection/parsers/parser_registry.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/command_detection/project_detector.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/command_detection/utils/__init__.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/command_detection/utils/file_utils.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/command_detection/utils/virtualenv.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/command_execution/__init__.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/command_execution/command_executor.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/command_execution/command_recorder.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/command_execution/command_runner.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/command_execution/environment_detector.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/command_execution/executor.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/commands/__init__.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/commands/command.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/commands/executor.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/detector.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/domain/__init__.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/domain/command.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/parsers/__init__.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/parsers/ansible_galaxy.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/parsers/ansible_inventory.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/parsers/ansible_playbook.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/parsers/ansible_role.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/parsers/ansible_vault.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/parsers/base.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/parsers/cargo_toml.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/parsers/composer_json.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/parsers/go_mod.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/parsers/makefile.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/parsers/package_json.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/parsers/pyproject_toml.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/parsers/tox_ini.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/parsing/__init__.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/parsing/base.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/parsing/file_processor.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/parsing/parser_registry.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/parsing/pattern_matcher.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/ports/__init__.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/ports/command_executor.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/ports/command_repository.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/ports/report_formatter.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/project_detection/__init__.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/project_detection/command_handling.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/project_detection/config_files.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/project_detection/detector.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/project_detection/virtualenv.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/reporters/__init__.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/reporters/base.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/reporters/done_md.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/reporters/todo_md.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/reporting/__init__.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/reporting/formatters.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/reporting/reporter.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/services/__init__.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/services/command_service.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/services/report_service.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/utils/__init__.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/utils/command_utils.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/utils/environment.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/utils/file_utils.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/utils/logging_utils.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/core/utils/virtualenv.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/parsers/__init__.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/parsers/ansible.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/parsers/base.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/parsers/build_systems.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/parsers/ci_cd.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/parsers/docker/__init__.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/parsers/docker/docker_compose.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/parsers/docker/dockerfile.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/parsers/docker.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/parsers/javascript/__init__.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/parsers/javascript.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/parsers/markdown_parser.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/parsers/package_json.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/parsers/python.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/parsers/test_build_systems.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/parsers/test_ci_cd.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/parsers/test_docker.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/parsers/test_javascript.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/parsers/test_python.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/parsing/__init__.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/parsing/base.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/reporters/__init__.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/reporters/console.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/reporters/json_reporter.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/reporters/test_console.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/reporters/test_json_reporter.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/reporters/test_todo_md.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/reporters/todo_md.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/reporting/__init__.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/utils/__init__.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/utils/command_runner.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/utils/file_utils.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/utils/path_utils.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/utils/test_command_runner.py +0 -0
- {domd-2.2.64 → domd-2.2.65}/src/domd/utils/test_file_utils.py +0 -0
domd-2.2.65/CHANGELOG.md
ADDED
|
@@ -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.
|
|
1
|
+
Metadata-Version: 2.3
|
|
2
2
|
Name: domd
|
|
3
|
-
Version: 2.2.
|
|
4
|
-
Summary: DoMD - Do Markdown Docs - automatically detect, run and show working commands in DONE.md and errors in TODO.md markdown files
|
|
5
|
-
|
|
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
|
-
|
|
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:
|
|
22
|
-
Classifier:
|
|
23
|
-
Classifier:
|
|
24
|
-
|
|
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
|
+
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 = ["
|
|
64
|
-
build-backend = "
|
|
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
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
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
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
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)
|