132 lines
2.5 KiB
Bash
132 lines
2.5 KiB
Bash
#!/bin/bash
|
|
|
|
if [[ ${1} == "debug" ]]; then
|
|
debugmode=true
|
|
elif [[ ${1} == "run" ]]; then
|
|
debugmode=false
|
|
else
|
|
echo "Must be executed in run mode or debug mode!" >&2
|
|
echo "Example:" >&2
|
|
echo " $0 run" >&2
|
|
echo "or:" >&2
|
|
echo " $0 debug" >&2
|
|
exit 1
|
|
fi
|
|
|
|
totalsteps=$(wc -l < own.sh)
|
|
newhash="$(md5sum own.sh)"
|
|
|
|
if [[ $? != 0 ]]; then
|
|
echo "Install dependancy md5sum..." >&2
|
|
exit 2
|
|
fi
|
|
|
|
newhash="${newhash:0:32}"
|
|
aptcount=0
|
|
maxaptcount=1
|
|
rm -f own.temp
|
|
|
|
if [[ -f step.step ]]; then
|
|
source step.step
|
|
else
|
|
currentstep=1
|
|
hash="${newhash}"
|
|
fi
|
|
|
|
if [[ "${hash}" != "${newhash}" ]]; then
|
|
echo "own.sh has been changed! Restarting from step 1..."
|
|
currentstep=1
|
|
hash="${newhash}"
|
|
fi
|
|
|
|
for ((step=${currentstep}; step<=${totalsteps}; step++)); do
|
|
line="$(head -n ${step} own.sh | tail -1)"
|
|
|
|
if [[ ${step} == ${currentstep} ]]; then
|
|
echo -n "Line ${step}"
|
|
fi
|
|
|
|
if [[ -n ${line} ]]; then
|
|
while [[ ${line:0:1} == " " ]]; do
|
|
line="${line:1}"
|
|
done
|
|
|
|
if [[ ${line:0:6} == "apt -y" ]]; then
|
|
((aptcount++))
|
|
elif [[ ${line:0:6} == "reboot" ]]; then
|
|
line="#${line}"
|
|
fi
|
|
fi
|
|
|
|
if [[ ${aptcount} -lt ${maxaptcount} ]]; then
|
|
echo "${line}" >> own.temp
|
|
else
|
|
if [[ ${step} -gt ${currentstep} ]]; then
|
|
echo -n " to ${step}"
|
|
fi
|
|
|
|
echo " of ${totalsteps}"
|
|
echo "${line}" >> own.temp
|
|
|
|
if [[ ${debugmode} == true ]]; then
|
|
echo "The following code from own.sh would have been executed..."
|
|
cat own.temp
|
|
else
|
|
echo "The following code from own.sh will be executed..."
|
|
cat own.temp
|
|
delay=$(($(wc -l < own.temp)/4+3))
|
|
echo -n "Executing in ${delay} seconds"
|
|
|
|
for ((d=0; d<${delay}; d++)); do
|
|
sleep 1
|
|
echo -n "."
|
|
done
|
|
|
|
echo
|
|
echo
|
|
echo
|
|
echo
|
|
source own.temp
|
|
fi
|
|
|
|
rm -f own.temp
|
|
echo "currentstep=$((step+1))" > step.step
|
|
echo "hash=\"${hash}\"" >> step.step
|
|
|
|
exit
|
|
fi
|
|
done
|
|
|
|
if [[ ${step} -gt ${currentstep} ]]; then
|
|
echo -n " to ${step}"
|
|
fi
|
|
|
|
echo " of ${totalsteps}"
|
|
|
|
if [[ ${debugmode} == true ]]; then
|
|
echo "The following code from own.sh would have been executed..."
|
|
cat own.temp
|
|
else
|
|
echo "The following code from own.sh will be executed..."
|
|
cat own.temp
|
|
delay=$(($(wc -l < own.temp)/4+3))
|
|
echo -n "Executing in ${delay} seconds"
|
|
|
|
for ((d=0; d<${delay}; d++)); do
|
|
sleep 1
|
|
echo -n "."
|
|
done
|
|
|
|
echo
|
|
echo
|
|
echo
|
|
echo
|
|
source own.temp
|
|
fi
|
|
|
|
rm -f own.temp
|
|
echo "End of own.sh has been reached..."
|
|
rm -f step.step
|
|
|
|
exit
|