#!/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"
  restore_lsb_selinux "$rootfs/etc/lsb-release"
}

main() {
  set -e

  if [[ $(( $# % 2 )) -eq 0 ]]; then
    cat <<EOF
Usage: $PROG <image.bin> [<key> <value> [<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 image=$1
  shift
  local loopdev=$(loopback_partscan "${image}")
  local rootfs=$(make_temp_dir)

  # If there are no key/value pairs to process, we don't need write access.
  if [[ $# -eq 0 ]]; then
    mount_loop_image_partition_ro "${loopdev}" 3 "${rootfs}"
  else
    mount_loop_image_partition "${loopdev}" 3 "${rootfs}"
    touch "${image}"  # Updates the image modification time.
  fi

  # Process all the key/value pairs.
  local key value
  while [[ $# -ne 0 ]]; do
    key=$1 value=$2
    shift 2
    set_lsb_release_keyval "${rootfs}" "${key}" "${value}"
  done

  # Dump the final state.
  cat "${rootfs}/etc/lsb-release"

  # Dump security context for lsb-release file
  getfattr --absolute-names -n security.selinux "${rootfs}/etc/lsb-release"
}

main "$@"
