# Copyright 2014 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: $

inherit eutils

# @ECLASS: osreleased.eclass
# @MAINTAINER:
# Chromium OS 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 fields in /etc/os-release.d/

# @FUNCTION: do_osrelease_field
# @USAGE: <field_name> <field_value>
# @DESCRIPTION:
# Creates a file named /etc/os-release.d/<file_name> containing <field_value>.
# All files in os-release.d will be combined to create /etc/os-release when
# building the image.
do_osrelease_field() {
	[[ $# -eq 2 && -n $1 && -n $2 ]] || die "Usage: ${FUNCNAME} <field_name> <field_value>"
	local namevalidregex="[_A-Z]+"
	local valuevalidregex="[^\n]+"

	local field_name="$1"
	local field_value="$2"

	local filtered_name=$(echo "${field_name}" |\
		LC_ALL=C sed -r "s:${namevalidregex}::")
	local number_lines=$(echo "${field_value}" | wc -l)
	if [[ -n "${filtered_name}" ]]; then
		die "Invalid input. Field name must satisfy: ${validregex}"
	fi
	if [[ "${number_lines}" != "1" ]]; then
		die "Invalid input. Field value must not contain new lines."
	fi
	dodir /etc/os-release.d

	local field_file="${D}/etc/os-release.d/${field_name}"
	[[ -e ${field_file} ]] && die "The field ${field_name} has already been set!"
	echo "${field_value}" > "${field_file}" || \
		die "creating ${os_release} failed!"
}

# @FUNCTION: dometricsproductid
# @USAGE: <product_id>
# @DESCRIPTION:
# Sets the GOOGLE_METRICS_PRODUCT_ID field in /etc/os-release.d/;
# GOOGLE_METRICS_PRODUCT_ID should be a positive integer, matching the product
# id defined by the UMA backend protobuf (chrome_user_metrics_extension.proto).
# This product id will be used by chromeos-base/metrics to report metrics when
# the metrics_uploader USE flag is set.
# @CODE
# dometricsproductid 12
# @CODE
# will write 12 in /etc/os-release.d/GOOGLE_METRICS_PRODUCT_ID.
dometricsproductid() {
	[[ $# -eq 1 && -n $1 ]] || die "Usage: ${FUNCNAME} <product_id>"
	local product_id="$1"
	[[ -z ${product_id//[0-9]} ]] || die "The product id must be a number."

	do_osrelease_field "GOOGLE_METRICS_PRODUCT_ID" "${product_id}"
}
