#!/bin/dash
# Copyright (c) 2009-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.

# Chrosh commands that are only loaded when we're booting from removable
# media.

if [ "$(basename $0)" = "crosh-usb" ]; then
  exec "$(dirname $0)/crosh" --usb
fi

do_install() {
  if [ "$1" ]; then
    if [ $(expr "$1" : '^/dev/[[:alnum:]]\+$') == 0 ]; then
      help "invalid device name: $1"
      return 1
    fi

    local dst="$1"
    shift

    $CHROMEOS_INSTALL --dst="$dst" "$@"
  else
    $CHROMEOS_INSTALL "$@"
  fi
}

USAGE_update_firmware='[--factory]'
HELP_update_firmware='
  Update system firmware, if applicable. This command will update only the RW
  region by default. To rewrite RO and everything, add option --factory.
'
cmd_update_firmware() (
  local CHROMEOS_FIRMWARE_UPDATE="/usr/sbin/chromeos-firmwareupdate"
  local UPDATE_OPTION="--mode=recovery"

  case "$1" in
    --factory* )
      UPDATE_OPTION="--factory"
      ;;
    "" )
      # default option.
      ;;
    * )
      help "unsupported option: $1"
      return 1
      ;;
  esac

  # The firmware updater needs same permission as chromeos-install (the command
  # invoked by do_install). chromeos-install is now running as normal user and
  # then 'sudo' internally to invoke as root, so we also use sudo here.
  # TODO(hungte) if some day we have better security jail / sandbox, change the
  # sudo to follow new magic for granting root permission.

  if [ -s $CHROMEOS_FIRMWARE_UPDATE ]; then
    sudo $CHROMEOS_FIRMWARE_UPDATE --force $UPDATE_OPTION
  else
    echo "There is no firmware update in current system."
  fi
)

USAGE_install='[<dev>]'
HELP_install='
  Install Chrome OS to the target device, clearing out all existing data.
'
cmd_install() (
  do_install "$1"
)

USAGE_upgrade='[<dev>]'
HELP_upgrade='
  Upgrade an existing Chrome OS installation, saving existing user data.
'
cmd_upgrade() (
  do_install "$1" --preserve_stateful
)
