What's Changed
- Add YAML configuration support with schema validation by @umputun in #38
- Add conditional job execution based on system resources by @umputun in #39
- refactor: improve conditions validation and error messages by @umputun in #40
Major Features
Conditional Job Execution
- Added system resource-based conditional execution for jobs
- Jobs can now be configured to run only when certain conditions are met:
- CPU usage below threshold
- Memory usage below threshold
- Load average below threshold
- Disk free space above threshold
- Custom check scripts
- Support for job postponement with configurable deadlines when conditions aren't met
- Concurrent condition checks with configurable limits (--max-concurrent-checks)
YAML Configuration Support
- Added support for YAML configuration files (auto-detected by .yml/.yaml extension)
- Structured scheduling with separate fields (minute, hour, day, month, weekday)
- Per-job repeater configuration in YAML
- JSON Schema validation for YAML configurations
- Optional job names for better organization
Enhanced Features
- Support for inline comments in traditional crontab format
- Improved error messages with standardized format for better log parsing
- Comprehensive validation for all configuration fields
Improvements
- Refactored validation logic for better maintainability
- Reduced cyclomatic complexity in condition checking
- Added comprehensive test coverage for all new features
- Improved documentation with examples for all new features
Bug Fixes
- Fixed whitespace formatting issues
- Addressed various code review feedback items
Backward Compatibility
All changes are fully backward compatible. Existing crontab configurations will continue to work without modification.
Documentation
- Updated README with comprehensive examples for:
- YAML configuration format
- Conditional execution
- Per-job repeater settings
- Custom check scripts with timeouts
Full Changelog: v1.1.1...v1.2.0