#!/bin/sh
#
# Copyright 2016 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.
#
# Set activate date in VPD. This script should be called during OOBE to write
# down the activate date.
#
# Since OOBE can be invoked multiple times, this script should check if the
# activate date has been written. If yes, do nothing.
#
# Example:
#   activate_date          set the activate date to now if not set yet
#   activate_date --clean  delete the activate date VPD key, if present.
#

# VPD program location
VPD="/usr/sbin/vpd"

# The field name of activate date in VPD
FIELD_NAME="ActivateDate"

# Partition to store activate date
PARTITION="RW_VPD"


die() {
  echo "$*" >&2
  exit 1
}


write_activate_date() {
  ${VPD} -i "${PARTITION}" -s "${FIELD_NAME}=$1" || die "vpd returns ERROR."
}

clean_activate_date() {
  echo "Clean Activate Date."
  ${VPD} -i "${PARTITION}" -d "${FIELD_NAME}" ||
    echo "Can't delete ${FIELD_NAME}, it may not exist in ${PARTITION}."
}

main() {
  if [ "$1" = "--clean" ]; then
    CLEAN=1
  else
    CLEAN=0
  fi

  # Get the current value in VPD. The output format is followed:
  #
  #   "ActivateDate"="2011-33"
  #
  # Consisting of year-week, this lower granularity is used to minimize
  # unique identity correlation by activation date.
  ACTIVATE_DATE="$("${VPD}" -i "${PARTITION}" -g "${FIELD_NAME}" || true)"

  # Always attempt to delete the key if requested.
  if [ ${CLEAN} -eq 1 ]; then
    clean_activate_date
  # If 1. no VPD entry is set, or
  #    2. ActivateDate is empty string,
  # Then, write down current time into VPD.
  else
    if [ -z "${ACTIVATE_DATE}" ]; then
      # No activate date is set. Use current UTC time.
      nowDate=$(date --utc "+%Y-%W")
      echo "Setting Activate Date to ${nowDate}."
      write_activate_date "${nowDate}"
    else
      # An activate date is set. Do nothing.
      echo "Activate Date has already been set to ${ACTIVATE_DATE}."
    fi
  fi
  echo "Done."
}

main $1
