Cliffy

OS signals

i

⚠️ The cbreak option works currently only on Linux and macOS!

By default, cliffy will call Deno.exit(0) after the user presses ctrl+c. If you need to use a custom signal handler, you can enable the cbreak option on your prompt. This will enable pass-through of os signals to deno, allowing you to register your own signal handler.

i

When using prompts like Select or Toggle with the cbreak option enabled, you have to show the cursor and clear the stdout before calling Deno.exit() manually. Maybe this will be improved somehow in the future.

import { tty } from "@cliffy/ansi/tty";
import { Toggle } from "@cliffy/prompt/toggle";

Deno.addSignalListener("SIGINT", () => {
  tty.cursorLeft.eraseDown.cursorShow();
  console.log("interrupted!");
  Deno.exit(1);
});

const confirmed: boolean = await Toggle.prompt({
  message: "Please confirm",
  cbreak: true,
});

console.log({ confirmed });Copy
$ deno run examples/prompt/os_signals.tsCopy