Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/sh
- # Author: Pali Rohár
- # License: GPLv3+
- # Description: Show state of CSSU packages in apt repositories and on github
- dpkg_cmp() {
- if [ -n "$1" -a -n "$2" ] && dpkg --compare-versions "$1" "<<" "$2"; then
- return 0
- else
- return 1
- fi
- }
- GET_GIT_LIST=1
- export var_file=$(mktemp /tmp/var_list_XXXX)
- NORMAL=$(tput sgr0)
- RED=$(tput setaf 1)
- PURPLE=$(tput setaf 6)
- ORANGE=$(tput setaf 3)
- CMP_ORDER="git devel testing git-stable stable git-thumb thumb"
- while getopts 123abcp: mode; do
- case $mode in
- 1) GIT=1; TESTING=1;;
- 2) GIT=1; GITTHUMB=1; THUMB=1;;
- 3) GIT=1; GITSTABLE=1; STABLE=1;;
- a) GIT=1; DEVEL=1; TESTING=1;;
- b) GIT=1; DEVEL=1; TESTING=1; GITSTABLE=1; STABLE=1;;
- c) GIT=1; DEVEL=1; TESTING=1; GITTHUMB=1; THUMB=1;;
- p) GIT_PACKAGES=`echo $OPTARG | tr ',' ' '`; GET_GIT_LIST=0;;
- esac
- done
- shift $(($OPTIND - 1))
- for VERSION in `echo $* | tr '[:upper:]' '[:lower:]'`; do
- case $VERSION in
- 'git') GIT=1;;
- 'devel') DEVEL=1;;
- 'testing') TESTING=1;;
- 'git-stable') GITSTABLE=1;;
- 'stable') STABLE=1;;
- 'git-thumb') GITTHUMB=1;;
- 'thumb') THUMB=1;;
- esac
- done
- if (($GET_GIT_LIST)); then
- while (:); do
- PAGE_NO=$(( $PAGE_NO + 1 ));
- 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';`
- [[ "$PKG_LIST" == "" ]] && break;
- GIT_PACKAGES="$GIT_PACKAGES $PKG_LIST"
- done
- fi
- PACKAGES=
- for git_package in $GIT_PACKAGES; do
- 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'`
- package=`echo $line | cut -f1 -d' '`
- if [ -z "$package" ]; then
- package=$git_package
- fi
- PACKAGES="$PACKAGES $package"
- package=`echo $package | tr .+- ___`
- eval GIT_$package="`echo $line | cut -f2 -d' '`"
- (($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'`"
- (($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'`"
- done
- PACKAGES=`echo $PACKAGES | tr ' ' '\n' | sort -u`
- if (($DEVEL)); then
- wget --no-check-certificate -q http://maemo.merlin1991.at/cssu/community-devel/dists/fremantle/free/source/Sources.gz -O - | gunzip -v | (
- package=
- while read key value; do
- if [ "$key" = "Package:" ]; then
- package=`echo $value | tr .+- ___`
- elif [ -z "$key" ]; then
- package=""
- elif [ "$key" = "Version:" ]; then
- if [ -n "$package" ]; then
- eval old="\${DEVEL_$package}"
- if [ -z "$old" ] || dpkg_cmp "$old" "$value"; then
- eval echo DEVEL_$package="$value" >> $var_file
- #echo "TEST - \${DEVEL_$package}"
- fi
- fi
- package=""
- fi
- done
- )
- fi
- if (($THUMB)); then
- wget --no-check-certificate -q http://maemo.merlin1991.at/cssu/community-thumb/dists/fremantle/free/source/Sources.gz -O - | gunzip | (
- package=
- while read key value; do
- if [ "$key" = "Package:" ]; then
- package=`echo $value | tr .+- ___`
- elif [ -z "$key" ]; then
- package=""
- elif [ "$key" = "Version:" ]; then
- if [ -n "$package" ]; then
- eval old="\${THUMB_$package}"
- if [ -z "$old" ] || dpkg_cmp "$old" "$value"; then
- eval echo THUMB_$package="$value" >> $var_file
- fi
- fi
- package=""
- fi
- done
- )
- fi
- if (($TESTING)); then
- wget --no-check-certificate -q http://repository.maemo.org/community-testing/dists/fremantle/free/source/Sources.gz -O - | gunzip | (
- package=
- while read key value; do
- if [ "$key" = "Package:" ]; then
- package=`echo $value | tr .+- ___`
- elif [ -z "$key" ]; then
- package=""
- elif [ "$key" = "Version:" ]; then
- if [ -n "$package" ]; then
- eval old="\${TESTING_$package}"
- if [ -z "$old" ] || dpkg_cmp "$old" "$value"; then
- eval echo TESTING_$package="$value" >> $var_file
- fi
- fi
- package=""
- fi
- done
- )
- fi
- if (($STABLE)); then
- wget --no-check-certificate -q http://repository.maemo.org/community/dists/fremantle/free/source/Sources.gz -O - | gunzip | (
- package=
- while read key value; do
- if [ "$key" = "Package:" ]; then
- package=`echo $value | tr .+- ___`
- elif [ -z "$key" ]; then
- package=""
- elif [ "$key" = "Version:" ]; then
- if [ -n "$package" ]; then
- eval old="\${STABLE_$package}"
- if [ -z "$old" ] || dpkg_cmp "$old" "$value"; then
- eval echo STABLE_$package="$value" >> $var_file
- fi
- fi
- package=""
- fi
- done
- )
- fi
- . $var_file
- rm $var_file
- printf "%-40s " "package"
- (($GIT)) && CMP_LIST="GIT " && printf "%-35s " "git"
- (($DEVEL)) && CMP_LIST="${CMP_LIST}DEVEL " && printf "%-35s " "devel"
- (($TESTING)) && CMP_LIST="${CMP_LIST}TESTING " && printf "%-35s " "testing"
- (($GITTHUMB)) && CMP_LIST="${CMP_LIST}GITTHUMB " && printf "%-35s " "git-thumb"
- (($THUMB)) && CMP_LIST="${CMP_LIST}THUMB " && printf "%-35s " "thumb"
- (($GITSTABLE)) && CMP_LIST="${CMP_LIST}GITSTABLE " && printf "%-35s " "git-stable"
- (($STABLE)) && CMP_LIST="${CMP_LIST}STABLE" && printf "%-35s " "stable"
- printf "\n"
- #set -x
- for git_package in $PACKAGES; do
- [ -z "$git_package" ] && continue;
- package=`echo $git_package | tr .+- ___`
- printf "%-40s " "$git_package"
- for COMPARE in $CMP_LIST; do
- COLOR="$NORMAL"
- AFTER=0
- eval version_cmp="\$${COMPARE}_$package"
- for COMPARE_WITH in $CMP_LIST; do
- [[ "$COMPARE" == "$COMPARE_WITH" ]] && AFTER=1 && continue;
- eval version_cmp_with="\$${COMPARE_WITH}_$package"
- if dpkg_cmp "$version_cmp" "$version_cmp_with"; then
- if (($AFTER)); then
- [[ "$COLOR" == "$RED" ]] && COLOR="$PURPLE" && break;
- COLOR="$ORANGE"
- else
- COLOR="$RED"
- fi
- fi
- done
- printf "${COLOR}%-35s${NORMAL} " "$version_cmp"
- done
- printf "\n"
- done
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement