* refactor(cli): single entry for native binary and main_loop
Move argument parsing, logging setup and command dispatch from
biliup-cli's main.rs into `biliup_cli::entry`, and make
stream_gears.main_loop call the same entry instead of its own copy.
- Both entries default to `server` when no subcommand is given (or the
legacy `start`), expand `~` in paths, and log to `ds_update.log`
(server only, no rotation) instead of `download.log` on the wheel.
- The log filter honours `RUST_LOG`; an explicit `--rust-log` overrides it.
- main_loop no longer calls process::exit on clap errors: `--help` and
`--version` print and return, other parse errors raise SystemExit with
clap's exit code. Logging uses try_init, so a second call in the same
process does not panic.
- Export `entry::serve(ServeOptions)` so a host can run the Web server on
its own tokio runtime.
- Document config_bindings as deprecated (behaviour unchanged).
Ref #1721
* test(stream-gears): cover the shared entry from the installed wheel
Exit codes of --help/--version/--bad-flag, main_loop called twice in one
process, and biliup server writing ds_update.log with RUST_LOG and
--rust-log precedence.
Ref #1721
* test(stream-gears): update smoke test comment now that --help no longer exits
* build(stream-gears): drop clap, unused after the shared entry
* ci(docker): start the built image and check GET / returns 200
The test job only built the image. Also run it with the default CMD and
require the Web UI to answer and ds_update.log to be written.
Ref #1721