#!/bin/sh

create_initramfs () {
  if ! test -f /lib/modules/${1}/modules.dep; then
    return 0
  elif ! test -f /boot/vmlinuz-${1}; then
    return 0
  fi
  echo -n "Generating initramfs image for kernel ${1} ... "
  /sbin/dracut --force /boot/initramfs-${1}.img ${1} 1>/dev/null 2>&1
  if [ $? -ne 0 ]; then
    echo "[1;31mFailed[0m"
    return 1
  fi
  echo "[1;32mOK[0m"
  return 0
}

local status
status=0

if [ "x${1}" = "x" ]; then
  echo "Usage: update-initramfs <all | kernel version>"
  echo "Examples:"
  echo "  update-initramfs all"
  echo "  update-initramfs 6.12.23-1"
  exit 0
elif [ "x${1}" = "xall" ]; then
  for kernel in $(/bin/ls -1 /lib/modules/ 2>/dev/null); do
    create_initramfs ${kernel}
    if [ $? -ne 0 ]; then
      status=1
    fi
  done
else
  create_initramfs ${1}
  if [ $? -ne 0 ]; then
    status=1
  fi
fi

exit ${status}
