Skip to content

zombieleet/emitter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Emitter

Emitter is a bash library that helps you to be able to create custom event listeners and assign a function to be executed whenever the listener is been emitted

Usage event takes three subcommands which are attach emit and detach

event attach event attach takes two argument which is the name of the event you want to listen for and the function to execute when the event is emitted

1  #!/usr/bin/env bash
2  source ../evt.sh
3  CreateFile() {
4    local ftocreate=$1
5    echo -e "Love is a name \nSex is a game\nPlay the Game\nForget the name " > "$ftocreate"
6    printf "%s\n" "$ftocreate have been created"
7  }
8  event attach createfile CreateFile ;# createfile is the event to listen for, CreateFile is the callback function to execute when the event is emitted
9  event attach showfile ReadFile ;# showfile is the event to listen for, ReadFile is the callback function to execute when the event is emitted

event emit event emit the first argument to event emit must be the the event you want to listen for and it must have already been added to the stack with event attach , the second argument must be the list of all the argument which will be passed to the callback function (behind the hood) assigned to the event you want to listen for

Note:- You must not pass the arguments to the callback function directly when createing the event listener with event attach

Note:- When assigning the arguments to the event listener using event emit you must wrap the arguments with double quotes , each argument must be separated with a single space, if a single argument have spaces or tabs , wrap that specific argument with single quotes.

Note:- Under the hood, 2 other argument are passed to the callback function which is the name of the event listend for and the function that will be fired if the event is emitted

for example:

  event attach talk SayShell # talk is the event to listen for, SayShell is the callback function to execute when the event talk is been emitted

  event emit talk "bash ksh zsh sh" # talk is the event to listen for, "bash ksh zsh sh" is the argument passed to SayShell
  
  loveWhat="These are the shells i love"
  event emit talk "'$loveWhat' bash ksh zsh sh" # loveWhat variable contains space, and it's wrapped in single quotes so that it will be parsed as a single argument

see line 7 and line 27

1  #!/usr/bin/env bash
2  source ../evt.sh
3  CreateFile() {
4    local text=$1 ftocreate=$2
5    echo -e "Love is a name \nSex is a game\nPlay the Game\nForget the name " > "$ftocreate"
6    printf "%s\n" "$ftocreate $text"
7    event emit showfile "$ftocreate"
8  }
9  event attach createfile CreateFile ; #createfile is the event to listen for, CreateFile is the callback function to execute when the event is emitted
10 event attach showfile ReadFile  ; #showfile is the event to listen for, ReadFile is the callback function execute when the event is emitted
11 ReadFile() {
12    local file=$1
13    echo "------------------------- READING $file -----------------------"
14    while read log;do
15      printf "%s\n" "$log"
16    done < "$file"
17    echo "------------------------- DONE READING $file ------------------"
18 }
19
20  File() {
21
22    if [[ ! -f "log.txt" ]];then
23    	 event emit createfile "'has been created' log.txt" ;# 'has been created' and log.txt will be passed to CreateFile
24	     return 1;
25    fi
26
27  event emit showfile "log.txt" ; #log.txt will be passed to ReadFile
28}

once event once works like event emit. The only difference is that once an event is emitted in event once that event is removed as an event listener i.e it is only executed ones

	# check test/once.sh
		
	source ../emitter.bash;

	s() {
		echo "${1}";
	}
	event attach sayHoss s

	event emit sayHoss 'victory'
	event emit sayHoss 'victory'
	event emit sayHoss 'victory'


	ff() {
		local _num1=${1};
		local _num2=${2};

		printf "%d\n" "$(( _num1 + _num2 ))";
	}

	event attach addNumber ff

	event once addNumber 2 2	

NOTE: once the event addNumber is emitted trying to emit again will cause an error

removeall listener event removeAll This subcommands removes all listener by unsetting the Stack array

List Event event list takes no argument. It lists the total number of event listener in the Stack

example event list

setmaxlistener event setMaxlistener takes one argument which must be an integer. It resets the default maximum listener by the specified ones

Detach Event event detach takes a single argument, it detaches/removes the event you don't want to listen for again from the Stack.

event detach eventName

maxlisteners The total number of listeners allowed is 1000, and it's readonly, you cannot modify it in your script, except you want to modify it directly from the emitter library

License GNU General Public License

About

event listeners for bash

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages