Merge pull request #684 from zhaostu/master

Update type `__package_update_index`
This commit is contained in:
Darko Poljak 2018-08-31 10:47:30 +02:00 committed by GitHub
commit fbc129e2ef
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 69 additions and 40 deletions

View File

@ -17,18 +17,24 @@
# You should have received a copy of the GNU General Public License
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
os="$("$__explorer/os")"
type="$($__type_explorer/type)"
case "$os" in
debian|ubuntu|devuan)
case "$type" in
apt)
if [ -f "/var/cache/apt/pkgcache.bin" ]; then
echo $(($(date +"%s")-$(stat --format '%Y' /var/cache/apt/pkgcache.bin)))
else
echo 0
fi
;;
*) echo "Your operating system ($os) is currently not supported by this type (${__type##*/})." >&2
pacman)
if [ -d "/var/lib/pacman/sync" ]; then
echo $(($(date +"%s")-$(stat --format '%Y' /var/lib/pacman/sync)))
else
echo 0
fi
;;
*) echo "Your specified type ($type) is currently not supported." >&2
echo "Please contribute an implementation for it if you can." >&2
exit 1
;;
esac

View File

@ -0,0 +1,34 @@
#!/bin/sh
#
# 2018 Stu Zhao (z12y12l12 at gmail.com)
#
# This file is part of cdist.
#
# cdist 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, either version 3 of the License, or
# (at your option) any later version.
#
# cdist 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 cdist. If not, see <http://www.gnu.org/licenses/>.
if [ -f "$__object/parameter/type" ]; then
cat "$__object/parameter/type"
else
# By default determine package manager based on operating system
os="$($__explorer/os)"
case "$os" in
amazon|scientific|centos|fedora|redhat) echo "yum" ;;
debian|ubuntu|devuan) echo "apt" ;;
archlinux) echo "pacman" ;;
*)
echo "Don't know how to manage packages on: $os" >&2
exit 1
;;
esac
fi

View File

@ -21,49 +21,34 @@
# Update the package index with the appropriate package manager
#
type="$__object/parameter/type"
type=$(cat "$__object/explorer/type")
currage="$(cat "$__object/explorer/currage")"
if [ -f "$__object/parameter/maxage" ]; then
maxage="$(cat "$__object/parameter/maxage")"
currage="$(cat "$__object/explorer/currage")"
fi
if [ -f "$type" ]; then
type="$(cat "$type")"
else
# By default determine package manager based on operating system
os="$(cat "$__global/explorer/os")"
case "$os" in
amazon|scientific|centos|fedora|redhat) type="yum" ;;
debian|ubuntu|devuan) type="apt" ;;
archlinux) type="pacman" ;;
*)
echo "Don't know how to manage packages on: $os" >&2
exit 1
;;
esac
if [ -n "$maxage" ]; then
if [ "$type" != "apt" -a "$type" != "pacman" ]; then
echo "ERROR: \"--maxage\" only supported for \"apt\" or \"pacman\" pkg-manager." >&2
exit 1
elif [ $currage -lt $maxage ]; then
exit 0 # no need to update
fi
fi
if [ -n "$maxage" ] && [ "$type" != "apt" ]; then
echo "ERROR: \"--maxage\" only supported for \"apt\" pkg-manager." >&2
exit 1
fi
case "$type" in
yum) ;;
apt) if [ -n "$maxage" ]; then
## check if we need to update:
if [ $currage -ge $maxage ]; then
echo "apt-get --quiet update"
echo "apt-cache updated (age was: $currage)" >> "$__messages_out"
fi
else
echo "apt-get --quiet update"
echo "apt-cache updated (age was: $currage)" >> "$__messages_out"
fi
;;
pacman) echo "pacman --noprogressbar --sync --refresh" ;;
apt)
echo "apt-get --quiet update"
echo "apt-cache updated (age was: $currage)" >> "$__messages_out"
;;
pacman)
echo "pacman --noprogressbar --sync --refresh"
echo "pacman package database synced (age was: $currage)" >> "$__messages_out"
;;
*)
echo "Don't know how to manage packages on: $os" >&2
echo "Don't know how to manage packages for type: $type" >&2
exit 1
;;
esac

View File

@ -28,8 +28,8 @@ type
* pacman for Arch Linux
maxage
Available for package manager apt, max time in seconds since last update.
Repo update is skipped if maxage is not reached yet.
Available for package manager apt and pacman, max time in seconds since
last update. Repo update is skipped if maxage is not reached yet.
MESSAGES
--------
@ -51,6 +51,7 @@ EXAMPLES
# Only update every hour:
__package_update_index --maxage 3600 --type apt
# same as above (on apt-type systems):
__package_update_index --maxage 3600
@ -58,6 +59,7 @@ AUTHORS
-------
| Ricardo Catalinas Jiménez <jimenezrick--@--gmail.com>
| Thomas Eckert <tom--@--it-eckert.de>
| Stu Zhao <z12y12l12--@--gmail.com>
COPYING

View File

@ -6,6 +6,8 @@ next:
* Type __systemd_unit: Fix minor issues and add masking unit files support (Adam Dej)
* Type __grafana_dashboard: Fix devuan ascii support (Dominique Roux)
* Type __apt_source: Add nonparallel marker (Darko Poljak)
* Type __package_update_index: Fix error when using OS not using apt (Stu Zhao)
* Type __package_update_index: Support --maxage for type pacman (Stu Zhao)
4.10.1: 2018-06-21
* Type __letsencrypt_cert: Fix temp file location and removal (Darko Poljak)