diff --git a/advanced/Scripts/version.sh b/advanced/Scripts/version.sh index 521fa26c..e77fdfc2 100644 --- a/advanced/Scripts/version.sh +++ b/advanced/Scripts/version.sh @@ -10,26 +10,93 @@ # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. - - +# Flags: +latest=false +current=false normalOutput(){ -piholeVersion=$(cd /etc/.pihole/ && git describe --tags --abbrev=0) -webVersion=$(cd /var/www/html/admin/ && git describe --tags --abbrev=0) + piholeVersion=$(cd /etc/.pihole/ && git describe --tags --abbrev=0) + webVersion=$(cd /var/www/html/admin/ && git describe --tags --abbrev=0) -piholeVersionLatest=$(curl -s https://api.github.com/repos/pi-hole/pi-hole/releases/latest | grep -Po '"tag_name":.*?[^\\]",' | perl -pe 's/"tag_name": "//; s/^"//; s/",$//') -webVersionLatest=$(curl -s https://api.github.com/repos/pi-hole/AdminLTE/releases/latest | grep -Po '"tag_name":.*?[^\\]",' | perl -pe 's/"tag_name": "//; s/^"//; s/",$//') - -echo "::: Pi-hole version is $piholeVersion (Latest version is $piholeVersionLatest)" -echo "::: Web-Admin version is $webVersion (Latest version is $webVersionLatest)" + piholeVersionLatest=$(curl -s https://api.github.com/repos/pi-hole/pi-hole/releases/latest | grep -Po '"tag_name":.*?[^\\]",' | perl -pe 's/"tag_name": "//; s/^"//; s/",$//') + webVersionLatest=$(curl -s https://api.github.com/repos/pi-hole/AdminLTE/releases/latest | grep -Po '"tag_name":.*?[^\\]",' | perl -pe 's/"tag_name": "//; s/^"//; s/",$//') + echo "::: Pi-hole version is $piholeVersion (Latest version is $piholeVersionLatest)" + echo "::: Web-Admin version is $webVersion (Latest version is $webVersionLatest)" } +webOutput(){ + for var in "$@" + do + case "$var" in + "-l" | "--latest" ) latest=true;; + "-c" | "--current" ) current=true;; + * ) echo "::: Invalid Option!"; exit 1; + esac + done + + if [[ "${latest}" == true && "${current}" == false ]]; then + webVersionLatest=$(curl -s https://api.github.com/repos/pi-hole/AdminLTE/releases/latest | grep -Po '"tag_name":.*?[^\\]",' | perl -pe 's/"tag_name": "//; s/^"//; s/",$//') + echo ${webVersionLatest} + elif [[ "${latest}" == false && "${current}" == true ]]; then + webVersion=$(cd /var/www/html/admin/ && git describe --tags --abbrev=0) + echo ${webVersion} + else + webVersion=$(cd /var/www/html/admin/ && git describe --tags --abbrev=0) + webVersionLatest=$(curl -s https://api.github.com/repos/pi-hole/AdminLTE/releases/latest | grep -Po '"tag_name":.*?[^\\]",' | perl -pe 's/"tag_name": "//; s/^"//; s/",$//') + fi +} + +coreOutput(){ + for var in "$@" + do + case "$var" in + "-l" | "--latest" ) latest=true;; + "-c" | "--current" ) current=true;; + * ) echo "::: Invalid Option!"; exit 1; + esac + done + + if [[ "${latest}" == true && "${current}" == false ]]; then + piholeVersionLatest=$(curl -s https://api.github.com/repos/pi-hole/pi-hole/releases/latest | grep -Po '"tag_name":.*?[^\\]",' | perl -pe 's/"tag_name": "//; s/^"//; s/",$//') + echo ${piholeVersionLatest} + elif [[ "${latest}" == false && "${current}" == true ]]; then + piholeVersion=$(cd /etc/.pihole/ && git describe --tags --abbrev=0) + echo ${piholeVersion} + else + piholeVersion=$(cd /etc/.pihole/ && git describe --tags --abbrev=0) + piholeVersionLatest=$(curl -s https://api.github.com/repos/pi-hole/pi-hole/releases/latest | grep -Po '"tag_name":.*?[^\\]",' | perl -pe 's/"tag_name": "//; s/^"//; s/",$//') + echo "::: Pi-hole version is $piholeVersion (Latest version is $piholeVersionLatest)" + fi +} + +helpFunc() +{ + echo ":::" + echo "::: Show Pi-hole/Web Admin versions" + echo ":::" + echo "::: Usage: pihole -v [ -a | -p ] [ -l | -c ]" + echo ":::" + echo "::: Options:" + echo "::: -a, --admin Show both current and latest versions of web admin" + echo "::: -p, --pihole Show both current and latest versions of Pi-hole core files" + echo "::: -l, --latest (Only after -a | -p) Return only latest version" + echo "::: -c, --current (Only after -a | -p) Return only current version" + echo "::: -h, --help Show this help dialog" + echo ":::" + exit 0 +} + +if [[ $# = 0 ]]; then + normalOutput +fi + for var in "$@" do case "$var" in - "-j" | "--json" ) outputJSON;; - "-h" | "--help" ) displayHelp;; - * ) normalOutput;; + "-a" | "--admin" ) shift; webOutput "$@";; + "-p" | "--pihole" ) shift; coreOutput "$@" ;; + "-h" | "--help" ) helpFunc;; + * ) helpFunc;; esac done \ No newline at end of file