Compare commits
	
		
			25 Commits
		
	
	
		
			729778043a
			...
			szeged_pre
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 5bca1f498b | |||
| 2d1f11fd74 | |||
| 2d76b37e5d | |||
| b5b3aa7e34 | |||
| e3403b2ddd | |||
| 82d6dc643a | |||
| ef4d27eb91 | |||
| 215b155f2d | |||
| 901fa4c319 | |||
| e356456fb5 | |||
| bcc96a388f | |||
| 8f50f62a52 | |||
| 847c58afc8 | |||
| 2abdf963ac | |||
| 96d76b856a | |||
| 9eff70b780 | |||
| 2a8be547a8 | |||
| 17521771e3 | |||
| 515c77bed4 | |||
| f2617d8151 | |||
| 4f9c6155e1 | |||
| 33511a5bcb | |||
| bd0d07f56f | |||
| b8bc61daea | |||
| 27cd99f96a | 
							
								
								
									
										149
									
								
								git_helpers
									
									
									
									
									
								
							
							
						
						
									
										149
									
								
								git_helpers
									
									
									
									
									
								
							| @@ -57,6 +57,18 @@ revert_to_commit_before_pull () { | |||||||
| } | } | ||||||
| # revert_to_commit_before_pull | # revert_to_commit_before_pull | ||||||
|  |  | ||||||
|  | git_branch () { | ||||||
|  |     # always relative to a git repository | ||||||
|  |     echo $(git branch -a | grep '*' | awk '{ print $2 }') | ||||||
|  | } | ||||||
|  |  | ||||||
|  | git_customer_branch () { | ||||||
|  |     if cd_customer_repository; then | ||||||
|  |         customer_branch=$(git_branch) | ||||||
|  |         cd_home; | ||||||
|  |         echo $customer_branch | ||||||
|  |     fi | ||||||
|  | } | ||||||
| # clone the customer repository in ./workspace. | # clone the customer repository in ./workspace. | ||||||
| # this is done only once. | # this is done only once. | ||||||
| #  | #  | ||||||
| @@ -70,94 +82,104 @@ revert_to_commit_before_pull () { | |||||||
| # | # | ||||||
| clone_customer_repository () { | clone_customer_repository () { | ||||||
|     local func="${FUNCNAME[0]}" |     local func="${FUNCNAME[0]}" | ||||||
|     if [ "$PWD" = "$WORKING_DIRECTORY" ]; then |     if [ "$PWD" != "$WORKING_DIRECTORY" ]; then | ||||||
|  |         log_fatal "$func:${LINENO} PD != WD ($PWD != $WORKING_DIRECTORY)" | ||||||
|  |     fi | ||||||
|  |     | ||||||
|     mkdir -p "./$WORKSPACE_DIR" |     mkdir -p "./$WORKSPACE_DIR" | ||||||
|     # check if the directory is empty. If so, clone the |     # check if the directory is empty. If so, clone the | ||||||
|     # customer repository |     # customer repository | ||||||
|     if ! find ./$WORKSPACE_DIR -mindepth 1 -maxdepth 1 | read; then |     if ! find ./$WORKSPACE_DIR -mindepth 1 -maxdepth 1 | read; then | ||||||
|             log_debug "$func:${LINENO} cloning ${1} ..." |         log_info "$func:${LINENO} cloning ${1} into ${PWD}/${WORKSPACE_DIR}..." | ||||||
|             if cd "./$WORKSPACE_DIR" |         if ! cd "./$WORKSPACE_DIR"; then | ||||||
|             then |             update_psa_clone_error  # message to ISMAS | ||||||
|                 $(exec_git_command git clone "$1") |             log_fatal "$func:${LINENO} can not change to $WORKSPACE_DIR" | ||||||
|                 if [ $? -eq 0 ]; then |         fi | ||||||
|  |         if ! exec_git_command git clone "$1"; then | ||||||
|  |             update_psa_clone_error  # message to ISMAS | ||||||
|  |             log_fatal "$func:${LINENO} can not clone $1" | ||||||
|  |         fi | ||||||
|  |         ##########################  CLONING DONE   ############################ | ||||||
|         log_debug "$func:${LINENO} cloning ${1} done" |         log_debug "$func:${LINENO} cloning ${1} done" | ||||||
|                     GIT_CLONE_EXECUTED=1 |  | ||||||
|                     rm -f $GIT_PULL_TMP |  | ||||||
|                     rm -f $OPKG_CMDS_TMP |  | ||||||
|         # after cloning, cd into repository, and re-initialize, |         # after cloning, cd into repository, and re-initialize, | ||||||
|         # setting the work-tree as "/". This has the effect that |         # setting the work-tree as "/". This has the effect that | ||||||
|         # a "git pull" will automatically fetched files in the |         # a "git pull" will automatically fetched files in the | ||||||
|         # corresponding sytem-folders. |         # corresponding sytem-folders. | ||||||
|                     if cd ${CUSTOMER_ID_BASE_DIR}; then |         #######################  CD INTO REPOSITORY  ########################## | ||||||
|                         # configure hooks directory |         if ! cd ${CUSTOMER_ID_BASE_DIR}; then | ||||||
|                         exec_git_command git config core.hooksPath .githooks |             update_psa_clone_error  # message to ISMAS | ||||||
|                         exec_git_command git checkout "$LOCAL_BRANCH" |             log_fatal "$func:${LINENO} can not change to $CUSTOMER_ID_BASE_DIR" | ||||||
|                         if [[ $? -eq 0 ]]; then |         fi | ||||||
|  |         log_debug "$func:${LINENO} cd into $CUSTOMER_ID_BASE_DIR" | ||||||
|  |         ##################### CONFIGURE HOOKS DIRECTORY  ###################### | ||||||
|  |         if ! exec_git_command git config core.hooksPath .githooks; then | ||||||
|  |             update_psa_clone_error  # message to ISMAS | ||||||
|  |             log_fatal "$func:${LINENO} can not configure hooks directory" | ||||||
|  |         fi | ||||||
|  |         ###################### CHECKOUT LOCAL BRANCH  ######################### | ||||||
|  |         if ! exec_git_command git checkout "$LOCAL_BRANCH"; then | ||||||
|  |             update_psa_clone_error  # message to ISMAS | ||||||
|  |             log_fatal "$func:${LINENO} can not checkout $LOCAL_BRANCH" | ||||||
|  |         fi | ||||||
|         log_debug "$func:${LINENO} checked out local branch $LOCAL_BRANCH" |         log_debug "$func:${LINENO} checked out local branch $LOCAL_BRANCH" | ||||||
|                             exec_git_command git config core.worktree "/" |         ######################## CONFIGURE WORKTREE  ########################## | ||||||
|                             if [[ $? -eq 0 ]]; then |         if ! exec_git_command git config core.worktree "/"; then | ||||||
|                             	log_debug "$func:${LINENO} configured worktree" |             update_psa_clone_error  # message to ISMAS | ||||||
|                                 exec_git_command git fetch --all |             log_fatal "$func:${LINENO} can not configure worktree '/'" | ||||||
|                        	        if [[ $? -eq 0 ]]; then |         fi | ||||||
|  |         log_debug "$func:${LINENO} configured worktree '/'" | ||||||
|  |         ########################### FETCH ALL ################################# | ||||||
|  |         if ! exec_git_command git fetch --all; then | ||||||
|  |             update_psa_clone_error  # message to ISMAS | ||||||
|  |             log_fatal "$func:${LINENO} can not fetch --all for $LOCAL_BRANCH" | ||||||
|  |         fi | ||||||
|         log_debug "$func:${LINENO} fetch repository" |         log_debug "$func:${LINENO} fetch repository" | ||||||
|                                     exec_git_command git reset --hard "$LOCAL_BRANCH" |         ########################## RE-INIT REPOSITORY  ######################## | ||||||
|                        	            if [[ $? -eq 0 ]]; then |         if ! exec_git_command git reset --hard "$LOCAL_BRANCH"; then | ||||||
|  |             update_psa_clone_error  # message to ISMAS | ||||||
|  |             log_fatal "$func:${LINENO} re-init of $LOCAL_BRANCH failed" | ||||||
|  |         fi | ||||||
|         log_debug "$func:${LINENO} reset --hard $LOCAL_BRANCH" |         log_debug "$func:${LINENO} reset --hard $LOCAL_BRANCH" | ||||||
|                                         CLONE_CUSTOMER_REPOSITORY=true |         INITIAL_CLONE=true | ||||||
|         log_debug "$func:${LINENO} re-init of ${1} done" |         log_debug "$func:${LINENO} re-init of ${1} done" | ||||||
|                                         cd_home; return 0 |         update_psa_clone_customer_repository | ||||||
| 			                        fi |  | ||||||
| 		    	                fi |  | ||||||
|                             fi |  | ||||||
| 		                fi |  | ||||||
|                     fi |  | ||||||
|                 fi |  | ||||||
|                 cd_home; return 1 |  | ||||||
|             fi |  | ||||||
|     else |     else | ||||||
|         # the directory is not empty, so we assume the |         # the directory is not empty, so we assume the | ||||||
|         # customer-repository has been cloned already |         # customer-repository has been cloned already | ||||||
|         if ! [[ -d "./${WORKSPACE_DIR}/$CUSTOMER_ID" ]]; then |         if ! [[ -d "./${WORKSPACE_DIR}/$CUSTOMER_ID" ]]; then | ||||||
|             log_fatal "$func:${LINENO} $PWD $WORKSPACE_DIR/$CUSTOMER_ID"\ |             log_fatal "$func:${LINENO} $PWD $WORKSPACE_DIR/$CUSTOMER_ID"\ | ||||||
|                 "wrong repository: $(ls -d './${WORKSPACE_DIR}/*')" |                 "wrong repository: $(ls -d './${WORKSPACE_DIR}/*')" | ||||||
|             else |         fi | ||||||
|         local __m="./${WORKSPACE_DIR}/$CUSTOMER_ID exists" |         local __m="./${WORKSPACE_DIR}/$CUSTOMER_ID exists" | ||||||
|                 log_debug "$func:${LINENO} $__m" |         log_info "$func:${LINENO} $__m, no clone necessary" | ||||||
|                 return 0 |  | ||||||
|             fi |  | ||||||
|         fi |  | ||||||
|     fi |     fi | ||||||
|  |  | ||||||
|     update_psa_clone_error  # message to ISMAS |     cd_home | ||||||
|     return $?  |  | ||||||
| } | } | ||||||
| # clone_customer_repository -> | # clone_customer_repository -> | ||||||
| # https://git.mimbach49.de/GerhardHoffmann/customer_281.git | # https://git.mimbach49.de/GerhardHoffmann/customer_281.git | ||||||
|  |  | ||||||
| cd_customer_repository () { | cd_customer_repository () { | ||||||
|     local func="${FUNCNAME[0]}" |     local func="${FUNCNAME[0]}" | ||||||
|     # has to be called in WORKING_DIRECTORY |  | ||||||
|     cd "$WORKING_DIRECTORY" |     if [ "$PWD" != "$WORKING_DIRECTORY" ]; then | ||||||
|     if [ "$PWD" = "${WORKING_DIRECTORY}" ]; then |         log_fatal "$func:${LINENO} PD != WD ($PWD != $WORKING_DIRECTORY)" | ||||||
|         repository_dir="./$WORKSPACE_DIR/$CUSTOMER_ID" |  | ||||||
|         if ! [[ -d "$repository_dir" ]]; then |  | ||||||
|             log_crit "$func:${LINENO}: $repository_dir does not exist!" |  | ||||||
|             return 1 |  | ||||||
|     fi |     fi | ||||||
|  |  | ||||||
|         if ! { cd $repository_dir; } ; then |     if ! [[ -d "$CUSTOMER_ID_BASE_DIR" ]]; then | ||||||
|             log_crit "$func:${LINENO}: cannot cd to $repository_dir!" |         log_fatal "$func:${LINENO}: $CUSTOMER_ID_BASE_DIR does not exist!" | ||||||
|             return 1 |  | ||||||
|     fi |     fi | ||||||
|      |      | ||||||
|         log_debug "$func:${LINENO}: cd to $repository_dir!" |     if ! cd "$CUSTOMER_ID_BASE_DIR"; then | ||||||
|  |         log_fatal "$func:${LINENO}: cannot cd to $CUSTOMER_ID_BASE_DIR !!!" | ||||||
|  |     fi | ||||||
|  |  | ||||||
|  |     log_debug "$func:${LINENO}: cd to $CUSTOMER_ID_BASE_DIR" | ||||||
|     return 0 |     return 0 | ||||||
|     fi |  | ||||||
|     return 1 |  | ||||||
| } | } | ||||||
|  |  | ||||||
| cd_home () { | cd_home () { | ||||||
|     if cd - &>/dev/null ; then |     if cd "$WORKING_DIRECTORY" &>/dev/null ; then | ||||||
|         return 0 |         return 0 | ||||||
|     fi |     fi | ||||||
|     return 1 |     return 1 | ||||||
| @@ -170,26 +192,19 @@ pull_customer_repository () { | |||||||
|         return 1 |         return 1 | ||||||
|     fi |     fi | ||||||
|  |  | ||||||
|     #local commit_before_pull=$(latest_commit) |     log_crit "$func:${LINENO}: executing 'git pull'..." | ||||||
|     #if [ -z $commit_before_pull ]; then |  | ||||||
|     #    log_warn "$func:${LINENO}: commit_before_pull empty" |  | ||||||
|     #    cd_home ; return 1 |  | ||||||
|     #fi |  | ||||||
|     #log_debug "$func:${LINENO}: commit_before_pull=$commit_before_pull" |  | ||||||
|  |  | ||||||
|     rm -f "$OPKG_CMDS_TMP" |  | ||||||
|     rm -f "$GIT_PULL_TMP" |  | ||||||
|  |  | ||||||
|     log_debug "$func:${LINENO}: executing 'git pull'..." |  | ||||||
|     exec_git_command 'git pull' |     exec_git_command 'git pull' | ||||||
|  |  | ||||||
|     # GIT_PULL_TMP created by hook post-merge. it contains the names of the |     # GIT_UPDATE_LOG updated by hook post-merge. it contains the names of the | ||||||
|     # changed files. |     # changed files or opkg-commands to execute. | ||||||
|     if [[ -f $GIT_PULL_TMP ]]; then |     # If 'git pull' has fetched new data, then there are lines starting with | ||||||
|  |     # DOWNLOAD or EXECUTE. | ||||||
|  |     if grep -qE "^[[:space:]]*(DOWNLOAD|EXECUTE)" "$GIT_UPDATE_LOG"; then | ||||||
|  |         log_info "$func:${LINENO}: new data fetched from repository" | ||||||
|         cd_home; return 0 |         cd_home; return 0 | ||||||
|     fi |     fi | ||||||
|       |       | ||||||
|     log_warn "$func:${LINENO}: no data fetched form repository" |     log_warn "$func:${LINENO}: no data fetched from repository" | ||||||
|     cd_home; return 1 |     cd_home; return 1 | ||||||
| } | } | ||||||
| # pull_customer_repository customer_281 | # pull_customer_repository customer_281 | ||||||
|   | |||||||
							
								
								
									
										36
									
								
								log_helpers
									
									
									
									
									
								
							
							
						
						
									
										36
									
								
								log_helpers
									
									
									
									
									
								
							| @@ -1,10 +1,6 @@ | |||||||
| #!/bin/bash | #!/bin/bash | ||||||
| # set -x  | # set -x  | ||||||
|  |  | ||||||
| RED='\e[0;31m' |  | ||||||
| GREEN='\e[0;32m' |  | ||||||
| NC='\e[0m' # No Color |  | ||||||
|  |  | ||||||
| if [ "${log_helpers_sourced:-1}" = "1" ]; then    # include only once | if [ "${log_helpers_sourced:-1}" = "1" ]; then    # include only once | ||||||
|     readonly log_helpers_sourced=${BASH_SOURCE[0]} |     readonly log_helpers_sourced=${BASH_SOURCE[0]} | ||||||
|  |  | ||||||
| @@ -21,7 +17,8 @@ if [ "${log_helpers_sourced:-1}" = "1" ]; then    # include only once | |||||||
|     readonly FATAL=5 |     readonly FATAL=5 | ||||||
|     readonly MAX_DEBUG_LEVEL=6 |     readonly MAX_DEBUG_LEVEL=6 | ||||||
|  |  | ||||||
|     log_level=0 |     log_level=$INFO | ||||||
|  |     FATAL_FAILURE=false | ||||||
|  |  | ||||||
|     set_dbg_level () { |     set_dbg_level () { | ||||||
|         if [ $1 < $MAX_DEBUG_LEVEL ]; then |         if [ $1 < $MAX_DEBUG_LEVEL ]; then | ||||||
| @@ -33,50 +30,61 @@ if [ "${log_helpers_sourced:-1}" = "1" ]; then    # include only once | |||||||
|         return $log_level |         return $log_level | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     log() { |     log_to_file() { | ||||||
|         if [[ $(("$(wc -l < $log_file)")) -ge $((100000)) ]]; then |         if [[ $(("$(wc -l < $log_file)")) -ge $((100000)) ]]; then | ||||||
|             # remove first line |             # remove first line | ||||||
|             sed -e 1d -i $log_file |             sed -e 1d -i $log_file | ||||||
|         fi |         fi | ||||||
|         local msg="$(date +'%Y-%m-%d_%T'): $*" |         local msg="$(date +'%Y-%m-%d_%T'): $*" | ||||||
|         echo "log:$msg" >&2 |  | ||||||
|         echo "$msg" >> $log_file |         echo "$msg" >> $log_file | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     log() { | ||||||
|  |         local msg="$(date +'%Y-%m-%d_%T'): $*" | ||||||
|  |         echo "log:$msg" >&2 | ||||||
|  |     } | ||||||
|  |  | ||||||
|     log_debug() { |     log_debug() { | ||||||
|         if [ $log_level = $DEBUG ]; then |         log_to_file "DEBUG $*" | ||||||
|  |         if [ $log_level -le $DEBUG ]; then | ||||||
|             log "DEBUG $*" |             log "DEBUG $*" | ||||||
|         fi |         fi | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     log_info() { |     log_info() { | ||||||
|  |         log_to_file "INFO $*" | ||||||
|         if [ $log_level -le $INFO ]; then |         if [ $log_level -le $INFO ]; then | ||||||
|             log "${GREEN}INFO  $*" |             log "INFO  $*" | ||||||
|         fi |         fi | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     log_warn() { |     log_warn() { | ||||||
|  |         log_to_file "WARN $*" | ||||||
|         if [ $log_level -le $WARN ]; then |         if [ $log_level -le $WARN ]; then | ||||||
|             log "${RED}WARN  $*" |             log "WARN  $*" | ||||||
|         fi |         fi | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     log_crit() { |     log_crit() { | ||||||
|  |         log_to_file "CRIT $*" | ||||||
|         if [ $log_level -le $CRIT ]; then |         if [ $log_level -le $CRIT ]; then | ||||||
|             log "${RED}CRIT  $*" |             log "CRIT  $*" | ||||||
|         fi |         fi | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     log_error() { |     log_error() { | ||||||
|  |         log_to_file "ERROR $*" | ||||||
|         if [ $log_level -le $ERROR ]; then |         if [ $log_level -le $ERROR ]; then | ||||||
|             log "${RED}ERROR  $*" |             log "ERROR  $*" | ||||||
|         fi |         fi | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     log_fatal() { |     log_fatal() { | ||||||
|  |         log_to_file "FATAL $*" | ||||||
|         if [ $log_level -le $FATAL ]; then |         if [ $log_level -le $FATAL ]; then | ||||||
|             log "${RED}FATAL  $*" |             log "FATAL  $*" | ||||||
|             log "${RED}exiting ..." |             log "exiting ..." | ||||||
|  |             FATAL_FAILURE=true | ||||||
|             exit 1 |             exit 1 | ||||||
|         fi |         fi | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -2,7 +2,8 @@ | |||||||
|  |  | ||||||
| source ./log_helpers | source ./log_helpers | ||||||
|  |  | ||||||
| if [ ${news_to_ismas_sourced:-1} = "1" ]; then    # include only once | if [ "${news_from_ismas_sourced:-1}" = "1" ]; then    # include only once | ||||||
|  |     readonly news_from_ismas_sourced=${BASH_SOURCE[0]} | ||||||
|     readonly APISM_DIRECT_PORT=7778 |     readonly APISM_DIRECT_PORT=7778 | ||||||
|  |  | ||||||
|     updates_available () { |     updates_available () { | ||||||
|   | |||||||
| @@ -2,7 +2,8 @@ | |||||||
|  |  | ||||||
| source ./log_helpers | source ./log_helpers | ||||||
|  |  | ||||||
| if [ ${news_to_ismas_sourced:-1} = "1" ]; then    # include only once | if [ "${news_to_ismas_sourced:-1}" = "1" ]; then    # include only once | ||||||
|  |     readonly news_to_ismas_sourced=${BASH_SOURCE[0]} | ||||||
|  |  | ||||||
|     readonly APISM_DB_PORT=7777 |     readonly APISM_DB_PORT=7777 | ||||||
|     readonly UPDATE_ISMAS_PROGRESS="U0010" |     readonly UPDATE_ISMAS_PROGRESS="U0010" | ||||||
| @@ -70,6 +71,18 @@ if [ ${news_to_ismas_sourced:-1} = "1" ]; then    # include only once | |||||||
|     ###########################################################################  |     ###########################################################################  | ||||||
|     ###########################################################################  |     ###########################################################################  | ||||||
|      |      | ||||||
|  |     update_psa_clone_customer_repository () { | ||||||
|  |         PERCENT=10 | ||||||
|  |         local params=("U0010"                                   # event | ||||||
|  |                       $PERCENT                                  # percent | ||||||
|  |                       $RC_SUCCESS                               # resultcode | ||||||
|  |                       "clone_customer_repository"               # step | ||||||
|  |                       "git cloned $CUSTOMER_REPOSITORY_PATH"    # step_result | ||||||
|  |                       "")                                       # version | ||||||
|  |         news_to_ismas ${params[*]} | ||||||
|  |         return $? | ||||||
|  |     } | ||||||
|  |     | ||||||
|     update_psa_pull_customer_repository () { |     update_psa_pull_customer_repository () { | ||||||
|         PERCENT=10 |         PERCENT=10 | ||||||
|         local params=("U0010"                                   # event |         local params=("U0010"                                   # event | ||||||
|   | |||||||
							
								
								
									
										40
									
								
								read_config
									
									
									
									
									
								
							
							
						
						
									
										40
									
								
								read_config
									
									
									
									
									
								
							| @@ -22,23 +22,21 @@ if [ ${read_config_sourced:-1} = "1" ]; then    # include only once | |||||||
|     readonly UPDATEPSABEGIN=./.updatepsa/begin |     readonly UPDATEPSABEGIN=./.updatepsa/begin | ||||||
|     readonly UPDATEPSAEND=./.updatepsa/end |     readonly UPDATEPSAEND=./.updatepsa/end | ||||||
|  |  | ||||||
|     readonly OPKG_CMDS_TMP=/tmp/opkg_commands |     # name of file containing the logs following a 'git pull': | ||||||
|     readonly GIT_PULL_TMP=/tmp/git_pull |     # basically, there are two kinds of entries: | ||||||
|  |     readonly GIT_UPDATE_LOG=/opt/app/tools/atbupdate/update_log.csv | ||||||
|  |  | ||||||
|     readonly PROGRAM=`basename $0` |     readonly PROGRAM=`basename $0` | ||||||
|     readonly WORKSPACE_DIR=workspace |     readonly WORKSPACE_DIR=workspace | ||||||
|  |  | ||||||
|     EXITCODE=$RC_SUCCESS |     EXITCODE=$RC_SUCCESS | ||||||
|     CLONE_CUSTOMER_REPOSITORY=false |     INITIAL_CLONE=false | ||||||
|  |  | ||||||
|     GIT_CLONE_EXECUTED=0 |  | ||||||
|     APISM_RUNNING=0 |     APISM_RUNNING=0 | ||||||
|  |  | ||||||
|     # read config file (JSON syntax) |     # read config file (JSON syntax) | ||||||
|     read_config() { |     read_config() { | ||||||
|         local func="${FUNCNAME[0]}" |         local func="${FUNCNAME[0]}" | ||||||
|      |      | ||||||
|         WORKING_DIRECTORY=${PWD} |  | ||||||
|         CONFIGFILENAME=${CONFIGFILENAME:-'update_psa.conf'} |         CONFIGFILENAME=${CONFIGFILENAME:-'update_psa.conf'} | ||||||
|  |  | ||||||
|         if ! [ -f "$CONFIGFILENAME" ]; then |         if ! [ -f "$CONFIGFILENAME" ]; then | ||||||
| @@ -50,13 +48,6 @@ if [ ${read_config_sourced:-1} = "1" ]; then    # include only once | |||||||
|          |          | ||||||
|         local readonly cf="$CONFIGFILENAME" |         local readonly cf="$CONFIGFILENAME" | ||||||
|  |  | ||||||
|         ### TODO: wieso wird hier in das verzeichnis gewechselt |  | ||||||
|         if cd $WORKING_DIRECTORY ; then |  | ||||||
|             log_debug "$func:${LINENO}: cd to $WORKING_DIRECTORY" |  | ||||||
|         else |  | ||||||
|             log_fatal "$func:${LINENO}: cannot cd to $WORKING_DIRECTORY" |  | ||||||
|         fi |  | ||||||
|          |  | ||||||
|         readonly GIT_SSL_NO_VERIFY="$(cat "$cf" | jq -r .GIT_SSL_NO_VERIFY)" |         readonly GIT_SSL_NO_VERIFY="$(cat "$cf" | jq -r .GIT_SSL_NO_VERIFY)" | ||||||
|         assert_s GIT_SSL_NO_VERIFY |         assert_s GIT_SSL_NO_VERIFY | ||||||
|  |  | ||||||
| @@ -97,10 +88,23 @@ if [ ${read_config_sourced:-1} = "1" ]; then    # include only once | |||||||
|         # Zone aus /etc/zone_nr auslesen |         # Zone aus /etc/zone_nr auslesen | ||||||
|         # |         # | ||||||
|         readonly ZONE_GROUP=1 |         readonly ZONE_GROUP=1 | ||||||
|         readonly ZONE=1 |         local __zone=1 | ||||||
|  |         readonly ZONE_FILE="$(cat "$cf" | jq -r .zone)" | ||||||
|  |         if [ -f "$ZONE_FILE" ]; then | ||||||
|  |             __zone=$(cat "$ZONE_FILE") | ||||||
|  |             __zone=$((__zone)) | ||||||
|  |         fi | ||||||
|  |  | ||||||
|  |         readonly ZONE=$__zone | ||||||
|         readonly LOCAL_BRANCH="$(cat "$cf" | jq -r .local_branches[$ZONE])" |         readonly LOCAL_BRANCH="$(cat "$cf" | jq -r .local_branches[$ZONE])" | ||||||
|  |  | ||||||
|  |         if [ -z "$WORKING_DIRECTORY" ]; then | ||||||
|  |             log_fatal "${func}:${LINENO}: empty WORKING_DIRECTORY" | ||||||
|  |         fi | ||||||
|  |         if ! cd "$WORKING_DIRECTORY"; then | ||||||
|  |             log_fatal "${func}:${LINENO}: cannot cd to $WORKING_DIRECTORY" | ||||||
|  |         fi | ||||||
|  |         log_debug "${func}:${LINENO}: cd to $WORKING_DIRECTORY" | ||||||
|         return 0 |         return 0 | ||||||
|     } |     } | ||||||
| ############################################################################### | ############################################################################### | ||||||
| @@ -129,6 +133,10 @@ if [ ${read_config_sourced:-1} = "1" ]; then    # include only once | |||||||
|     check_sanity_of_repository () { |     check_sanity_of_repository () { | ||||||
|         local func="${FUNCNAME[0]}" |         local func="${FUNCNAME[0]}" | ||||||
|      |      | ||||||
|  |         if [ "$PWD" != "$WORKING_DIRECTORY" ]; then | ||||||
|  |             log_fatal "$func:${LINENO} PD != WD ($PWD != $WORKING_DIRECTORY)" | ||||||
|  |         fi | ||||||
|  |          | ||||||
|         assert_d CUSTOMER_ID_BASE_DIR |         assert_d CUSTOMER_ID_BASE_DIR | ||||||
|          |          | ||||||
|         CUSTOMER_LOCATION_DIR="$CUSTOMER_ID_BASE_DIR" |         CUSTOMER_LOCATION_DIR="$CUSTOMER_ID_BASE_DIR" | ||||||
| @@ -195,7 +203,7 @@ if [ ${read_config_sourced:-1} = "1" ]; then    # include only once | |||||||
|         readonly              SYSCONF_INI="sysconfig.ini" |         readonly              SYSCONF_INI="sysconfig.ini" | ||||||
|         readonly              SYSCTRL_INI="SystemControl.ini" |         readonly              SYSCTRL_INI="SystemControl.ini" | ||||||
|         readonly           TARIFF_CURRENT="tariff.current" |         readonly           TARIFF_CURRENT="tariff.current" | ||||||
|         readonly                       DC="dc2c.hex" |         readonly                       DC="dc2c.bin" | ||||||
|         readonly            TARIFF_SUMMER="summer_tariff.json" |         readonly            TARIFF_SUMMER="summer_tariff.json" | ||||||
|         readonly            TARIFF_WINTER="winter_tariff.json" |         readonly            TARIFF_WINTER="winter_tariff.json" | ||||||
|          |          | ||||||
| @@ -214,7 +222,7 @@ if [ ${read_config_sourced:-1} = "1" ]; then    # include only once | |||||||
|         readonly SYSCTRL_ETC_SYS_INI_FILE="${ETC_SYS_DIR}/$SYSCTRL_INI" |         readonly SYSCTRL_ETC_SYS_INI_FILE="${ETC_SYS_DIR}/$SYSCTRL_INI" | ||||||
|         readonly SYSCTRL_ATB_SYS_INI_FILE="${ATB_SYS_DIR}/$SYSCTRL_INI" |         readonly SYSCTRL_ATB_SYS_INI_FILE="${ATB_SYS_DIR}/$SYSCTRL_INI" | ||||||
|         readonly SYSCTRL_SCF_SYS_INI_FILE="${SYSCONFIG_SYS_DIR}/$SYSCTRL_INI" |         readonly SYSCTRL_SCF_SYS_INI_FILE="${SYSCONFIG_SYS_DIR}/$SYSCTRL_INI" | ||||||
|         readonly                ZONE_FILE="$ETC_SYS_DIR/zone_nr" |         # readonly                ZONE_FILE="$ETC_SYS_DIR/zone_nr" | ||||||
|         readonly             CUST_ID_FILE="$ETC_SYS_DIR/cust_nr" |         readonly             CUST_ID_FILE="$ETC_SYS_DIR/cust_nr" | ||||||
|         readonly           TC_SYS_TC_FILE="${ATBAPP_SYS_DIR}/$TARIFF_CURRENT" |         readonly           TC_SYS_TC_FILE="${ATBAPP_SYS_DIR}/$TARIFF_CURRENT" | ||||||
|         readonly       OPKG_CMDS_SYS_FILE="${OPKG_SYS_DIR}/opkg_commands" |         readonly       OPKG_CMDS_SYS_FILE="${OPKG_SYS_DIR}/opkg_commands" | ||||||
|   | |||||||
							
								
								
									
										36
									
								
								update_psa
									
									
									
									
									
								
							
							
						
						
									
										36
									
								
								update_psa
									
									
									
									
									
								
							| @@ -5,6 +5,7 @@ | |||||||
| #                                UPDATE PSA | #                                UPDATE PSA | ||||||
| # Usage: | # Usage: | ||||||
| #   update_psa [ --? ] | #   update_psa [ --? ] | ||||||
|  | #              [ -m  ] | ||||||
| #              [ --help ] | #              [ --help ] | ||||||
| #              [ --wdir "working_directory" ] | #              [ --wdir "working_directory" ] | ||||||
| #              [ --file "config_file" ] | #              [ --file "config_file" ] | ||||||
| @@ -23,9 +24,15 @@ if [ -z $IFS ]; then | |||||||
|     IFS=$'\n' |     IFS=$'\n' | ||||||
| fi | fi | ||||||
|  |  | ||||||
|  | MAINTENANCE="NO" | ||||||
|  | WORKING_DIRECTORY=${PWD} | ||||||
|  |  | ||||||
| # parse commandline parameters | # parse commandline parameters | ||||||
| while test $# -gt 0; do | while test $# -gt 0; do | ||||||
|     case $1 in |     case $1 in | ||||||
|  |         --maintenance | -m ) | ||||||
|  |             MAINTENANCE="YES" | ||||||
|  |             ;; | ||||||
|         --file | --fil | --fi | --f | -file | -fil | -fi | -f ) |         --file | --fil | --fi | --f | -file | -fil | -fi | -f ) | ||||||
|             shift |             shift | ||||||
|             CONFIGFILENAME="$1" |             CONFIGFILENAME="$1" | ||||||
| @@ -36,7 +43,11 @@ while test $# -gt 0; do | |||||||
|             ;; |             ;; | ||||||
|         --wdir | --wdi | --wd | --w | -wdir | -wdi | -wd | -w ) |         --wdir | --wdi | --wd | --w | -wdir | -wdi | -wd | -w ) | ||||||
|             shift |             shift | ||||||
|  |             if [ "$1" = "." ]; then | ||||||
|  |                 WORKING_DIRECTORY="$PWD" | ||||||
|  |             else | ||||||
|                 WORKING_DIRECTORY="$1" |                 WORKING_DIRECTORY="$1" | ||||||
|  |             fi | ||||||
|             ;; |             ;; | ||||||
|         --help | -hel | --he | --h | '--?' | -help | -hel | -he | -h | '-?' ) |         --help | -hel | --he | --h | '--?' | -help | -hel | -he | -h | '-?' ) | ||||||
|             usage_and_exit 0 |             usage_and_exit 0 | ||||||
| @@ -47,6 +58,7 @@ while test $# -gt 0; do | |||||||
|             exit 0 |             exit 0 | ||||||
|             ;; |             ;; | ||||||
|         --dbg | --db | --d | -dbg | -db | -d ) |         --dbg | --db | --d | -dbg | -db | -d ) | ||||||
|  |             shift | ||||||
|             set_dbg_level $DEBUG |             set_dbg_level $DEBUG | ||||||
|             ;;  |             ;;  | ||||||
|         -*) |         -*) | ||||||
| @@ -59,31 +71,11 @@ while test $# -gt 0; do | |||||||
|     shift |     shift | ||||||
| done | done | ||||||
|      |      | ||||||
| if cd "$WORKING_DIRECTORY"; then |  | ||||||
| source ./update_psa_impl | source ./update_psa_impl | ||||||
|  |  | ||||||
|     if read_config | if read_config; then | ||||||
|     then |  | ||||||
|         check_default_route |  | ||||||
|         check_route_to_repository "185.191.219.134" # git.mimbach.de |  | ||||||
|         check_for_running_apism |  | ||||||
|         if clone_customer_repository ${CUSTOMER_REPOSITORY_PATH} |  | ||||||
| 	    then  |  | ||||||
|             check_sanity_of_repository |  | ||||||
|  |  | ||||||
|             #set_updates_available |  | ||||||
|             #while : |  | ||||||
|             #do |  | ||||||
|             #    sleep 5 |  | ||||||
|             #    updates_available && break |  | ||||||
|             #done  |  | ||||||
|  |  | ||||||
|             # update_psa "testing" |  | ||||||
|     update_psa |     update_psa | ||||||
|         fi |  | ||||||
|     fi |  | ||||||
|     exit 0 |     exit 0 | ||||||
| fi | fi | ||||||
|  | exit 1 | ||||||
| exit -1 |  | ||||||
| ############################################################################### | ############################################################################### | ||||||
|   | |||||||
| @@ -13,7 +13,7 @@ | |||||||
|  |  | ||||||
|     ""                      :   "local branches", |     ""                      :   "local branches", | ||||||
|     "local_branches"        :   ["master", |     "local_branches"        :   ["master", | ||||||
|                                  "zg1/zone1", "zg1/zone2", "zg1/zone3"], |                                  "zg1/zone1", "zg1/zone2", "zg1/zone3", "zg1/zone4"], | ||||||
|  |  | ||||||
|     ""                      :   "customer number of PSA", |     ""                      :   "customer number of PSA", | ||||||
|     "customer_id_"          :   "/etc/cust_nr", |     "customer_id_"          :   "/etc/cust_nr", | ||||||
| @@ -26,7 +26,7 @@ | |||||||
|     ""                      :   "0-index used as size of following array", |     ""                      :   "0-index used as size of following array", | ||||||
|     ""                      :   ".zg[0]: #n of zones_groups", |     ""                      :   ".zg[0]: #n of zones_groups", | ||||||
|     ""                      :   ".zg[1].z[0]: #n of zones in zg[1]", |     ""                      :   ".zg[1].z[0]: #n of zones in zg[1]", | ||||||
|     "zg"                    :   [   1, { "z" : [ 3, 1, 2, 3] } ], |     "zg"                    :   [   1, { "z" : [ 4, 1, 2, 4] } ], | ||||||
|  |  | ||||||
|     ""                      :   "url of customer repository", |     ""                      :   "url of customer repository", | ||||||
|     "cust_repository_path"  :   "https://git.mimbach49.de/GerhardHoffmann/customer_281.git" |     "cust_repository_path"  :   "https://git.mimbach49.de/GerhardHoffmann/customer_281.git" | ||||||
|   | |||||||
| @@ -378,7 +378,7 @@ check_for_running_apism () { | |||||||
|     if nc localhost 7778 |     if nc localhost 7778 | ||||||
|     then |     then | ||||||
|         APISM_RUNNING=1 |         APISM_RUNNING=1 | ||||||
|         log_debug "$func:${LINENO}: APISM running..." |         log_info "$func:${LINENO}: APISM is running..." | ||||||
|         return 0 |         return 0 | ||||||
|     fi |     fi | ||||||
|     log_fatal "$func:${LINENO}: !!! APISM NOT RUNNING !!!" |     log_fatal "$func:${LINENO}: !!! APISM NOT RUNNING !!!" | ||||||
| @@ -388,7 +388,7 @@ check_default_route () { | |||||||
|     local func="${FUNCNAME[0]}" |     local func="${FUNCNAME[0]}" | ||||||
|     if ip route | head -n 1 | grep -q '^default' |     if ip route | head -n 1 | grep -q '^default' | ||||||
|     then |     then | ||||||
|         log_debug "$func:${LINENO}: default route set" |         log_info "$func:${LINENO}: default route set" | ||||||
|         return 0 |         return 0 | ||||||
|     fi |     fi | ||||||
|     log_fatal "$func:${LINENO}: !!! NO DEFAULT ROUTE SET !!!" |     log_fatal "$func:${LINENO}: !!! NO DEFAULT ROUTE SET !!!" | ||||||
| @@ -400,7 +400,7 @@ check_route_to_repository () { | |||||||
|     # 185.191.219.134 via 192.168.5.254 ... |     # 185.191.219.134 via 192.168.5.254 ... | ||||||
|     if test "$#" -eq 1 && ip route get "$1" | head -n 1 | grep -q "^$1" |     if test "$#" -eq 1 && ip route get "$1" | head -n 1 | grep -q "^$1" | ||||||
|     then |     then | ||||||
|         log_debug "$func:${LINENO}: route to repository available" |         log_info "$func:${LINENO}: route to repository available" | ||||||
|         return 0 |         return 0 | ||||||
|     fi |     fi | ||||||
|     log_fatal "$func:${LINENO}: !!! NO ROUTE TO REPO SET !!!" |     log_fatal "$func:${LINENO}: !!! NO ROUTE TO REPO SET !!!" | ||||||
|   | |||||||
							
								
								
									
										131
									
								
								update_psa_impl
									
									
									
									
									
								
							
							
						
						
									
										131
									
								
								update_psa_impl
									
									
									
									
									
								
							| @@ -13,6 +13,8 @@ trap collect_current_configuration EXIT | |||||||
| collect_current_configuration () { | collect_current_configuration () { | ||||||
|     local func="${FUNCNAME[0]}" |     local func="${FUNCNAME[0]}" | ||||||
|  |  | ||||||
|  |     $FATAL_FAILURE && return 1 | ||||||
|  |  | ||||||
|     # TODO: eventuell muss die version neu berechnet werden |     # TODO: eventuell muss die version neu berechnet werden | ||||||
|     current_settings_to_ismas |     current_settings_to_ismas | ||||||
|  |  | ||||||
| @@ -28,24 +30,43 @@ collect_current_configuration () { | |||||||
|     #done |     #done | ||||||
| } | } | ||||||
|  |  | ||||||
| update_psa() { # calling with a parameter is used for testing | update_psa() { | ||||||
|  |  | ||||||
|     if [ $# -eq 0 ]; then |  | ||||||
|         if ! updates_available; then    # check for false alarm |  | ||||||
|             update_psa_false_alarm "update requested, but no WAIT state detected" |  | ||||||
|             exit $EXITCODE |  | ||||||
|         fi |  | ||||||
|     fi |  | ||||||
|  |  | ||||||
|     update_psa_activated    # message to ISMAS |     update_psa_activated    # message to ISMAS | ||||||
|              |  | ||||||
|     local func="${FUNCNAME[0]}" |     local func="${FUNCNAME[0]}" | ||||||
|      |      | ||||||
|  |     check_default_route | ||||||
|  |     check_route_to_repository "185.191.219.134" # git.mimbach.de | ||||||
|  |     # even for a git clone a running APISM is needed  | ||||||
|  |     check_for_running_apism | ||||||
|  |  | ||||||
|  |     # an initial clone of the customer-repository (e.g. customer_281) is  | ||||||
|  |     # always possible, even without a ISMAS-WAIT-button | ||||||
|  |     clone_customer_repository ${CUSTOMER_REPOSITORY_PATH} | ||||||
|  |     check_sanity_of_repository | ||||||
|  |     $INITIAL_CLONE && return 0 | ||||||
|  |  | ||||||
|  |     if [ "$MAINTENANCE" = "NO" ]; then | ||||||
|  |         log_info "update_psa:${LINENO}: MAINTENANCE OFF. Checking for updates..." | ||||||
|  |         # someone must have activated the WAIT-button in ISMAS.  | ||||||
|  |         # Request the status of this button in updates_available(). | ||||||
|  |         if ! updates_available; then  | ||||||
|  |             update_psa_false_alarm "update requested, but no WAIT state detected !!!" | ||||||
|  |             log_fatal "update_psa:${LINENO}: update requested, but no WAIT state detected !!!" | ||||||
|  |         fi | ||||||
|  |     else | ||||||
|  |         # simulate an activated WAIT-button | ||||||
|  |         set_updates_available | ||||||
|  |         while : | ||||||
|  |         do | ||||||
|  |             sleep 5 | ||||||
|  |             updates_available && break | ||||||
|  |         done  | ||||||
|  |     fi | ||||||
|  |  | ||||||
|     log_debug "$func:${LINENO}: fetch/merge updates..." |     log_debug "$func:${LINENO}: fetch/merge updates..." | ||||||
|     |     | ||||||
|     # Fetch new updates (using git). but only when repository has already been |     # Fetch new updates (using git). but only when repository has already been | ||||||
|     # cloned. |     # cloned. | ||||||
|     if [ $GIT_CLONE_EXECUTED -eq 0 ]; then |  | ||||||
|     if ! fetch_customer_updates; then |     if ! fetch_customer_updates; then | ||||||
|         log_error "$func:${LINENO}: fetch no data for $customer_id"\ |         log_error "$func:${LINENO}: fetch no data for $customer_id"\ | ||||||
| 	    "-> no files to update -> no psa update" | 	    "-> no files to update -> no psa update" | ||||||
| @@ -53,95 +74,7 @@ update_psa() { # calling with a parameter is used for testing | |||||||
| 	    "update request, but no change in $CUSTOMER_REPOSITORY_PATH" | 	    "update request, but no change in $CUSTOMER_REPOSITORY_PATH" | ||||||
|         # TODO |         # TODO | ||||||
|     fi |     fi | ||||||
|     fi |  | ||||||
|              |              | ||||||
|     update_psa_pull_customer_repository # message to ISMAS |     update_psa_pull_customer_repository # message to ISMAS | ||||||
|  |  | ||||||
|     # no backup necessary as saved in git-repo |  | ||||||
|      |  | ||||||
|     # local changed_files=$(changed_file_names) |  | ||||||
|     |  | ||||||
|     if [[ -f "$GIT_PULL_TMP" ]]; then  |  | ||||||
|         # TODO |  | ||||||
|         if ! check_hardware_compatibility "$files_to_copy" ; then |  | ||||||
|             local __r=$? |  | ||||||
|             log_error "$func:${LINENO}: json/ini-files not fit for PSA" |  | ||||||
|             revert_customer_repository |  | ||||||
|             exit $__r |  | ||||||
|         fi |  | ||||||
|     fi |  | ||||||
|  |  | ||||||
|     if [[ -f "$OPKG_CMDS_TMP" ]]; then |  | ||||||
|         local commands="$(cat ${OPKG_CMDS_TMP} | tr '\n' '; ')" |  | ||||||
|         log_info "$func:${LINENO}: executed opkg commands" |  | ||||||
|         update_psa_install_opkg_packages $UPDATE_ISMAS_PROGRESS \ |  | ||||||
|             $RC_SUCCESS "$commands" |  | ||||||
|     else |  | ||||||
|         log_info "$func:${LINENO}: no opkg commands to execute" |  | ||||||
|         update_psa_install_opkg_packages $UPDATE_ISMAS_PROGRESS \ |  | ||||||
|             $RC_SUCCESS "no opkg commands to execute" |  | ||||||
|     fi |  | ||||||
|          |  | ||||||
|     # check if the opkg-command-file has been changed during 'git pull' |  | ||||||
|     #if grep -qE ".*opkg_commands.*?" <<< $changed_files; then |  | ||||||
|     #    # read opkg_cmds: each line respresents an opkg-command |  | ||||||
|     #    readarray opkg_commands < <(cat $OPKG_CMDS_PSA_FILE) |  | ||||||
|     #    for opkg_c in "${opkg_commands[@]}"; do |  | ||||||
|     #        if grep -qE "^\s*[#]+.*$" <<< $opkg_c; then |  | ||||||
|     #            continue    # found comment line |  | ||||||
|     #        fi |  | ||||||
|  |  | ||||||
|     #        # package manipulation commands without package: |  | ||||||
|     #        local cwp="update|upgrade|clean" |  | ||||||
|     #        # informational commands without package: |  | ||||||
|     #        cwp="${cwp}|list|list-installed|list-upgradable" |  | ||||||
|  |  | ||||||
|     #        if grep -qE "^.*\s+($cwp)\s+.*$" <<< $opkg_c; then |  | ||||||
|     #            local p=$(printf '%s' "$opkg_c" | awk '{ print $NF }') |  | ||||||
|     #            local opkg_output=() |  | ||||||
|     #            if ! exec_opkg_info "$p" opkg_output; then |  | ||||||
|     #                log_error "$func:${LINENO}: opkg info $opkg_c failed" |  | ||||||
|     #                revert_customer_repository ; exit 1 |  | ||||||
|     #            fi |  | ||||||
|  |  | ||||||
|     #            if ! check_md5_for_opkg_packages opkg_output; then |  | ||||||
|     #                log_error "$func:${LINENO}: "\ |  | ||||||
|     #                    "wrong md5sum for opkg packages" |  | ||||||
|     #                revert_customer_repository ; exit 1 |  | ||||||
|     #            fi |  | ||||||
|     #        fi |  | ||||||
|     #         |  | ||||||
|     #        # perform a dry-run and check if everything might work as expected.  |  | ||||||
|     #        if ! exec_opkg_noaction $opkg_c; then |  | ||||||
|     #                log_error "$func:${LINENO}: "\ |  | ||||||
|     #                    "opkg --noaction $opkg_c failed" |  | ||||||
|     #        fi |  | ||||||
|  |  | ||||||
|     #        # Actually execute the opkg command |  | ||||||
|     #        if ! exec_opkg $opkg_c; then |  | ||||||
|     #            log_error "$func:${LINENO}: exec_opkg $opkg_c failed" |  | ||||||
|     #            fallback_to_previous_version |  | ||||||
|     #            revert_customer_repository ; exit 1 |  | ||||||
|     #        fi |  | ||||||
|     #    done |  | ||||||
|     #else |  | ||||||
|     #    log_info "$func:${LINENO}: no opkg commands to execute" |  | ||||||
|     #    update_psa_install_opkg_packages $UPDATE_ISMAS_PROGRESS \ |  | ||||||
|     #            $RC_SUCCESS "no opkg commands to execute" |  | ||||||
|     #fi |  | ||||||
|      |  | ||||||
|     # Cleanup. |  | ||||||
|     #if ! cleanup_previous_version; then |  | ||||||
|     #    log_error "$func:${LINENO}: cleanup_previous_version failed" |  | ||||||
|     #fi |  | ||||||
|  |  | ||||||
|     # compute version string for current (i.e. new) version |  | ||||||
|     compute_version |  | ||||||
|  |  | ||||||
|     update_psa_cleanup $UPDATE_ISMAS_PROGRESS \ |  | ||||||
|         $RC_SUCCESS "cleanup after psa update" |  | ||||||
|  |  | ||||||
|     # TODO |  | ||||||
|     exit 0 |  | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user