#!/usr/bin/env bash
# format-aman.sh -- format partisi (simulasi) dengan pemeriksaan "umount dulu"
# Pemakaian: bash format-aman.sh <partisi> <fstype> <label> [tabel]
# Format baris tabel: PARTISI|FSTYPE|MOUNT  (MOUNT berisi "-" bila belum)
# Tanpa argumen: demo singkat di direktori sementara.

skrip=$(realpath "$0")

if [ $# -eq 0 ]; then
    tmp=$(mktemp -d)
    printf 'sdb1|vfat|/media/budi/KINGSTON\nsdb2|ext4|-\n' > "$tmp/tabel-partisi.txt"
    (
        cd "$tmp" || exit 1
        bash "$skrip" sdb1 vfat DATA-USB tabel-partisi.txt
        sed -i 's#^sdb1|vfat|/media/budi/KINGSTON$#sdb1|vfat|-#' tabel-partisi.txt
        bash "$skrip" sdb1 vfat DATA-USB tabel-partisi.txt
        rm -f sdb1.img
    )
    rm -rf "$tmp"
    echo "demo selesai di direktori sementara"
    exit 0
fi

partisi=$1
fstype=${2:-vfat}
label=${3:-TANPA-LABEL}
tabel=${4:-tabel-partisi.txt}

if [ ! -f "$tabel" ]; then
    echo "gagal: tabel partisi $tabel tidak ditemukan"
    exit 0
fi

baris=$(grep -m1 "^$partisi|" "$tabel")
if [ -z "$baris" ]; then
    echo "gagal: partisi $partisi tidak terdaftar di $tabel"
    exit 0
fi

mount=$(printf '%s\n' "$baris" | cut -d'|' -f3)
if [ "$mount" != "-" ]; then
    echo "DITOLAK: partisi $partisi masih ter-mount di $mount"
    echo "lepas dulu: udisksctl unmount -b /dev/$partisi"
    exit 0
fi

echo "pemeriksaan $partisi: belum ter-mount, aman diformat"
dd if=/dev/zero of="$partisi.img" bs=1M count=4 status=none
echo "mengosongkan 4 MiB pertama partisi (dd if=/dev/zero)"
echo "menulis filesystem $fstype berlabel $label (mkfs simulasi)"
stat -c '%n: %s byte' "$partisi.img"
