#!/bin/bash
set -eo pipefail

help=$'Generate SquashFS image Script

Generates a SquashFS image from the PNOR image

usage: generate-squashfs [OPTION] <PNOR FILE>...

Options:
   -f, --file <file>      Specify destination file. Defaults to
                          `pwd`/pnor.xz.squashfs if unspecified.
   -h, --help             Display this help text and exit.
'

let ffs_entry_size=128
let miscflags_offset=112
outfile=`pwd`"/pnor.xz.squashfs"
declare -a partitions=()
tocfile="pnor.toc"

while [[ $# -gt 0 ]]; do
  key="$1"
  case $key in
    -f|--file)
      outfile="$2"
      shift 2
      ;;
    -h|--help)
      echo "$help"
      exit
      ;;
    *)
      pnorfile="$1"
      shift 1
      ;;
  esac
done

if [ ! -f "${pnorfile}" ]; then
  echo "Please enter a valid PNOR file."
  echo "$help"
  exit 1
fi

scratch_dir=`mktemp -d`

echo "Parsing PNOR TOC..."

# Needed to get the READONLY and PRESERVED flags
# TODO: Get READONLY and PRESERVED flags from pflash instead.
pflash --partition=part --read=${scratch_dir}/part -F ${pnorfile}

{
  while read line; do
    if [[ $line == "ID="* ]]; then
        # This line looks like
        # "ID=05 MVPD 000d9000..00169000 (actual=00090000) [ECC]"
        read -r -a fields <<< "$line"

        # Get any flags attached to end (e.g. [ECC])
        flags=""
        for flag in "${fields[@]:4}"
        do
          flags+=",${flag//[\[\]]/}"
        done

        id=${fields[0]##*=}
        offset=$((${ffs_entry_size} * 10#${id} + ${miscflags_offset}))
        miscflags=0x$(xxd -p -l  0x1 -seek ${offset} ${scratch_dir}/part)
        if ((miscflags & 0x80)); then
          flags+=",PRESERVED"
        fi
        if ((miscflags & 0x40)); then
          flags+=",READONLY"
        fi

        # Need the partition ID, name, start location, end location, and flags
        echo  "partition${id}=${fields[1]},${fields[2]/../,}${flags}"

        # Save the partition name
        partitions+=(${fields[1]})
    fi
  done < <(pflash --info -F ${pnorfile} | grep -v -i "part")
} > ${scratch_dir}/${tocfile}

for partition in "${partitions[@]}"; do
  echo "Reading ${partition}..."
  pflash --partition=${partition} \
    --read=${scratch_dir}/${partition} \
    -F ${pnorfile}
done

echo "Creating SquashFS image..."

cd "${scratch_dir}"
mksquashfs ${tocfile} ${partitions[*]} ${outfile}

echo "SquashFS Image at ${outfile}"
rm -r "${scratch_dir}"
