forked from ungleich-public/cdist
		
	Merge pull request #684 from zhaostu/master
Update type `__package_update_index`
This commit is contained in:
		
				commit
				
					
						fbc129e2ef
					
				
			
		
					 5 changed files with 69 additions and 40 deletions
				
			
		|  | @ -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 | ||||
|  |  | |||
							
								
								
									
										34
									
								
								cdist/conf/type/__package_update_index/explorer/type
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								cdist/conf/type/__package_update_index/explorer/type
									
										
									
									
									
										Normal 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 | ||||
|  | @ -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 | ||||
|  |  | |||
|  | @ -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 | ||||
|  |  | |||
|  | @ -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) | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue