#!/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.

# Customizes a Chrome OS release image by setting /etc/lsb-release values.

# Load common constants and variables.
. "$(dirname "$0")/common.sh"

set_lsb_release_keyval() {
  local rootfs=$1
  local key=$2
  local value=$3
  local temp_lsb_release="$rootfs/etc/temp-lsb-release"
  echo "$key=$value" | sudo tee "$temp_lsb_release" > /dev/null
  grep -Ev "^$key=" "$rootfs/etc/lsb-release" \
    | sudo tee -a "$temp_lsb_release" > /dev/null
  sudo sort -o "$rootfs/etc/lsb-release" "$temp_lsb_release"
  sudo rm -f "$temp_lsb_release"
}

main() {
  set -e

  local image=$1
  local key=$2
  local value=$3
  if [ $# -ne 1 ] && [ $# -ne 3 ]; then
    cat <<EOF
Usage: $PROG <image.bin> [<key> <value>]

Examples:

$ $PROG chromiumos_image.bin

Dumps /etc/lsb-release from chromiumos_image.bin to stdout.

$ $PROG chromiumos_image.bin CHROMEOS_RELEASE_DESCRIPTION "New description"

Sets the CHROMEOS_RELEASE_DESCRIPTION key's value to "New description"
in /etc/lsb-release in chromiumos_image.bin, sorts the keys and dumps
the updated file to stdout.

EOF
    exit 1
  fi

  local rootfs=$(mktemp -d)
  mount_image_partition_ro "$image" 3 "$rootfs"
  trap "sudo umount -d $rootfs; rm -rf $rootfs" EXIT
  if [ -n "$key" ]; then
    sudo umount -d "$rootfs"
    mount_image_partition "$image" 3 "$rootfs"
    set_lsb_release_keyval "$rootfs" "$key" "$value"
    touch "$image"  # Updates the image modification time.
  fi
  cat "$rootfs/etc/lsb-release"
}

main "$@"
