#!/bin/bash # if [ ${git_helpers_sourced:-1} = "1" ]; then # readonly git_helpers_sourced=${BASH_SOURCE[0]} #else # return 0 #fi source ./general_utils exec_opkg_command () { local func="${FUNCNAME[0]}" log_debug "$func:${LINENO} exec-ing [$*]" local __result=$(exec_process_substitution $*) log_debug "$func:${LINENO} result=$__result" printf '%s' "$__result" } # Fetch/merge updates from predefined repository using git. # fetch_customer_updates() { local func="${FUNCNAME[0]}" if ! pull_customer_repository $1; then return 1 fi return 0 } # Check if the fetched/merged files have the correct md5 and are # valid for the PSA. # check_md5_for_changed_customer_files () { local func="${FUNCNAME[0]}" #for file in ($1); do # Check the updates for correct MD5 # log_error "$func:${LINENO}: new customer files wrong" # revert_customer_repository ; exit 1 # fi #done return 0 } check_md5_for_opkg_packages () { local func="${FUNCNAME[0]}" local -n opkg_output_ref=$1 local package="" local md5sum="" local filename="" for line in ${opkg_output_ref[@]}; do if grep -qE "^\s*Package\s*:.*?$" <<< "$line"; then package=${line#*:* } printf 'package=%s\n' "$package" elif grep -qE "^\s*MD5Sum\s*:.*?$" <<< "$line"; then md5sum=${line#*:* } printf 'md5sum=%s\n' "$md5sum" elif grep -qE "^\s*Filename\s*:.*?$" <<< "$line"; then filename=${line#*:* } printf 'filename=%s\n' "$filename" fi done log_debug "$func:${LINENO}: $package | $md5sum | $filename" return 0 } # In case the new checked-out files are not correct, revert the git # repository to its previous state. # revert_customer_repository() { local func="${FUNCNAME[0]}" return 0 } # Backup before the update-process. # backup_previous_version () { local func="${FUNCNAME[0]}" return 0 } exec_opkg_info () { local func="${FUNCNAME[0]}" log_info "$func:${LINENO}: executing $opkg_command" opkg_result=$(exec_opkg_command "opkg info $1") # make sure the keywords start with '\n' opkg_result=$(sed -E -e "s/(^.*)(Package)(.*$)/\n\2\3/g"\ -e "s/(^.*)(Version)(.*$)/\1\n\2\3/g"\ -e "s/(^.*)(Depends)(.*$)/\1\n\2\3/g"\ -e "s/(^.*)(Status)(.*$)/\1\n\2\3/g"\ -e "s/(^.*)(Architecture)(.*$)/\1\n\2\3/g"\ -e "s/(^.*)(Maintainer)(.*$)/\1\n\2\3/g"\ -e "s/(^.*)(MD5Sum)(.*$)/\1\n\2\3/g"\ -e "s/(^.*)(Filename)(.*$)/\1\n\2\3/g"\ -e "s/(^.*)(Source)(.*$)/\1\n\2\3/g"\ -e "s/(^.*)(Description)(.*$)/\1\n\2\3/g"\ -e "s/(^.*)(Installed-Size)(.*$)/\1\n\2\3/g"\ -e "s/(^.*)(Section)(.*$)/\1\n\2\3/g"\ -e "s/(^.*[^-])(Size)(.*$)/\1\n\2\3/g"\ -e "s/(^.*)(Installed-Time)(.*$)/\1\n\2\3/g" <<< "$opkg_result") local -n output_ref=$2 readarray -d $'\n' output_ref < <(printf '%s' "$opkg_result") if [ $? -ne 0 ]; then log_error "$func:${LINENO}: readarray finished with error" return 1 fi log_info "$func:${LINENO}: ... done" log_info "$func:${LINENO}: opkg_result=${output_ref[@]}" return 0 } # Try to install new opkg-packages (in case the are some # in the new git-checkout). # exec_opkg_no_action() { local func="${FUNCNAME[0]}" local opkg_command_no_action="opkg --noaction $1" log_info "$func:${LINENO}: executing $opkg_command_no_action" return 0 } # Install the new packages using opkg. # exec_opkg () { local func="${FUNCNAME[0]}" log_info "$func:${LINENO}: executing $opkg_command" local opkg_result=$(exec_opkg_command "opkg $1") return 0 } # In case there was some error, re-install the previous package(s) # and use the backup to restore any conf/ini-files. # fallback_to_previous_version() { local func="${FUNCNAME[0]}" return 0; } # If all went well, then execute all necessary cleanup steps. # cleanup_previous_version() { local func="${FUNCNAME[0]}" return 0 }