diff --git a/scripts/extract.sh b/scripts/extract.sh new file mode 100755 index 0000000..9238f37 --- /dev/null +++ b/scripts/extract.sh @@ -0,0 +1,45 @@ +#!/usr/bin/env bash +set -euo pipefail + +if [[ $# -ne 1 ]]; then + echo "Usage: $0 /path/to/source.iso" + exit 1 +fi + +SOURCE_ISO="$1" + +if [[ ! -f "$SOURCE_ISO" ]]; then + echo "Error: ISO not found: $SOURCE_ISO" + exit 1 +fi + +REPO_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" +BASE_DIR="$(cd "$REPO_DIR/.." && pwd)" +BUILD_DIR="$BASE_DIR/build" +WORK_DIR="$BUILD_DIR/work" +MOUNT_DIR="/mnt/fedora-iso" + +echo "Source ISO: $SOURCE_ISO" +echo "Work dir: $WORK_DIR" + +sudo mkdir -p "$MOUNT_DIR" + +rm -rf "$WORK_DIR" +mkdir -p "$WORK_DIR" + +echo "Mounting ISO..." +sudo mount -o loop "$SOURCE_ISO" "$MOUNT_DIR" + +cleanup() { + echo "Unmounting ISO..." + sudo umount "$MOUNT_DIR" || true +} +trap cleanup EXIT + +echo "Copying ISO contents..." +sudo rsync -a "$MOUNT_DIR"/ "$WORK_DIR"/ + +echo "Fixing ownership..." +sudo chown -R "$(id -u):$(id -g)" "$WORK_DIR" + +echo "Done."