Search
Search
Search
Search
Information
Information
Light
Dark
Open actions menu
Basic upload method
Bypass upload method
Tips!
If you encounter an error (by firewall) while uploading using both methods,
try changing extension of the file before uploading it and rename it right after.
This uploader supports multiple file upload.
Submit
~
lib
byobu
File Content:
updates_available
#!/bin/sh -e # # updates_available: calculate and cache the number of updates available # # Copyright (C) 2008 Canonical Ltd. # Copyright (C) 2011-2014 Dustin Kirkland # # Authors: Dustin Kirkland <kirkland@byobu.org> # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, version 3 of the License. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. ___print_updates() { local u= s= read u s < "$1" if [ -n "$u" ]; then if [ "$u" -gt 0 ]; then color b r W; printf "%d" "$u"; color -; color r W if [ -n "$s" ] && [ "$s" -gt 0 ]; then printf "$ICON_SECURITY" else printf "$ICON_UPDATES" fi color -- elif [ "$u" = "0" ] && [ -e "$BYOBU_RUN_DIR/status.$BYOBU_BACKEND/updates_available" ]; then # Clear out byobu's status cache rm -f "$BYOBU_RUN_DIR/status.$BYOBU_BACKEND/updates_available"* fi fi } ___update_cache() { local mycache=$1 flock="$1.lock" # Now we actually have to do hard computational work to calculate updates. # Let's try to be "nice" about it: renice 10 $$ >/dev/null 2>&1 || true ionice -c3 -p $$ >/dev/null 2>&1 || true # These are very computationally intensive processes. # Background this work, have it write to the cache files, # and let the next cache check pick up the results. # Ensure that no more than one of these run at a given time if [ -x /usr/lib/update-notifier/apt-check ]; then # If apt-check binary exists, use it flock -xn "$flock" sh -c "(/usr/lib/update-notifier/apt-check 2>&1 | awk '-F;' 'END { print \$1, \$2 }' >\"${mycache}-x\" 2>/dev/null ; mv \"${mycache}-x\" \"$mycache\")" & elif eval $BYOBU_TEST apt-get >/dev/null; then # If apt-get exists, use it flock -xn "$flock" apt-get -s -o Debug::NoLocking=true upgrade | grep -c ^Inst >$mycache 2>/dev/null & elif eval $BYOBU_TEST pkcon >/dev/null; then # use packagekit to show list of packages LC_ALL=C flock -xn "$flock" pkcon get-updates -p | awk '/^Results:$/ { start=NR }; /^Security/ { security++ }; END { if (!/There are no updates available at this time./) { print NR-start, security }}' > "$mycache" 2>/dev/null & elif eval $BYOBU_TEST zypper >/dev/null; then # If zypper exists, use it flock -xn "$flock" zypper --no-refresh lu --best-effort | grep -c 'v |' >$mycache 2>/dev/null & elif eval $BYOBU_TEST yum >/dev/null; then # If yum exists, use it # TODO: We need a better way of counting updates available from a RH expert flock -xn "$flock" yum list updates -q | grep -vc "Updated Packages" >$mycache 2>/dev/null & elif eval $BYOBU_TEST pacman >/dev/null; then # If pacman (Archlinux) exists, use it LC_ALL=C flock -xn "$flock" pacman -Sup | grep -vc "^\(::\| \)" >$mycache 2>/dev/null & elif eval $BYOBU_TEST opkg >/dev/null; then # If opkg (OpenWrt) exists, use it, also background if flock exists if eval $BYOBU_TEST flock >/dev/null; then flock -xn "$flock" opkg list-upgradable | wc -l >$mycache 2>/dev/null & else opkg list-upgradable | wc -l >$mycache & fi elif eval $BYOBU_TEST brew >/dev/null; then # If homebrew (Mac OSX) exists, use it, also background if flock exists if eval $BYOBU_TEST flock >/dev/null; then flock -xn "$flock" brew outdated | wc -l >$mycache 2>/dev/null & else brew outdated | wc -l >$mycache & fi fi } ___update_needed() { # Checks if we need to update the cache. # TODO: add more distro local mycache=$1 # The cache doesn't exist: create it [ ! -e "$mycache" ] && return 0 if eval $BYOBU_TEST apt-get >/dev/null; then # Debian/ubuntu d0=$(($(stat -c %Y $mycache 2>/dev/null)-5)) d1=$(stat -c %Y /var/lib/apt) d2=$(stat -c %Y /var/lib/apt/lists) d3=$(stat -c %Y /var/log/dpkg.log) now=$(date +%s) delta=$(($now-$d0)) if [ $d0 -lt 0 ] || [ $d0 -lt $d1 ] || [ $d0 -lt $d2 ] || [ $d0 -lt $d3 ] || [ 3605 -lt $delta ] ; then return 0 else return 1 fi elif [ -e "/var/lib/PackageKit/transactions.db" ]; then [ "/var/lib/PackageKit/transactions.db" -nt "$mycache" ] return $? elif eval $BYOBU_TEST pacman >/dev/null; then # Archlinux local db for db in /var/lib/pacman/sync/*.db; do [ "$db" -nt "$mycache" ] && return 0 done return 1 elif eval $BYOBU_TEST opkg >/dev/null; then # OpenWrt [ ! -e /var/lock/opkg.lock ] || return 1 if [ -d /var/opkg-lists ]; then [ /var/opkg-lists -nt "$mycache" ] return $? else local u s read u s < "$mycache" [ "$u" -gt 0 ] return $? fi elif eval $BYOBU_TEST brew >/dev/null; then # Mac OSX # check if any new versions have been installed since # we last cached. this may not recognize formulae # installed with HEAD for f in $(brew --prefix)/Cellar/*; do [ "$f" -nt "$mycache" ] && return 0 done # nothing new has been installed, so check wether the # formulae database was updated [ "$(brew --prefix)/Library/Formula" -nt "$mycache" ] return $? fi return 1 } __updates_available_detail() { if eval $BYOBU_TEST apt-get >/dev/null; then local detail=`apt-get -s -o Debug::NoLocking=true upgrade` if [ "$1" = "--detail" ]; then printf "$detail" else local short=`printf "%s" "$detail" | grep -c ^Inst` printf "$short" fi fi } __updates_available() { local mycache="$BYOBU_RUN_DIR/cache.$BYOBU_BACKEND/updates-available" # If mycache is present, use it [ -r $mycache ] && ___print_updates "$mycache" # If we really need to do so (mycache doesn't exist, or the package database has changed), # background an update now ___update_needed "$mycache" && ___update_cache "$mycache" } # vi: syntax=sh ts=4 noexpandtab
Edit
Download
Unzip
Chmod
Delete