diff --git a/Cargo.lock b/Cargo.lock index a621e25d..951c402e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -201,6 +201,16 @@ dependencies = [ "once_cell", ] +[[package]] +name = "ctrlc" +version = "3.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d91974fbbe88ec1df0c24a4f00f99583667a7e2e6272b2b92d294d81e462173" +dependencies = [ + "nix", + "winapi", +] + [[package]] name = "dirs" version = "3.0.2" @@ -452,6 +462,18 @@ dependencies = [ "adler", ] +[[package]] +name = "nix" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e322c04a9e3440c327fca7b6c8a63e6890a32fa2ad689db972425f07e0d22abb" +dependencies = [ + "autocfg", + "bitflags", + "cfg-if", + "libc", +] + [[package]] name = "num-integer" version = "0.1.45" @@ -623,6 +645,7 @@ name = "rubyfmt-main" version = "0.8.0-pre" dependencies = [ "clap", + "ctrlc", "dirs", "filetime", "glob", diff --git a/Cargo.toml b/Cargo.toml index f12d9870..81977f53 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,6 +14,7 @@ edition = "2018" [dependencies] clap = { version = "3.2.16", features = ["derive"] } +ctrlc = { version = "3.2", features = ["termination"] } dirs = "3.0.2" filetime = "0.2.14" glob = "0.3" diff --git a/src/main.rs b/src/main.rs index 21adc0ba..022dd72d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -340,6 +340,12 @@ fn puts_stdout(input: &String) { } fn main() { + ctrlc::set_handler(move || { + eprintln!("`rubyfmt` process was terminated. Exiting..."); + exit(1); + }) + .expect("Error setting Ctrl-C handler"); + updates::begin_checking_for_updates(); let opts = get_command_line_options();