event
Event driven programming for shell scripts
Create or destroy an event interrupt,
Each event will have subtilty different behaviour depending on the event itself due to the differing roles of each event system. Therefore it is recommended that you read the docs on each event to understand its behaviour.
However while they might differ, the event
API does try to retain a level of external consistency. For example each event in defined via name=interrupt
where name is a user defined handle (like a variable or function would have a name) and interrupt is a system state you wish the event to be fired on.
Each event function will have a payload sent via stdin which would look a little like the following:
{
"Name": "",
"Interrupt": {}
}
Name will always refer to the name you passed when defining the event. And Interrupt will carry any event specific metadata that might be useful to the event function. Thus the value of Interrupt will vary from one event to another.
event event-type name=interrupt { code block }
!event event-type name
event onSecondsElapsed autoquit=60 {
out "You're 60 second timeout has elapsed. Quitting murex"
exit 1
}
!event onSecondsElapsed autoquit
onCommandCompletion
: Trigger an event upon a command’s completiononFileSystemChange
: Add a filesystem watchonKeyPress
: Custom definable key bindings and macrosonPreview
: Full screen previews for files and command documentationonPrompt
: Events triggered by changes in state of the interactive shellonSecondsElapsed
: Events triggered by time intervalsonSignalReceived
: Trap OS signalsThe interrupt
field in the CLI supports ANSI constants. eg
event onKeyPress f1={F1-VT100} {
tout qs HintText="Key F1 Pressed"
}
To list compiled event types:
» runtime --events -> formap event ! { out $event }
onCommandCompletion
onFileSystemChange
onKeyPress
onPrompt
onSecondsElapsed
event
!event
formap
: Iterate through a map or other collection of datafunction
: Define a function blockopen
: Open a file with a preferred handlerprivate
: Define a private function blockruntime
: Returns runtime information on the internal state of MurexThis document was generated from builtins/events/events_doc.yaml.
This site's content is rebuilt automatically from murex's source code after each merge to the master
branch. Downloadable murex binaries are also built with the website.
Last built on Thu Aug 15 14:38:34 UTC 2024 against commit 50ed9d650ed9d6df391240d3c2c02e623636e508dfcdad1.
Current version is 6.2.4000 which has been verified against tests cases.