#!/usr/bin/env bash
# Copyright 2021 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# TODO(pascallouis): better automate this.

set -euxo pipefail

if [ ! -x "${FUCHSIA_DIR}" ]; then
  echo "error: did you fx exec? missing \$FUCHSIA_DIR" 1>&2
  exit 1
fi

if [ ! -x "${FUCHSIA_BUILD_DIR}" ]; then
  echo "error: did you fx exec? missing \$FUCHSIA_BUILD_DIR" 1>&2
  exit 1
fi

pushd "$FUCHSIA_DIR"

FIDLC=$( fx list-build-artifacts --expect-one --name fidlc tools )
FIDLGEN_GO=$( fx list-build-artifacts --expect-one --name fidlgen_go tools )

fx ninja -C "${FUCHSIA_BUILD_DIR}" $FIDLC $FIDLGEN_GO

tmpout=$(mktemp -d 2>/dev/null || mktemp -d -t 'tmpout')
ir_file="${tmpout}/out.json"

trap 'rm -rf -- "${tmpout}" && popd > /dev/null' EXIT

declare -r repo=third_party/go

# Parameters:
# $1 = directory where fidl file is found.
# $2 =  output of subdirectory of syscall/zx
# $3..n = additional arguments needed to generate this target.
function generate_file {
  declare -r source_dir=$1
  shift
  declare -r package_dir=$1
  shift
  declare -r file=src/syscall/zx/"${package_dir}"/impl.go
  declare -r out_file=$repo/$file
  declare -r copyright_line=$(git -C ${repo} show HEAD:"${file}" | grep -E "^// Copyright [0-9]+" || \
    echo "// Copyright $(date +%Y) The Fuchsia Authors. All rights reserved.")
  "${FUCHSIA_BUILD_DIR}"/$FIDLC \
    --available fuchsia:HEAD \
    --json "${ir_file}" \
    "$@" \
    --files "${source_dir}"/*.fidl
  "${FUCHSIA_BUILD_DIR}"/$FIDLGEN_GO \
    -json "${ir_file}" \
    -output-impl "${tmpout}/impl.go"

  declare -r tmpfile=$(mktemp "${tmpout}/tmp.XXXXXXXX")
  echo "${copyright_line}" > "${tmpfile}"
  cat << EOF >> "${tmpfile}"
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// Code generated by third_party/go/regen-fidl; DO NOT EDIT.

EOF
  cat "${tmpout}"/impl.go >> "${tmpfile}"
  perl -pi -e 's|^// Code generated by fidlgen; DO NOT EDIT.\n$||' "${tmpfile}"
  perl -pi -e 's|fidl/fuchsia/|syscall/zx/|' "${tmpfile}"
  ./prebuilt/third_party/go/linux-x64/bin/gofmt -s -w "${tmpfile}"
  mv -- "${tmpfile}" "${out_file}"
}

# Ensure we don't leave stale files around.
find $repo -path '*src/syscall/zx/*/impl.go' -exec rm {} \;

generate_file {third_party/go/src/syscall/zx/,}fidl/internal/bindingstest \
  --files zircon/vdso/zx_common.fidl zircon/vdso/rights.fidl

generate_file sdk/fidl/fuchsia.unknown unknown \
  --files zircon/vdso/zx_common.fidl zircon/vdso/rights.fidl

generate_file sdk/fidl/fuchsia.io io \
  --files zircon/vdso/zx_common.fidl zircon/vdso/rights.fidl \
  --files sdk/fidl/fuchsia.unknown/*.fidl

generate_file sdk/fidl/fuchsia.net net

generate_file sdk/fidl/fuchsia.net.name net/name \
  --files zircon/vdso/zx_common.fidl zircon/vdso/rights.fidl \
  --files sdk/fidl/fuchsia.net/*.fidl

generate_file sdk/fidl/fuchsia.posix posix

generate_file sdk/fidl/fuchsia.posix.socket posix/socket \
  --files zircon/vdso/zx_common.fidl zircon/vdso/rights.fidl \
  --files sdk/fidl/fuchsia.unknown/*.fidl \
  --files sdk/fidl/fuchsia.net/*.fidl \
  --files sdk/fidl/fuchsia.hardware.network/*.fidl \
  --files sdk/fidl/fuchsia.net.interfaces/*.fidl \
  --files sdk/fidl/fuchsia.posix/*.fidl

generate_file sdk/fidl/fuchsia.hardware.network hardware/network \
  --files zircon/vdso/zx_common.fidl zircon/vdso/rights.fidl \
  --files sdk/fidl/fuchsia.net/*.fidl

generate_file sdk/fidl/fuchsia.net.interfaces net/interfaces \
  --files zircon/vdso/zx_common.fidl zircon/vdso/rights.fidl \
  --files sdk/fidl/fuchsia.net/*.fidl \
  --files sdk/fidl/fuchsia.hardware.network/*.fidl

generate_file sdk/fidl/fuchsia.mem mem \
  --files zircon/vdso/zx_common.fidl zircon/vdso/rights.fidl

generate_file sdk/fidl/fuchsia.diagnostics diagnostics \
  --files zircon/vdso/zx_common.fidl zircon/vdso/rights.fidl \
  --files sdk/fidl/fuchsia.mem/*.fidl

generate_file sdk/fidl/fuchsia.logger logger \
  --files zircon/vdso/zx_common.fidl zircon/vdso/rights.fidl \
  --files sdk/fidl/fuchsia.mem/*.fidl \
  --files sdk/fidl/fuchsia.diagnostics/*.fidl
