#!/usr/bin/env bash VERSION="v0.5b" ### ChangeNotes: Notification template changes for: gotify(new), DSM(improved), SMTP(deprecation alternative). Github="https://github.com/bruno21/bashbirds" RawUrl="https://raw.githubusercontent.com/bruno21/bashbirds/main/dockcheck.sh" ### Variables for self updating ScriptArgs=( "$@" ) ScriptPath="$(readlink -f "$0")" ScriptWorkDir="$(dirname "$ScriptPath")" echo ScriptWorkDir ### Check if there's a new release of the script: LatestRelease="$(curl -s -r 0-50 $RawUrl | sed -n "/VERSION/s/VERSION=//p" | tr -d '"')" LatestChanges="$(curl -s -r 0-200 $RawUrl | sed -n "/ChangeNotes/s/### ChangeNotes: //p")" red="\033[1;31m" greenbold="\033[1;32m" green="\033[0;32m" yellow="\033[0;33m" bold="\033[1m" #bold_under="\033[1;4m" underline="\033[4m" reset="\033[0m" search="$1" #echo "$search" dir=$(dirname "$0") #echo $dir #file="liste_oiseaux.txt" #echo $file req2() { f_md="liste_oiseaux.md" if [ -f "./$f_md" ]; then rm "./$f_md" fi read -p "Pause: " choice query2="SELECT * FROM liste;" result2=$(sqlite3 ./birds_plus.db "$query2") #echo "$result2" array=() while IFS='|' read -ra array; do fr="${array[0]}" aut="${array[1]}" lat="${array[2]}" en="${array[3]}" or="${array[4]}" fa="${array[5]}" ln="${array[6]}" [[ $aut != "" ]] && z="($aut)" || z="" echo "| $fr $z |" >>"$f_md" echo "|--------------------------------------------------|" >>"$f_md" echo "| $lat |" >> "$f_md" echo "| $en |" >> "$f_md" echo "| $or |" >> "$f_md" echo "| $fa |" >> "$f_md" echo "| $ln |" >> "$f_md" echo "" >> "$f_md" done <<< "$result2" exit 0 } req1() { query1="SELECT * FROM liste WHERE francais LIKE \"%$1%\""; result1=$(sqlite3 ./birds_plus.db "$query1") #echo "$result1" array2=() cmpt=1 while IFS='|' read -ra array2; do fr2="${array2[0]}" aut2="${array2[1]}" lat2="${array2[2]}" en2="${array2[3]}" or2="${array2[4]}" fa2="${array2[5]}" lnk2="${array2[6]}" tag2="$fr2,$lat2,$en2" if [ -n "$or2" ]; then tag2+=",$or2" fi if [ -n "$fa2" ]; then tag2+=",$fa2" fi #echo "${#fr2} ; ${#aut2} ; ${#lat2} ; ${#en2} ; ${#or2} ; ${#fa2} ; ${#lnk2}" echo printf "| %-3s | %-25s | %-25s | %-25s | %-20s | %-20s \n" "$cmpt" "$fr2" "$lat2" "$en2" "$or2" "$fa2" printf "| %-3s | %-55s \n" "$cmpt" "$lnk2" printf "| %-3s | %-55s \n" "$cmpt" "$tag2" cmpt=$((cmpt+1)) done <<< "$result1" } self_update_curl() { cp "$ScriptPath" "$ScriptPath".bak if [[ $(builtin type -P curl) ]]; then curl -L $RawUrl > "$ScriptPath" ; chmod +x "$ScriptPath" printf "\n%s\n" "--- starting over with the updated version ---" exec "$ScriptPath" "${ScriptArgs[@]}" # run the new script with old arguments exit 1 # exit the old instance elif [[ $(builtin type -P wget) ]]; then wget $RawUrl -O "$ScriptPath" ; chmod +x "$ScriptPath" printf "\n%s\n" "--- starting over with the updated version ---" exec "$ScriptPath" "${ScriptArgs[@]}" # run the new script with old arguments exit 1 # exit the old instance else printf "curl/wget not available - download the update manually: %s \n" "$Github" fi } self_update() { cd "$ScriptWorkDir" || { printf "Path error, skipping update.\n" ; return ; } if [[ $(builtin type -P git) ]] && [[ "$(git ls-remote --get-url 2>/dev/null)" =~ .*"mag37/dockcheck".* ]] ; then printf "\n%s\n" "Pulling the latest version." git pull --force || { printf "Git error, manually pull/clone.\n" ; return ; } printf "\n%s\n" "--- starting over with the updated version ---" cd - || { printf "Path error.\n" ; return ; } exec "$ScriptPath" "${ScriptArgs[@]}" # run the new script with old arguments exit 1 # exit the old instance else cd - || { printf "Path error.\n" ; return ; } self_update_curl fi } ### Version check & initiate self update if [[ "$VERSION" != "$LatestRelease" ]] ; then printf "New version available! %b%s%b ⇒ %b%s%b \n Change Notes: %s \n" "$c_yellow" "$VERSION" "$c_reset" "$c_green" "$LatestRelease" "$c_reset" "$LatestChanges" if [[ -z "$AutoUp" ]] ; then read -r -p "Would you like to update? y/[n]: " SelfUpdate [[ "$SelfUpdate" =~ [yY] ]] && self_update fi fi if [ -f ./birds_plus.db ]; then #echo "$result" #req2 echo #req1 "$1" else echo -e "${red}No database found !${reset}" exit 1 fi ### Help Function: Help() { echo "Syntax: birds.sh [OPTION]" echo "Example: birds.sh -b buse" echo echo "Options:" echo "-b -b bird, -b all." echo "-h Print this Help." echo "-m Export markdown." echo "-v Prints current version." echo "-w Export html." } while getopts "b:hm" options; do case "${options}" in b) Bird="${OPTARG}" ;; m) req2 ;; v) printf "%s\n" "$VERSION" ; exit 0 ;; h|*) Help ; exit 2 ;; esac done shift "$((OPTIND-1))" echo "bird: $Bird" read -p "Pause: " choice if [ $Bird == "all" ]; then req1 elif [ -n $Bird ]; then req1 "$Bird" fi