<?xml version="1.0" encoding="UTF-8"?>
<!--
      Copyright (C) 2016 The Android Open Source Project

      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
      You may obtain a copy of the License at

            http://www.apache.org/licenses/LICENSE-2.0

      Unless required by applicable law or agreed to in writing, software
      distributed under the License is distributed on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
      See the License for the specific language governing permissions and
      limitations under the License.

      Targets schema for the Brillo Developer Kit.
  -->
<grammar xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
  <start combine="choice">
    <ref name="Targets"/>
  </start>

  <define name="TargetName">
    <data type="token">
      <param name="pattern">[_\w]+</param>
      <param name="maxLength">128</param>
    </data>
  </define>

  <define name="OsName">
    <choice>
      <value type="token">brillo</value>
    </choice>
  </define>

  <define name="Version">
    <!-- git commit or number.number.number -->
    <choice>
      <data type="token">
        <param name="pattern">[0-9][0-9]*.[0-9][0-9]*.[0-9][0-9]*</param>
        <param name="maxLength">12</param>
      </data>
      <data type="hexBinary">
        <param name="minLength">3</param>
        <param name="maxLength">20</param>
      </data>
    </choice>
  </define>

  <define name="BoardName">
    <data type="token">
      <param name="pattern">([_\w]+)*</param>
      <param name="maxLength">128</param>
    </data>
  </define>


  <!-- When updating TargetPackName, also update packs.rng:PackName. -->
  <define name="TargetPackName">
    <data type="token">
      <param name="pattern">([_\w]+\.)*([_\w]+)</param>
      <param name="maxLength">128</param>
    </data>
  </define>

  <define name="TargetBuildType">
    <choice>
      <value type="token">user</value>
      <value type="token">userdebug</value>
      <value type="token">eng</value>
    </choice>
  </define>

  <define name="Target">
    <element name="target">
      <!-- If no name is given, the TargetPackName will be assumed. -->
      <optional>
        <attribute name="name">
          <ref name="TargetName"/>
        </attribute>
      </optional>
      <!--
        A target specifies system characteristics and a root resource
        pack required for the 'bdk' to generate the partition images
        for a specific Brillo device.
      -->
      <attribute name="os">
        <ref name="OsName"/>
      </attribute>
      <attribute name="os-version">
        <ref name="Version"/>
      </attribute>
      <attribute name="board">
        <ref name="BoardName"/>
      </attribute>
      <attribute name="board-version">
        <ref name="Version"/>
      </attribute>
      <optional>
        <attribute name="build">
          <ref name="TargetBuildType"/>
        </attribute>
      </optional>
      <attribute name="pack">
        <ref name="TargetPackName"/>
      </attribute>
    </element>
  </define>

  <define name="Targets">
    <element name="targets">
      <optional>
        <attribute name="version">
          <choice>
            <value type="integer">1</value>
          </choice>
        </attribute>
      </optional>
      <choice>
        <oneOrMore>
          <ref name="Target"/>
        </oneOrMore>
        <attribute name="path">
          <data type="token">
            <!-- TODO(wad): Move to a common data type. -->
            <param name="maxLength">4096</param>
          </data>
        </attribute>
      </choice>
    </element>
  </define>
</grammar>
