diff --git a/bashbirds.sh b/bashbirds.sh new file mode 100755 index 0000000..270f49a --- /dev/null +++ b/bashbirds.sh @@ -0,0 +1,195 @@ +#!/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 diff --git a/bdd.sh b/bdd.sh deleted file mode 100755 index 252752e..0000000 --- a/bdd.sh +++ /dev/null @@ -1,87 +0,0 @@ -#!/usr/bin/env bash - -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" - - -req2() { - query2="SELECT * FROM liste;" - result2=$(sqlite3 ./birds.db "$query2") - #echo "$result2" - - array=() - while IFS='|' read -ra array; - do - fr="${array[0]}" - aut="${array[1]}" - lat="${array[2]}" - en="${array[3]}" - ln="${array[4]}" - [[ $aut != "" ]] && z="($aut)" || z="" - - echo -e "${bold}$fr ${reset} $z" - echo "$lat" - echo "$en" - echo "$ln" - echo - - done <<< "$result2" - } - -req1() { - query1="SELECT * FROM liste WHERE francais LIKE \"%$1%\""; - #query2="SELECT * FROM liste WHERE Francais LIKE '%Vautour%'"; - result1=$(sqlite3 ./birds.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]}" - lnk2="${array2[4]}" - - echo ${#fr2} - echo ${#aut2} - echo ${#lat2} - echo ${#en2} - echo ${#lnk2} - - #lnk2="https://www.oiseaux.net/oiseaux/vautour.africain.html" - #echo "$cmpt $fr2 $aut2 $lat2 $en2 $lnk2" - echo "$lnk2" - - echo - printf "| %-3s | %-30s | %-30s | %-30s | \n" "$cmpt" "$fr2" "$lat2" "$en2" - printf "| %-3s | %-65s | \n" "$cmpt" "${lnk2}" - echo - #printf "| %-3s | %-55s |\n" "$cmpt" "$lnk" - cmpt=$((cmpt+1)) - done <<< "$result1" - } - -if [ -f ./birds.db ]; then - - #echo "$result" - - #req2 - - echo - - req1 "$1" - -else - echo -e "${red}No database found !${reset}" - exit 1 -fi