<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **Bug Fixes**
- Improved error handling during coverage testing to ensure failures are
no longer ignored.
- **New Features**
- Streamlined command execution flow with a default command set to
`cmd_check` when no arguments are provided.
- **Documentation**
- Enhanced user feedback for unrecognized commands.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
```
❌ Functions coverage is below threshold: 62.95% < 63.0%
✅ Lines coverage: 55.87%
✅ Regions coverage: 43.13%
[Container] 2023/05/09 09:07:40 Command did not exit successfully ./coverage.sh exit status 1
[Container] 2023/05/09 09:07:40 Phase complete: BUILD State: FAILED
[Container] 2023/05/09 09:07:40 Phase context status code: COMMAND_EXECUTION_ERROR Message: Error while executing command: ./coverage.sh. Reason: exit status 1
```
As I wrote on Slack:
> ❓ How useful is coverage.sh, particularly ‘Functions coverage’?
>
> I don't know how `cargo llvm-cov` calculates this ratio. Probably it divides the number of tested functions by the total number of functions.
>
> Splitting big functions into smaller pieces improves code readability. It also increases the total number of functions. If my assumption about `cargo llvm-cov` algorithm is correct, splitting code into smaller functions decreases the ‘Functions coverage’ ratio.
>
> If you look at [the patch] that fails the CI due to insufficient ‘Functions coverage’, you'll see that the new code there is accompanied with just-about-right amount of unit tests. I mean, apart from `MetricType`-to-string conversion, what else is there to be tested? How useful would those tests be?
>
> IMO, ‘Functions coverage’ target of `coverage.sh` adds more friction than benefit.
>
> I propose that we don't let `coverage.sh` fail the CI.
[the patch]: https://github.com/zinclabs/zincobserve/pull/695/files
- Generate coverage report in JSON format --- it used to be a raw text
file (non-JSON) with `.json` extension.
- Parse JSON data with Python instead of counting and `cut`ting fields.
The resulting code is more readable.
- Allow specifying of coverage thresholds via environment variables.
- Generate HTML report and open it in the default browser with
`./coverage.sh html`.
- Implement CLI.
* feat: update datafusion to 19
* feat: add stream deleting
* feat: data delete
* feat: stream delete done for local mode
* feat: data delete work on s3
* feat: data delete works with gcs
* feat: improve data delete
* feat: improve data delete
* feat: data delete done with merge file list
* fix: comment some unused code
* test: change coverage
* docs: update readme