80 lines
1.7 KiB
Bash
80 lines
1.7 KiB
Bash
#!/bin/bash
|
|
# Builds fake borg/docker/mysql/mariadb executables into $1 so restore.sh
|
|
# can be exercised without real infrastructure. Each mock logs its
|
|
# invocation to $1/mock.log.
|
|
|
|
setup_mock_bin() {
|
|
local dir="$1"
|
|
mkdir -p "$dir"
|
|
local mocklog="$dir/mock.log"
|
|
: > "$mocklog"
|
|
|
|
cat > "$dir/borg" <<EOF
|
|
#!/bin/bash
|
|
echo "borg \$*" >> "$mocklog"
|
|
case "\$1" in
|
|
list)
|
|
echo "host-2026-01-01T00-00-00"
|
|
echo "host-2026-06-01T00-00-00"
|
|
;;
|
|
extract)
|
|
shift
|
|
paths=()
|
|
for a in "\$@"; do
|
|
case "\$a" in
|
|
-*) ;;
|
|
*::*) ;;
|
|
*) paths+=("\$a") ;;
|
|
esac
|
|
done
|
|
for p in "\${paths[@]}"; do
|
|
if [[ "\$p" == *.* ]]; then
|
|
mkdir -p "\$(dirname "\$p")"
|
|
printf 'mock-content\n' > "\$p"
|
|
else
|
|
mkdir -p "\$p"
|
|
touch "\$p/RESTORED_MARKER"
|
|
fi
|
|
done
|
|
;;
|
|
*) ;;
|
|
esac
|
|
exit 0
|
|
EOF
|
|
|
|
cat > "$dir/docker" <<EOF
|
|
#!/bin/bash
|
|
echo "docker \$*" >> "$mocklog"
|
|
case "\$1" in
|
|
inspect)
|
|
if [[ "\$*" == *"State.Running"* ]]; then
|
|
echo true
|
|
else
|
|
echo healthy
|
|
fi
|
|
;;
|
|
start|stop)
|
|
exit 0
|
|
;;
|
|
exec)
|
|
case "\$*" in
|
|
*"command -v mariadb"*) exit 0 ;;
|
|
*) cat >/dev/null 2>&1 || true; exit 0 ;;
|
|
esac
|
|
;;
|
|
*) ;;
|
|
esac
|
|
exit 0
|
|
EOF
|
|
|
|
cat > "$dir/mysql" <<EOF
|
|
#!/bin/bash
|
|
echo "mysql \$*" >> "$mocklog"
|
|
cat >/dev/null 2>&1 || true
|
|
exit 0
|
|
EOF
|
|
cp "$dir/mysql" "$dir/mariadb"
|
|
|
|
chmod +x "$dir/borg" "$dir/docker" "$dir/mysql" "$dir/mariadb"
|
|
}
|