#!/bin/bash
# Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
#
# Emit scripts to pack and unpack the partitions from a GPT disk image.

# --- BEGIN COMMON.SH BOILERPLATE ---
# Load common CrOS utilities.  Inside the chroot this file is installed in
# /usr/lib/crosutils.  Outside the chroot we find it relative to the script's
# location.
find_common_sh() {
  local common_paths=(/usr/lib/crosutils $(dirname "$(readlink -f "$0")"))
  local path

  SCRIPT_ROOT=
  for path in "${common_paths[@]}"; do
    if [ -r "${path}/common.sh" ]; then
      SCRIPT_ROOT=${path}
      break
    fi
  done
}

find_common_sh
. "${SCRIPT_ROOT}/common.sh" || (echo "Unable to load common.sh" && exit 1)
# --- END COMMON.SH BOILERPLATE ---

# Need to be inside the chroot to load chromeos-common.sh
assert_inside_chroot

# Load functions and constants for chromeos-install
. "/usr/lib/installer/chromeos-common.sh" || \
  die "Unable to load /usr/lib/installer/chromeos-common.sh"

set -e

# Usage
IMAGE=${1:-}
DIR=${2:-}
if [[ -z "$IMAGE" || -z "$DIR" ]]; then
  echo "Usage: $0 GPT_DEVICE DIRECTORY" 1>&2
  exit 1
fi

PACK="${DIR}/pack_partitions.sh"
UNPACK="${DIR}/unpack_partitions.sh"

locate_gpt

TMP=$(mktemp)
$GPT show "$IMAGE" > $TMP

HEADER='#!/bin/bash -eu
# File generated by emit_gpt_scripts.sh. Do not edit.
TARGET=${1:-}
if [[ -z "$TARGET" ]]; then
  echo "Usage: $0 DEVICE" 1>&2
  exit 1
fi
set -x'

echo "$HEADER" > "$PACK"
echo "$HEADER" > "$UNPACK"
cat $TMP | sed -e 's/^/# /' >> "$PACK"
cat $TMP | sed -e 's/^/# /' >> "$UNPACK"

$GPT show -q "$IMAGE" | \
  while read start size part x; do \
    file="part_$part"
    loc="\"\$TARGET\""
    echo "dd if=$loc of=$file bs=512 skip=$start count=$size" \
      >> "$UNPACK"
    echo \
      "dd if=$file of=$loc bs=512 seek=$start count=$size conv=notrunc" \
      >> "$PACK"
  done

chmod +x "$PACK" "$UNPACK"

rm $TMP
