# Copyright 2018 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# Creates a package for the HTTP service binary.
# The ID of the target architecture (amd64, arm64) must be passed in as
# a pkg-var so that the packages can be archived at the appropriate location
# in the CIPD package hierarchy.
#
# pkg-var arguments:
#   outdir: A fully qualified path to the build output directory.
#   targetarch: The target architecture, either "amd64" or "arm64".
#
# To create a CIPD package, run the following command from the build output
# directory.
#
# $ cipd create --pkg-def ../../fuchsia/cipd/http.yaml \
#               -pkg-var targetarch:$TARGET_ARCH \
#               -pkg-var outdir:`pwd` \
#               -ref latest \
#               -tag version:$(cat fuchsia_artifacts/build_id.txt)
#
# The most recent package can be discovered by searching for the "latest" ref:
#
# $ cipd describe chromium/fuchsia/http-$TARGET_ARCH -version latest

package: chromium/fuchsia/http-${targetarch}
description: Prebuilt HTTP service binary for Fuchsia.
root: ${outdir}/fuchsia_artifacts
data:
  - file: http.far
  - file: LICENSE
