#!/bin/bash -e

# Super Grub Disk - supergrub-mkrescue
# Copyright (C) 2009,2010,2011,2012,2013,2014,2015  Adrian Gibanel Lopez.
#
# Super Grub Disk is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Super Grub Disk is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Super Grub Disk.  If not, see <http://www.gnu.org/licenses/>.

usage() {
cat <<EOF

  $0 -o=output.img
  Copyright Adrian Gibanel Lopez
  Licensed under the GNU PUBLIC LICENSE 3.0

  CREATE CALL
  ===========

  Usage: $0 [-o=FILENAME]
  Example: $0 -o=myrescatux.img

  Usage: $0 [-o=FILENAME] [--grub-install-binary=/path/to/grub-install]
  Example: $0 -o=myrescatux.img --grub-install-binary=/usr/local/sbin/grub-install

EOF

}

SG2D_DIR="$(pwd)"
source grub-build-config

GRUB_INSTALL_BINARY="\
${SG2D_GRUB_INSTALLATION_PREFIX}\
/${SG2D_GRUB_INSTALLATION_HYBRID}\
/sbin/grub-install\
"

GRUB_MKFONT_BINARY="\
${SG2D_GRUB_INSTALLATION_PREFIX}\
/${SG2D_GRUB_INSTALLATION_HYBRID}\
/bin/grub-mkfont\
"

if [ -e supergrub-build-config ] ; then
  source supergrub-build-config
fi

# Check the arguments.
for option in "$@"; do
  case "$option" in
    -h | --help)
      usage
      exit 0
    ;;
    -o=*)
      CUSTOM_ISO_FILENAME=`echo "$option" | sed 's/-o=//'`
    ;;
    --grub-install-binary=*)
      GRUB_INSTALL_BINARY=`echo "$option" | sed 's/--grub-install-binary=//'`
    ;;
    --grub-mkfont-binary=*)
      GRUB_MKFONT_BINARY=`echo "$option" | sed 's/--grub-mkfont-binary=//'`
    ;;
    --userid=*)
      USERID=`echo "$option" | sed 's/--userid=//'`
    ;;
    --groupid=*)
      GROUPID=`echo "$option" | sed 's/--groupid=//'`
    ;;
    --efi-platforms=*)
      EFI_PLATFORMS=`echo "$option" | sed 's/--efi-platforms=//'`
    ;;
  esac
done

# Get the version number for this Super GRUB2 Disk release
source menus/sgd/version.cfg
# Get common library for supergrub-mk commands
source supergrub-mkcommon


if [ ! -x "$GRUB_INSTALL_BINARY" ] ; then
  cat << EOF 1>&2
  grub-install binary cannot be run.
  Either you need to install it
  either you need to build it from grub build scripts
  Aborting.
EOF
  exit 1
fi

if [ ! -x "$GRUB_MKFONT_BINARY" ] ; then
  cat << EOF 1>&2
  grub-mkfont binary cannot be run.
  Either you need to install it
  either you need to build it from grub build scripts
  Aborting.
EOF
  exit 2
fi

BOOT_ISOS_DIRECTORY="boot-isos"
overlay=$(mktemp -d)
ISO_FILENAME="supergrub2-classic-${sgrub_version}-multiarch-USB.img"

if [[ "x$CUSTOM_ISO_FILENAME" != x ]] ; then
  ISO_FILENAME="${CUSTOM_ISO_FILENAME}"
fi




init_overlay_dir
generate_SG2D_UUID_FILE
copy_boot_isos_directory
copy_copyright
generate_and_copy_mo_files
check_unifont

SECUREBOOTIMAGE="no"
generate_usb_image_mbr ${SECUREBOOTIMAGE}

rm -r "$overlay"

zip --junk-paths "${ISO_FILENAME}".zip "${ISO_FILENAME}"
rm "${ISO_FILENAME}"
generate_filename_hashes "${ISO_FILENAME}.zip"
chown ${USERID}:${GROUPID} ${ISO_FILENAME}.zip*
