# Copyright (c) 2012 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.
# $Header: $

# @ECLASS: appid.eclass
# @MAINTAINER:
# ChromiumOS Build Team
# @BUGREPORTS:
# Please report bugs via http://crbug.com/new (with label Build)
# @VCSURL: https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay/+/master/eclass/@ECLASS@
# @BLURB: Eclass for setting up the omaha appid and devicetype fields in /etc/lsb-release

# @FUNCTION: doappid
# @USAGE: <appid> <devicetype>
# @DESCRIPTION:
# Initializes /etc/lsb-release with the appid and devicetype.  Note that appid
# is really just a UUID in the canonical {8-4-4-4-12} format (all uppercase).
# e.g. {01234567-89AB-CDEF-0123-456789ABCDEF}.
#
# This also adds the devicetype field, which can be one of the following values:
# - CHROMEBIT
# - CHROMEBASE
# - CHROMEBOOK
# - CHROMEBOX
# - REFERENCE
# - OTHER
doappid() {
	[[ $# -eq 2 && -n $1 && -n $2 ]] ||
		die "Usage: ${FUNCNAME} <appid> <devicetype>"
	[[ $2 == CHROMEBIT || $2 == CHROMEBASE || $2 == CHROMEBOOK ||
		$2 == CHROMEBOX || $2 == REFERENCE || $2 == OTHER ]] ||
		die "Usage: ${FUNCNAME} <appid> <devicetype>, where <devicetype> is one of \
CHROMEBIT, CHROMEBASE, CHROMEBOOK, CHROMEBOX, REFERENCE, OTHER (not $2)"
	local appid=$1
	local devicetype=$2

	# Validate the UUID is formatted correctly.
	local uuid_regex='[{][0-9A-F]{8}-([0-9A-F]{4}-){3}[0-9A-F]{12}[}]'
	local filtered_appid=$(echo "${appid}" | LC_ALL=C sed -r "s:${uuid_regex}::")
	if [[ -n ${filtered_appid} ]] ; then
		eerror "Invalid appid: ${appid} -> ${filtered_appid}"
		eerror "  - must start with '{' and end with '}'"
		eerror "  - must be all upper case"
		eerror "  - be a valid UUID (8-4-4-4-12 hex digits)"
		die "invalid appid: ${appid}"
	fi

	dodir /etc

	local lsb="${D}/etc/lsb-release"
	local canary_appid="{90F229CE-83E2-4FAF-8479-E368A34938B1}"
	[[ -e ${lsb} ]] && die "${lsb} already exists!"
	cat <<-EOF > "${lsb}" || die "creating ${lsb} failed!"
	CHROMEOS_RELEASE_APPID=${appid}
	CHROMEOS_BOARD_APPID=${appid}
	CHROMEOS_CANARY_APPID=${canary_appid}
	DEVICETYPE=${devicetype}
	EOF
}
