2
0
mirror of https://github.com/deajan/osync synced 2024-11-05 12:01:02 +00:00
osync/dev/merge.sh

203 lines
5.1 KiB
Bash
Raw Normal View History

2015-11-12 00:37:43 +00:00
#!/usr/bin/env bash
2019-02-26 11:07:35 +00:00
## MERGE 2019022601
## Merges ofunctions.sh and n_program.sh into program.sh
## Adds installer
2015-11-12 00:37:43 +00:00
2018-10-02 08:49:28 +00:00
PROGRAM=merge
INSTANCE_ID=dev
function Usage {
echo "Merges ofunctions.sh and n_program.sh into debug_program.sh and ../program.sh"
echo "Usage"
echo "$0 osync|obackup|pmocr"
}
2016-12-07 20:30:10 +00:00
function __PREPROCESSOR_Merge {
2018-10-02 16:08:03 +00:00
local nPROGRAM="$1"
2017-03-14 20:12:38 +00:00
2018-10-02 16:08:03 +00:00
if [ -f "$nPROGRAM" ]; then
Logger "$nPROGRAM is not found in local path." "CRITICAL"
exit 1
fi
VERSION=$(grep "PROGRAM_VERSION=" n_$nPROGRAM.sh)
2016-12-07 20:30:10 +00:00
VERSION=${VERSION#*=}
__PREPROCESSOR_Constants
2015-11-12 00:37:43 +00:00
2018-10-02 16:08:03 +00:00
__PREPROCESSOR_Unexpand "n_$nPROGRAM.sh" "debug_$nPROGRAM.sh"
2016-08-30 16:20:41 +00:00
2016-12-07 20:30:10 +00:00
for subset in "${__PREPROCESSOR_SUBSETS[@]}"; do
2018-10-02 16:08:03 +00:00
__PREPROCESSOR_MergeSubset "$subset" "${subset//SUBSET/SUBSET END}" "ofunctions.sh" "debug_$nPROGRAM.sh"
2016-12-07 20:30:10 +00:00
done
__PREPROCESSOR_CleanDebug "debug_$nPROGRAM.sh" "../$nPROGRAM.sh"
2015-11-12 00:37:43 +00:00
}
2016-12-07 20:30:10 +00:00
function __PREPROCESSOR_Constants {
PARANOIA_DEBUG_LINE="#__WITH_PARANOIA_DEBUG"
PARANOIA_DEBUG_BEGIN="#__BEGIN_WITH_PARANOIA_DEBUG"
PARANOIA_DEBUG_END="#__END_WITH_PARANOIA_DEBUG"
__PREPROCESSOR_SUBSETS=(
'#### OFUNCTIONS FULL SUBSET ####'
2016-12-19 21:38:13 +00:00
'#### OFUNCTIONS MINI SUBSET ####'
2018-10-02 08:49:28 +00:00
'#### OFUNCTIONS MICRO SUBSET ####'
2018-10-01 19:02:47 +00:00
'#### PoorMansRandomGenerator SUBSET ####'
2016-12-11 13:58:52 +00:00
'#### _OFUNCTIONS_BOOTSTRAP SUBSET ####'
2018-10-08 19:29:47 +00:00
'#### RUN_DIR SUBSET ####'
2016-12-07 20:30:10 +00:00
'#### DEBUG SUBSET ####'
'#### TrapError SUBSET ####'
'#### RemoteLogger SUBSET ####'
2018-06-25 12:11:46 +00:00
'#### Logger SUBSET ####'
2016-12-11 21:40:27 +00:00
'#### GetLocalOS SUBSET ####'
2016-12-07 20:30:10 +00:00
'#### IsInteger SUBSET ####'
2016-12-11 21:40:27 +00:00
'#### UrlEncode SUBSET ####'
2016-12-07 20:30:10 +00:00
'#### HumanToNumeric SUBSET ####'
'#### ArrayContains SUBSET ####'
2017-04-11 11:26:23 +00:00
'#### VerComp SUBSET ####'
2017-02-07 21:04:19 +00:00
'#### GetConfFileValue SUBSET ####'
'#### SetConfFileValue SUBSET ####'
2018-02-20 21:15:20 +00:00
'#### CheckRFC822 SUBSET ####'
2018-10-02 07:22:41 +00:00
'#### CleanUp SUBSET ####'
2016-12-07 20:30:10 +00:00
)
}
2016-12-07 20:30:10 +00:00
function __PREPROCESSOR_Unexpand {
local source="${1}"
local destination="${2}"
unexpand "$source" > "$destination"
2016-08-30 16:20:41 +00:00
if [ $? != 0 ]; then
2019-02-26 11:07:35 +00:00
Logger "Cannot unexpand [$source] to [$destination]." "CRITICAL"
2016-08-30 16:20:41 +00:00
exit 1
fi
2016-12-07 20:30:10 +00:00
}
function __PREPROCESSOR_MergeSubset {
local subsetBegin="${1}"
local subsetEnd="${2}"
local subsetFile="${3}"
local mergedFile="${4}"
2016-12-11 19:54:40 +00:00
sed -n "/$subsetBegin/,/$subsetEnd/p" "$subsetFile" > "$subsetFile.$subsetBegin"
2016-12-07 20:30:10 +00:00
if [ $? != 0 ]; then
2019-02-26 11:07:35 +00:00
Logger "Cannot sed subset [$subsetBegin -- $subsetEnd] in [$subsetFile]." "CRTICIAL"
2016-12-07 20:30:10 +00:00
exit 1
fi
2016-12-11 19:54:40 +00:00
sed "/include $subsetBegin/r $subsetFile.$subsetBegin" "$mergedFile" | grep -v -E "$subsetBegin\$|$subsetEnd\$" > "$mergedFile.tmp"
2016-12-07 20:30:10 +00:00
if [ $? != 0 ]; then
2019-02-26 11:07:35 +00:00
Logger "Cannot add subset [$subsetBegin] to [$mergedFile]." "CRITICAL"
2016-12-07 20:30:10 +00:00
exit 1
fi
rm -f "$subsetFile.$subsetBegin"
2016-12-07 20:30:10 +00:00
if [ $? != 0 ]; then
2019-02-26 11:07:35 +00:00
Logger "Cannot remove temporary subset [$subsetFile.$subsetBegin]." "CRITICAL"
2016-12-07 20:30:10 +00:00
exit 1
fi
2016-12-11 19:54:40 +00:00
rm -f "$mergedFile"
2016-12-07 20:30:10 +00:00
if [ $? != 0 ]; then
2019-02-26 11:07:35 +00:00
Logger "Cannot remove merged original file [$mergedFile]." "CRITICAL"
2016-12-07 20:30:10 +00:00
exit 1
fi
2015-11-12 00:37:43 +00:00
2016-12-11 19:54:40 +00:00
mv "$mergedFile.tmp" "$mergedFile"
2016-12-07 20:30:10 +00:00
if [ $? != 0 ]; then
2019-02-26 11:07:35 +00:00
Logger "Cannot move merged tmp file to original [$mergedFile]." "CRITICAL"
2016-12-07 20:30:10 +00:00
exit 1
fi
}
2015-11-12 00:37:43 +00:00
2016-12-07 20:30:10 +00:00
function __PREPROCESSOR_CleanDebug {
2018-10-02 07:35:48 +00:00
local source="${1}"
2018-10-02 08:49:28 +00:00
local destination="${2:-$source}"
2017-06-18 20:53:57 +00:00
2018-10-02 07:35:48 +00:00
sed '/'$PARANOIA_DEBUG_BEGIN'/,/'$PARANOIA_DEBUG_END'/d' "$source" | grep -v "$PARANOIA_DEBUG_LINE" > "$destination.tmp"
2016-08-30 16:20:41 +00:00
if [ $? != 0 ]; then
2019-02-26 11:07:35 +00:00
Logger "Cannot remove PARANOIA_DEBUG code from standard build." "CRITICAL"
2016-08-30 16:20:41 +00:00
exit 1
2018-10-02 07:35:48 +00:00
else
mv -f "$destination.tmp" "$destination"
if [ $? -ne 0 ]; then
2019-02-26 11:07:35 +00:00
Logger "Cannot move [$destination.tmp] to [$destination]." "CRITICAL"
2018-10-02 07:35:48 +00:00
exit 1
fi
2016-08-30 16:20:41 +00:00
fi
2018-10-02 07:35:48 +00:00
chmod +x "$source"
2016-08-30 16:20:41 +00:00
if [ $? != 0 ]; then
2019-02-26 11:07:35 +00:00
Logger "Cannot chmod [$source]." "CRITICAL"
2016-12-07 20:30:10 +00:00
exit 1
2016-12-11 21:40:27 +00:00
else
2019-02-26 11:07:35 +00:00
Logger "Prepared [$source]." "NOTICE"
2016-12-07 20:30:10 +00:00
fi
2018-10-02 07:35:48 +00:00
2018-10-02 08:49:28 +00:00
if [ "$source" != "$destination" ]; then
chmod +x "$destination"
if [ $? != 0 ]; then
2019-02-26 11:07:35 +00:00
Logger "Cannot chmod [$destination]." "CRITICAL"
2018-10-02 08:49:28 +00:00
exit 1
else
2019-02-26 11:07:35 +00:00
Logger "Prepared [$destination]." "NOTICE"
2018-10-02 08:49:28 +00:00
fi
2016-08-30 16:20:41 +00:00
fi
2015-11-12 00:37:43 +00:00
}
2016-12-07 20:30:10 +00:00
function __PREPROCESSOR_CopyCommons {
2018-10-02 16:08:03 +00:00
local nPROGRAM="$1"
2017-06-18 20:53:57 +00:00
2018-10-02 16:08:03 +00:00
sed "s/\[prgname\]/$nPROGRAM/g" common_install.sh > ../install.sh
2016-08-30 16:20:41 +00:00
if [ $? != 0 ]; then
2019-02-26 11:07:35 +00:00
Logger "Cannot assemble install." "CRITICAL"
2016-08-30 16:20:41 +00:00
exit 1
fi
2016-12-11 21:40:27 +00:00
for subset in "${__PREPROCESSOR_SUBSETS[@]}"; do
2017-03-14 20:12:38 +00:00
__PREPROCESSOR_MergeSubset "$subset" "${subset//SUBSET/SUBSET END}" "ofunctions.sh" "../install.sh"
2016-12-11 21:40:27 +00:00
done
2018-10-02 07:35:48 +00:00
__PREPROCESSOR_CleanDebug "../install.sh"
if [ -f "common_batch.sh" ]; then
2018-10-02 16:08:03 +00:00
sed "s/\[prgname\]/$nPROGRAM/g" common_batch.sh > ../$nPROGRAM-batch.sh
2016-08-30 16:20:41 +00:00
if [ $? != 0 ]; then
2019-02-26 11:07:35 +00:00
Logger "Cannot assemble batch runner." "CRITICAL"
2016-08-30 16:20:41 +00:00
exit 1
fi
2018-10-02 07:07:19 +00:00
for subset in "${__PREPROCESSOR_SUBSETS[@]}"; do
2018-10-02 16:08:03 +00:00
__PREPROCESSOR_MergeSubset "$subset" "${subset//SUBSET/SUBSET END}" "ofunctions.sh" "../$nPROGRAM-batch.sh"
2018-10-02 07:07:19 +00:00
done
2018-10-02 16:08:03 +00:00
__PREPROCESSOR_CleanDebug "../$nPROGRAM-batch.sh"
2016-08-30 16:20:41 +00:00
fi
2015-11-12 00:37:43 +00:00
}
2016-12-07 20:30:10 +00:00
# If sourced don't do anything
if [ "$(basename $0)" == "merge.sh" ]; then
2018-10-02 16:11:01 +00:00
source "./ofunctions.sh"
if [ $? != 0 ]; then
echo "Please run $0 in dev directory with ofunctions.sh"
exit 1
fi
2018-10-02 16:08:03 +00:00
trap GenericTrapQuit TERM EXIT HUP QUIT
if [ "$1" == "osync" ]; then
__PREPROCESSOR_Merge osync
__PREPROCESSOR_CopyCommons osync
elif [ "$1" == "obackup" ]; then
__PREPROCESSOR_Merge obackup
__PREPROCESSOR_CopyCommons obackup
elif [ "$1" == "pmocr" ]; then
__PREPROCESSOR_Merge pmocr
__PREPROCESSOR_CopyCommons pmocr
else
echo "No valid program given."
2018-05-28 06:28:01 +00:00
Usage
exit 1
fi
2016-08-30 16:20:41 +00:00
fi