#!/bin/sh b="$(echo -n -e '\033[1m')" B="$(echo -n -e '\033[22m')" r="$(echo -n -e '\033[31m')" g="$(echo -n -e '\033[32m')" c="$(echo -n -e '\033[33m')" e="$(echo -n -e '\033[0m')" ignore() { } MULTI_CONTINUE=false [ -r .cleanbuildrc ] && . ./.cleanbuildrc [ -d mbuild ] || mkdir mbuild end_pkg() { result=fail [ $ret -eq 0 ] && result=ok mv mbuild/start.$package mbuild/$result.$package } get_pkg() { list="$1" package="" [ -r $list ] || return while read pkg info; do if [ ! -r mbuild/ok.$pkg ] && [ ! -r mbuild/fail.$pkg ] \ && [ ! -r mbuild/start.$pkg ]; then package="$pkg" touch mbuild/start.$package break fi done < $list } next_pkg() { get_pkg blist [ -n "$package" ] && return get_pkg blist2 if [ -z "$package" ]; then echo "${c}Nothing to build${e}" exit fi } ./clean "$@" package= next_pkg build="cleanbuild" while true; do time ./$build "$@" $package ret=$? OLDPWD="$PWD" cd $HOME/rpm/packages/$package DIFF="$(cvs -z3 diff -u $package.spec)" echo "$DIFF" | colordiff cd $OLDPWD if [ $ret -eq 0 ]; then COLOR="$g" else COLOR="$r" fi echo "$COLOR$package build finished with exit status $ret$e" if $MULTI_CONTINUE && [ $ret -eq 0 -a -z "$DIFF" ]; then echo "Nothing changed: continuing\n" ./clean "$@" end_pkg exec $0 "$@" exit fi MULTI_CONTINUE=false while true; do echo echo -n "${c}clean ${b}r${B}ebuild," "re${b}b${B}uild," \ "${b}i${B}nstall," "${b}a${B}ddbr," \ "${b}v${B}im," "${b}c${B}i," \ "${b}l${B}og," "${b}N${B}ext ?${e} " read ans case "x$ans" in x[rR]) build="cleanbuild" ;; x[bB]) build="build" ;; x[iI]) echo -n "${c}install>${e} " read pkg ./install "$@" $pkg echo "pkg installed with exit status $?" continue ;; x[aA]) echo -n "${c}br>${e} " read pkg ./install "$@" $pkg echo "pkg installed with exit status $?" [ $? == 0 ] && ./addbr $package $pkg "requested" continue ;; x[vV]) vim $HOME/rpm/packages/$package/$package.spec continue ;; x[cC]) cd $HOME/rpm/packages/ ./ci $package cd - continue ;; x[lL]) vim buildlogs/$package continue ;; xN) ./clean "$@" end_pkg exec $0 "$@" exit ;; xn) echo "upper case N required" continue ;; x[qQ]) ./clean "$@" end_pkg exit ;; *) continue ;; esac break done done # vim: ts=4:sw=4