src | ||
tests | ||
.gitignore | ||
build | ||
README.md |
Driglibash
Simple helper script for bash, in bash. Those scripts are not optimized at all, they may be slow and ressources consuming. They are made for simplicity.
Installation
sudo wget https://git.jean-cloud.net/adrian/driglibash/raw/branch/main/src/usr/bin/driglibash-base -O /usr/bin/driglibash-base
sudo wget https://git.jean-cloud.net/adrian/driglibash/raw/branch/main/src/usr/bin/driglibash-args -O /usr/bin/driglibash-args
Driglibash-base
This file contains some very basic functions that are wildely used. Since bash is pain to read, you better do a lot of them.
yell
Print its arguments on stderr.
die
Like yell but clean and exit too.
root_or_die
Execute die
if the user is not root
clean
Store its last argument as command and execute them all when called without arguments. Example :
$ clean "echo file"
$ clean
file
You can add a first argument in (pre/post/del) to add your command before/after the others or to remove it from the list
Clean is automatically called on SIGINT and by die
. You should call it at your scripts end to handle the cleaning.
section
Print a separation line that is the size of the terminal. If an argument is provided, it will be displayed in the middle of the line.
$ section 'Unit tests'
====================================== Unit tests ======================================
run
Execute a command. Run a clean and exit if it returns a non zero status.
If you set the variable driglibash_run_retry
, you will be asked to retry a failing command.
start
Execute a command in background, add a clean task that kill it, and returns the pid. Be careful ! Only the PID of the started process is returned. If the process forks, driglibash can’t stop it when needed.
where
Tells you where (in absolute path) is the script being executed. Useful when you want to access som files next to your executable. If the --follow
argument is provided, where
will follow symlinks and find the linked script file.
MUST BE RUN BEFORE ANY cd
repeat
Print its first argument, the second argument times.
$ repeat '=' 10
==========
driglibash-args
A little framework for argument parsing in bash. It already contains driglibash-base.
Just fill the arrays usage
et varia
and the value
Usage exemple :
# Thoses two lines are important for bash
declare -A usage
declare -A varia
version="alpha nightly 0.0.1 pre-release unstable"
summary="$0 [options] <device>"
# if the script is called with -t option, tst will be set to true
usage[t]="Start qemu after the installation"
varia[t]=tst
tst=false
# if the script is called with -i option, tst will be an array of every argument passed to -i (must repeat -i)
usage[i]="Install the provided package. Not implemented"
varia[i]=install
declare -a install
. driglibash-args
# After this line, driglibash-base is available and your variables are set according to arguments
# Exemple. If you call :
# ./this-script -i package2 -t -i package1
# tst will be true and install will be an array containing (package2 package1)
Build .deb
Expected output:
$ ./build
dpkg-deb: building package 'driglibash' in 'driglibash.deb'.
Tests
Expected output:
$ cd tests
$ ./run.sh
OK. PASSED.
OK. PASSED.