Advertisement
Guest User

Untitled

a guest
Dec 15th, 2016
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 7.04 KB | None | 0 0
  1. #!/bin/sh
  2.  
  3. # Author: Pali Rohár
  4. # License: GPLv3+
  5. # Description: Show state of CSSU packages in apt repositories and on github
  6.  
  7. dpkg_cmp() {
  8.     if [ -n "$1" -a -n "$2" ] && dpkg --compare-versions "$1" "<<" "$2"; then
  9.         return 0
  10.     else
  11.         return 1
  12.     fi
  13. }
  14.  
  15. GET_GIT_LIST=1
  16. export var_file=$(mktemp /tmp/var_list_XXXX)
  17.  
  18. NORMAL=$(tput sgr0)
  19. RED=$(tput setaf 1)
  20. PURPLE=$(tput setaf 6)
  21. ORANGE=$(tput setaf 3)
  22.  
  23. CMP_ORDER="git devel testing git-stable stable git-thumb thumb"
  24.  
  25. while getopts 123abcp: mode; do
  26.     case $mode in
  27.         1) GIT=1; TESTING=1;;
  28.         2) GIT=1; GITTHUMB=1; THUMB=1;;
  29.         3) GIT=1; GITSTABLE=1; STABLE=1;;
  30.         a) GIT=1; DEVEL=1; TESTING=1;;
  31.         b) GIT=1; DEVEL=1; TESTING=1; GITSTABLE=1; STABLE=1;;
  32.         c) GIT=1; DEVEL=1; TESTING=1; GITTHUMB=1; THUMB=1;;
  33.         p) GIT_PACKAGES=`echo $OPTARG | tr ',' ' '`; GET_GIT_LIST=0;;
  34.     esac
  35. done
  36. shift $(($OPTIND - 1))
  37.  
  38. for VERSION in `echo $* | tr '[:upper:]' '[:lower:]'`; do
  39.   case $VERSION in
  40.     'git') GIT=1;;
  41.     'devel') DEVEL=1;;
  42.     'testing') TESTING=1;;
  43.     'git-stable') GITSTABLE=1;;
  44.     'stable') STABLE=1;;
  45.     'git-thumb') GITTHUMB=1;;
  46.     'thumb') THUMB=1;;
  47.   esac
  48. done
  49.  
  50. if (($GET_GIT_LIST)); then
  51.     while (:); do
  52.         PAGE_NO=$(( $PAGE_NO + 1 ));
  53.         PKG_LIST=`wget --no-check-certificate -q "https://api.github.com/orgs/community-ssu/repos?per_page=100&page=$PAGE_NO" -O - | sed -n 's/^\s*"name": "\(.*\)",$/\1/p';`
  54.         [[ "$PKG_LIST" == "" ]] && break;
  55.         GIT_PACKAGES="$GIT_PACKAGES $PKG_LIST"
  56.     done
  57. fi
  58.  
  59. PACKAGES=
  60. for git_package in $GIT_PACKAGES; do
  61.     line=`wget --no-check-certificate -q https://raw.githubusercontent.com/community-ssu/$git_package/master/debian/changelog -O - | head -1 | sed -n 's/^\([^\ ]*\) (\(.*\)).*$/\1 \2/p'`
  62.     package=`echo $line | cut -f1 -d' '`
  63.     if [ -z "$package" ]; then
  64.         package=$git_package
  65.     fi
  66.     PACKAGES="$PACKAGES $package"
  67.     package=`echo $package | tr .+- ___`
  68.     eval GIT_$package="`echo $line | cut -f2 -d' '`"
  69.     (($GITSTABLE)) && eval GITSTABLE_$package="`wget --no-check-certificate -q https://raw.githubusercontent.com/community-ssu/$git_package/stable/debian/changelog -O - | head -1 | sed -n 's/^.*(\(.*\)).*$/\1/p'`"
  70.     (($GITTHUMB)) && eval GITTHUMB_$package="`wget --no-check-certificate -q https://raw.githubusercontent.com/community-ssu/$git_package/thumb-testing/debian/changelog -O - | head -1 | sed -n 's/^.*(\(.*\)).*$/\1/p'`"
  71. done
  72.  
  73. PACKAGES=`echo $PACKAGES | tr ' ' '\n' | sort -u`
  74.  
  75. if (($DEVEL)); then
  76.     wget --no-check-certificate -q http://maemo.merlin1991.at/cssu/community-devel/dists/fremantle/free/source/Sources.gz -O - | gunzip -v | (
  77.         package=
  78.         while read key value; do
  79.             if [ "$key" = "Package:" ]; then
  80.                 package=`echo $value | tr .+- ___`
  81.             elif [ -z "$key" ]; then
  82.                 package=""
  83.             elif [ "$key" = "Version:" ]; then
  84.                 if [ -n "$package" ]; then
  85.                     eval old="\${DEVEL_$package}"
  86.                     if [ -z "$old" ] || dpkg_cmp "$old" "$value"; then
  87.                         eval echo DEVEL_$package="$value" >> $var_file
  88.                         #echo "TEST - \${DEVEL_$package}"
  89.                     fi
  90.                 fi
  91.                 package=""
  92.             fi
  93.         done
  94.     )
  95. fi
  96.  
  97. if (($THUMB)); then
  98.     wget --no-check-certificate -q http://maemo.merlin1991.at/cssu/community-thumb/dists/fremantle/free/source/Sources.gz -O - | gunzip | (
  99.         package=
  100.         while read key value; do
  101.             if [ "$key" = "Package:" ]; then
  102.                 package=`echo $value | tr .+- ___`
  103.             elif [ -z "$key" ]; then
  104.                 package=""
  105.             elif [ "$key" = "Version:" ]; then
  106.                 if [ -n "$package" ]; then
  107.                     eval old="\${THUMB_$package}"
  108.                     if [ -z "$old" ] || dpkg_cmp "$old" "$value"; then
  109.                         eval echo THUMB_$package="$value" >> $var_file
  110.                     fi
  111.                 fi
  112.                 package=""
  113.             fi
  114.         done
  115.     )
  116. fi
  117.  
  118. if (($TESTING)); then
  119.     wget --no-check-certificate -q http://repository.maemo.org/community-testing/dists/fremantle/free/source/Sources.gz -O - | gunzip | (
  120.         package=
  121.         while read key value; do
  122.             if [ "$key" = "Package:" ]; then
  123.                 package=`echo $value | tr .+- ___`
  124.             elif [ -z "$key" ]; then
  125.                 package=""
  126.             elif [ "$key" = "Version:" ]; then
  127.                 if [ -n "$package" ]; then
  128.                     eval old="\${TESTING_$package}"
  129.                     if [ -z "$old" ] || dpkg_cmp "$old" "$value"; then
  130.                         eval echo TESTING_$package="$value" >> $var_file
  131.                     fi
  132.                 fi
  133.                 package=""
  134.             fi
  135.         done
  136. )
  137. fi
  138.  
  139. if (($STABLE)); then
  140.     wget --no-check-certificate -q http://repository.maemo.org/community/dists/fremantle/free/source/Sources.gz -O - | gunzip | (
  141.         package=
  142.         while read key value; do
  143.             if [ "$key" = "Package:" ]; then
  144.                 package=`echo $value | tr .+- ___`
  145.             elif [ -z "$key" ]; then
  146.                 package=""
  147.             elif [ "$key" = "Version:" ]; then
  148.                 if [ -n "$package" ]; then
  149.                     eval old="\${STABLE_$package}"
  150.                     if [ -z "$old" ] || dpkg_cmp "$old" "$value"; then
  151.                         eval echo STABLE_$package="$value" >> $var_file
  152.                     fi
  153.                 fi
  154.                 package=""
  155.             fi
  156.         done
  157.   )
  158. fi
  159.  
  160. . $var_file
  161. rm $var_file
  162.  
  163. printf "%-40s " "package"
  164. (($GIT)) && CMP_LIST="GIT " && printf "%-35s " "git"
  165. (($DEVEL)) && CMP_LIST="${CMP_LIST}DEVEL " && printf "%-35s " "devel"
  166. (($TESTING)) && CMP_LIST="${CMP_LIST}TESTING " && printf "%-35s " "testing"
  167. (($GITTHUMB)) && CMP_LIST="${CMP_LIST}GITTHUMB " && printf "%-35s " "git-thumb"
  168. (($THUMB)) && CMP_LIST="${CMP_LIST}THUMB " && printf "%-35s " "thumb"
  169. (($GITSTABLE)) && CMP_LIST="${CMP_LIST}GITSTABLE " && printf "%-35s " "git-stable"
  170. (($STABLE)) && CMP_LIST="${CMP_LIST}STABLE" && printf "%-35s " "stable"
  171. printf "\n"
  172.  
  173. #set -x
  174. for git_package in $PACKAGES; do
  175.     [ -z "$git_package" ] && continue;
  176.     package=`echo $git_package | tr .+- ___`
  177.     printf "%-40s " "$git_package"
  178.     for COMPARE in $CMP_LIST; do
  179.         COLOR="$NORMAL"
  180.         AFTER=0
  181.         eval version_cmp="\$${COMPARE}_$package"
  182.         for COMPARE_WITH in $CMP_LIST; do
  183.             [[ "$COMPARE" == "$COMPARE_WITH" ]] && AFTER=1 && continue;
  184.             eval version_cmp_with="\$${COMPARE_WITH}_$package"
  185.             if dpkg_cmp "$version_cmp" "$version_cmp_with"; then
  186.                 if (($AFTER)); then
  187.                     [[ "$COLOR" == "$RED" ]] && COLOR="$PURPLE" && break;
  188.                     COLOR="$ORANGE"
  189.                 else
  190.                     COLOR="$RED"
  191.                 fi
  192.             fi
  193.         done
  194.         printf "${COLOR}%-35s${NORMAL} " "$version_cmp"
  195.     done
  196.     printf "\n"
  197. done
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement