#!/usr/bin/env bash # Upgrade existing seqs (<16) to be compatible with sequencer 16 # Please review the changes especially for informational output # Holds all files which should be upgraded sq_files=() step_1_info() { echoinfoArgs "[--execute] [FILE ...]"; echo "Check files"; } step_1_alias() { echo "upgrade"; } step_1() { local file= local execute= shift if [[ "${1:-}" == --execute ]] ; then execute="${1}" shift fi for file in "$@" ; do if [ ! -w "${file}" ] ; then error "No permission to write ${file}" return 1 elif [ ! -d "${file}" ] ; then sq_files+=("${file}") fi done exe makechanges ${execute} } makechanges() { local file= local inplace="-n" local sedprint="gp" if [[ "${1:-}" == --execute ]] ; then info "Executing..." inplace="-i" sedprint="g" fi for file in "${sq_files[@]}" ; do echo "Update: ${file}" exe sed ${inplace} 's/\[* ${*DRY}* \(-eq\|==\) 0 \]* &&/dry ||/'${sedprint} "${file}" exe sed ${inplace} 's/\[* ${*DRY}* \(-eq\|==\) 0 \]*/! dry/'${sedprint} "${file}" exe sed ${inplace} 's/\[* ${*DRY}* \(-ne\|!=\) 0 \]*/dry/'${sedprint} "${file}" exe sed ${inplace} 's/\[* ${*QUIET}* \(-ne\|!=\) 0 \]*/quiet/'${sedprint} "${file}" exe sed ${inplace} 's/\[* ${*QUIET}* \(-eq\|==\) 0 \]*/interactive/'${sedprint} "${file}" exe sed ${inplace} 's/\[* ${*QUIET}* \(-ne\|!=\) 2 \]* &&/silent ||/'${sedprint} "${file}" exe sed ${inplace} 's/\[* ${*QUIET}* \(-ne\|!=\) 2 \]*/! silent/'${sedprint} "${file}" exe sed ${inplace} 's/\[* ${*VERBOSE}* \(-eq\|==\) 0 \]*/! verbose/'${sedprint} "${file}" exe sed ${inplace} 's/\[* ${*CONTEXT_HELP}* \(-eq\|==\) 0 \]* &&/contextHelp ||/'${sedprint} "${file}" exe sed ${inplace} 's/\[* ${*CONTEXT_HELP}* \(-eq\|==\) 0 \]*/! contextHelp/'${sedprint} "${file}" exe sed ${inplace} 's/\[* ${*CONTEXT_HELP}* \(-ne\|!=\) 0 \]*/contextHelp/'${sedprint} "${file}" exe sed ${inplace} 's/\[* ${*CONTEXT_EXE}* \(-eq\|==\) 0 \]* &&/contextExe ||/'${sedprint} "${file}" exe sed ${inplace} 's/\[* ${*CONTEXT_EXE}* \(-eq\|==\) 0 \]*/! contextExe/'${sedprint} "${file}" exe sed ${inplace} 's/\[* ${*CONTEXT_EXE}* \(-ne\|!=\) 0 \]*/contextExe/'${sedprint} "${file}" exe sed ${inplace} 's/echoseq " \[I\] /info "/'${sedprint} "${file}" exe sed ${inplace} 's/echoseq " \[W\] /warning "/'${sedprint} "${file}" exe sed ${inplace} 's/echoseq " \[E\] /error "/'${sedprint} "${file}" exe sed ${inplace} 's/echoseq/info/'${sedprint} "${file}" exe sed ${inplace} 's/echoerr " \[I\] /info -e "/'${sedprint} "${file}" exe sed ${inplace} 's/echoerr " \[W\] /warning -e "/'${sedprint} "${file}" exe sed ${inplace} 's/echoerr " \[E\] /error -e "/'${sedprint} "${file}" exe sed ${inplace} 's/echoerr/error -e/'${sedprint} "${file}" exe sed ${inplace} 's/outColor/color/'${sedprint} "${file}" exe sed ${inplace} 's/"*${*DEFAULT_EDITOR_SYSTEM}*"*/editor/'${sedprint} "${file}" exe sed ${inplace} 's/endCheckEmpty/endIfEmpty/'${sedprint} "${file}" exe sed ${inplace} 's/^[[:space:]]*step_config/seq_config/'${sedprint} "${file}" exe sed ${inplace} 's/^\(step_.*_alias\)()[[:space:]]*{[[:space:]]*ALIAS=/\1() { echo /'${sedprint} "${file}" exe sed ${inplace} 's/SEQUENCER_ARGS/sqr_args/'${sedprint} "${file}" exe sed ${inplace} 's/STEP_ARGS/seq_args/'${sedprint} "${file}" exe sed ${inplace} 's/SEQ_CONFIG_HOME/seq_configRoot/'${sedprint} "${file}" exe sed ${inplace} 's/SEQ_CONFIG_FILE/seq_configFile/'${sedprint} "${file}" exe sed ${inplace} 's/SEQ_PROFILE_NAME/seq_profileName/'${sedprint} "${file}" exe sed ${inplace} 's/^VERSION_SEQREV.*/readonly sqr_minVersion=16/'${sedprint} "${file}" exe sed ${inplace} 's/echoinfoArgs[[:space:]]\+"\([^"]\+\)"\([^;]\|$\)/# todo: manual intervention\nstep_xx_options() { echo "\1"; }/'${sedprint} "${file}" exe sed ${inplace} \ 's/^\(step_\([0-9]\+\)_info().*\)echoinfoArgs[[:space:]]\+"\([^"]\+\)"\;[[:space:]]*\(.*\)/\1\4\nstep_\2_options() { echo "\3"; }/'${sedprint}\ "${file}" done } readonly sqr_minVersion=16 . /usr/local/bin/sequencer.sh