gisila_queue_cli library
Shared CLI scaffolding for gisila_queue worker/beat binaries.
Kept separate from package:gisila_queue/gisila_queue.dart (which has
no dart:io dependency beyond what the core library already needs) so
pulling in process-signal handling and flag parsing is opt-in — only
import this from an actual bin/*.dart entrypoint.
// bin/worker.dart
import 'package:gisila_queue/gisila_queue.dart';
import 'package:gisila_queue/gisila_queue_cli.dart';
Future<void> main(List<String> argv) async {
final cli = WorkerCli.parse(argv);
if (cli.help) return print(WorkerCli.usage);
final app = cli.buildApp();
app.task<void>('emails.send_welcome', (ctx) async { /* ... */ });
await cli.run(app);
}
Classes
- BeatCli
-
Shared setup for a
bin/beat.dartentrypoint — parses the standard gisila_queue beat flags, builds a Redis-backed GisilaQueue and a Beat wired with a RedisBeatLock + RedisBeatStateStore (so running two by accident doesn't double-fire everything), and wires graceful shutdown: - CliArgs
-
Minimal
--flag/--flag=valueparser shared by gisila_queue's CLI helpers (WorkerCli, BeatCli) andbin/rose.dart, so every gisila_queue binary parses arguments the same way. - WorkerCli
-
Shared setup for a
bin/worker.dartentrypoint — parses the standard gisila_queue worker flags, builds a Redis-backed GisilaQueue, and wires graceful shutdown, so a project's own binary can be little more than:
Functions
-
installShutdownHooks(
Future< void> onShutdown()) → void -
Wires
SIGINT/SIGTERMtoonShutdown, calling it at most once. Every gisila_queue CLI binary (WorkerCli, BeatCli,bin/rose.dart) uses this so Ctrl-C / a process manager's stop signal drains in-flight work before exiting instead of killing the process mid-task.