Skip to content

Fix the sudden exit from the application #8

Description

@tomassirio

The application throws an InterruptedIOException when the user tries to kill the process (ctrl + c) while a command is being executed:

EASY INSTALLER :: >install -m
2024-10-03T09:38:23.509+02:00 ERROR 79055 --- [EasyInstaller] [           main] o.s.boot.SpringApplication               : Application run failed

java.io.IOError: java.io.InterruptedIOException
        at org.jline.keymap.BindingReader.readCharacter(BindingReader.java:169) ~[jline-reader-3.26.2.jar!/:na]
        at org.jline.keymap.BindingReader.readBinding(BindingReader.java:109) ~[jline-reader-3.26.2.jar!/:na]
        at org.jline.keymap.BindingReader.readBinding(BindingReader.java:57) ~[jline-reader-3.26.2.jar!/:na]
        at org.springframework.shell.component.support.AbstractSelectorComponent.read(AbstractSelectorComponent.java:160) ~[spring-shell-core-3.3.1.jar!/:3.3.1]
        at org.springframework.shell.component.support.AbstractSelectorComponent.read(AbstractSelectorComponent.java:48) ~[spring-shell-core-3.3.1.jar!/:3.3.1]
        at org.springframework.shell.component.support.AbstractComponent.loop(AbstractComponent.java:288) ~[spring-shell-core-3.3.1.jar!/:3.3.1]
        at org.springframework.shell.component.SingleItemSelector.runInternal(SingleItemSelector.java:79) ~[spring-shell-core-3.3.1.jar!/:3.3.1]
        at org.springframework.shell.component.SingleItemSelector.runInternal(SingleItemSelector.java:44) ~[spring-shell-core-3.3.1.jar!/:3.3.1]
        at org.springframework.shell.component.support.AbstractComponent.run(AbstractComponent.java:155) ~[spring-shell-core-3.3.1.jar!/:3.3.1]
        at org.springframework.shell.component.flow.ComponentFlow$DefaultComponentFlow.lambda$singleItemSelectorsStream$18(ComponentFlow.java:615) ~[spring-shell-core-3.3.1.jar!/:3.3.1]
        at org.springframework.shell.component.flow.ComponentFlow$DefaultComponentFlow.runGetResults(ComponentFlow.java:421) ~[spring-shell-core-3.3.1.jar!/:3.3.1]
        at org.springframework.shell.component.flow.ComponentFlow$DefaultComponentFlow.run(ComponentFlow.java:368) ~[spring-shell-core-3.3.1.jar!/:3.3.1]
        at com.tomassirio.easyinstaller.command.step.PackageManagerStep.execute(PackageManagerStep.kt:33) ~[!/:0.1.0]
        at com.tomassirio.easyinstaller.command.InstallerCommand.installManually(InstallerCommand.kt:35) ~[!/:0.1.0]
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
        at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]

A graceful exit using the ShellFormatter would be preferred in these instances

Definition of done: When a user kills the process whilst on a command, the user won't see an exception but a goodbye message

Metadata

Metadata

Assignees

Labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions