zefie icon

apt-build-tools v0.3-debian7

zefie | PRO | 01/11/14 01:25:41 AM UTC | 0 ⭐ | 716 👁️ | Never ⏰ | []
Bash |

3.86 KB

|

None

|

0 👍

/

0 👎

#!/bin/bash
 
function fancy-timer() {
        for (( i=1; i<=$1; i++ )); do
            SEC=$(expr ${1} - $(expr ${i} - 1))
            SECW="second"
            if [ "$SEC" -ne "1" ]; then
                SECW="${SECW}s"
            fi
            LINE="$2 ${SEC} ${SECW}"
            SPC=$(expr $(tput cols) - ${#LINE})
            for (( j=1; j<=$SPC; j++ )); do
                echo -n " ";
            done;
            echo -ne "${LINE}\r"
            sleep 1
        done;
}
 
function check-blacklist() {
    grep -v "apt-utils"
}
function list1() {
    find `cat /etc/apt/apt-build.conf  | grep repository | cut -d'=' -f2` -name *.deb | rev | cut -d'/' -f 1 | rev | cut -d'+' -f 1 | sort | uniq | awk '{ printf " * %s\n", $1 }'
}
 
function list2() {
    dpkg --list | grep "ii  " | check-blacklist | grep aptbuild[0-9] | sed -e 's/  */\|/g' | cut -d'|' -f2-3 | sed -e 's/|/ /' | cut -d'+' -f1 | awk '{ printf " * %s-%s\n", $1, $2 }';
}
 
function list2-nodev() {
    list2 | grep -v "\-dev"
}
 
function list-nonopt() {
    dpkg --list | grep "ii  " | check-blacklist | grep -v "gcc" | grep -v "g++" | grep -v "\-dev" | grep -v aptbuild[0-9] | sed -e 's/  */\|/g' | cut -d'|' -f2-3 | sed -e 's/|/ /'
}
 
function list-nonopt-fmt() {
    list-nonopt | awk '{ printf " * %s-%s\n", $1, $2}';
}
 
function list-nonopt-list() {
    list-nonopt | cut -d' ' -f1
}
 
function list-all() {
    dpkg --list | grep "ii  " | check-blacklist | grep -v "gcc" | grep -v "g++" | grep -v "\-dev"
}
 
function update-repo() {
    sudo apt-get update -o Dir::Etc::sourcelist="sources.list.d/$1" \
    -o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0"
}
 
function update-aptbuild-repo() {
    update-repo apt-build.list
}
 
function count-packages() {
    TOT=$(list-all | wc -l)
    OPT=$(list2-nodev | wc -l)
    OP2=$(list2 | wc -l)
    NON=$(list-nonopt | wc -l)
    TES=$(expr ${OPT} + ${NON})
    EXP="?"
 
    if [ "$TOT" -eq "$TES" ]; then
        EXP=$(echo -e \\u2713)
    else
        if [ "$TOT" -gt "$TES" ]; then
            EXP="${EXP} -$(expr ${TOT} - ${TES})"
        else
            EXP="${EXP} +$(expr ${TES} - ${TOT})"
        fi
    fi
 
    if [ "$OP2" -gt "$OPT" ]; then
        EXP="${EXP} (+$(expr $OP2 - $OPT) dev)"
    fi
 
    echo "${OPT} optimized, ${NON} optimizable, ${TOT} total (${EXP})"
}
 
function reb-status() {
    while (true); do
        clear;
        echo "* `date`";
        USED=$(df -m / | tail -n 1 | sed -e 's/  */ /g;' | cut -d' ' -f 3)M
        FREE=$(df -h / | tail -n 1 | sed -e 's/  */ /g;' | cut -d' ' -f 4)
        MEMU=$(free -m | head -n 2 | tail -n 1 | sed -e 's/  */ /g;' | cut -d' ' -f3)
        MEMT=$(free -m | head -n 2 | tail -n 1 | sed -e 's/  */ /g;' | cut -d' ' -f2)
        SWPU=$(free -m | tail -n 1 | sed -e 's/  */ /g;' | cut -d' ' -f3)
        SWPT=$(free -m | tail -n 1 | sed -e 's/  */ /g;' | cut -d' ' -f2)
        PROC=$(expr $(ps aux | wc -l) - 1)
        echo ""
        echo "Memory: ${MEMU}/${MEMT}M (${SWPU}/${SWPT}M Swap)"
        echo "Running Processes: ${PROC}"
        echo "Disk space: Used ${USED} of ${FREE}";
        count-packages
        fancy-timer 30 "Next update in"
    done;
}
 
function help() {
    echo "Usage: $0 [(u)pdate, (up)grade, (l)ist installed, (a)vailable, (i)nstall, (b)uild, (s)tatus, (n)ot-optimized, (w)orldlist, (c)ount] [<pkg to build/install>]"
    exit
}
 
function ipkg() {
    PKG=$(ls -1 `cat /etc/apt/apt-build.conf  | grep repository | cut -d'=' -f2`/${1}* | sort -r | uniq | head -n 1)
    sudo dpkg -i ${PKG}
}
 
function genworldlist() {
    dpkg --get-selections | grep -v gcc | grep -v g\+\+ | awk '{if ($2 == "install") print $1}'
}
 
case $1 in
    "up")
    sudo apt-get upgrade
    ;;
 
    "u")
    update-aptbuild-repo
    ;;
 
    "l")
    list2
    ;;
 
    "o")
    list2
    ;;
 
    "c")
    count-packages
    ;;
 
    "n")
    list-nonopt-fmt
    ;;
 
    "nf")
    list-nonopt-fmt
    ;;
 
    "nl")
    list-nonopt-list
    ;;
 
    "nr")
    list-nonopt
    ;;
 
    "w")
    genworldlist
    ;;
 
    "s")
    reb-status
    ;;
 
    "a")
    list1
    ;;
 
    "i")
    ipkg ${2}
    ;;
 
    "ia")
    sudo dpkg -i /var/cache/apt-build/repository/*.deb
    ;;
 
    "b")
    sudo apt-build --noupdate build-source ${2}
    ;;
 
    *)
    help
    ;;
esac

Comments