driglibash/README.md

104 lines
3.2 KiB
Markdown
Executable File
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 cant 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.
```