blob: 8fe129324e0148775cb96a14113331258be09f3d [file] [log] [blame]
#!/usr/bin/env bash
EXAMPLE_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
FUCHSIA_DIR="$( echo ${EXAMPLE_DIR} | sed -e 's,garnet/go/src.*$,,' )"
FIDLC=${FUCHSIA_DIR}out/x64/host_x64/fidlc
FIDLGEN=${FUCHSIA_DIR}out/x64/host_x64/fidlgen
if [ ! -x "${FIDLC}" ]; then
echo "error: fidlc missing; did you fx clean-build x64?" 1>&2
exit 1
fi
if [ ! -x "${FIDLGEN}" ]; then
echo "error: fidlgen missing; maybe fx clean-build x64?" 1>&2
exit 1
fi
for src_path in `find "${EXAMPLE_DIR}" -name '*.fidl'`; do
src_name="$( basename "${src_path}" )"
json_name=${src_name}.json
cpp_header_name=${json_name}.h
cpp_test_header_name=${json_name}_test_base.h
cpp_source_name=${json_name}.cc
llcpp_header_name=${json_name}.llcpp.h
llcpp_source_name=${json_name}.llcpp.cpp
go_impl_name=${json_name}.go
rust_name=${json_name}.rs
echo -e "\033[1mexample: ${src_name}\033[0m"
echo " json ir: ${src_name} > ${json_name}"
${FIDLC} \
--json "${EXAMPLE_DIR}/${json_name}" \
--files "${EXAMPLE_DIR}/${src_name}"
echo " cpp: ${json_name} > ${cpp_header_name}, ${cpp_source_name}, and ${cpp_test_header_name}"
${FIDLGEN} \
-generators cpp \
-json "${EXAMPLE_DIR}/${json_name}" \
-output-base "${EXAMPLE_DIR}/${json_name}" \
-include-base "${EXAMPLE_DIR}"
mv "${EXAMPLE_DIR}/${cpp_header_name}" "${EXAMPLE_DIR}/${cpp_header_name}.golden"
mv "${EXAMPLE_DIR}/${cpp_source_name}" "${EXAMPLE_DIR}/${cpp_source_name}.golden"
mv "${EXAMPLE_DIR}/${cpp_test_header_name}" "${EXAMPLE_DIR}/${cpp_test_header_name}.golden"
echo " llcpp: ${json_name} > ${llcpp_header_name} and ${llcpp_source_name}"
${FIDLGEN} \
-generators llcpp \
-json "${EXAMPLE_DIR}/${json_name}" \
-output-base "${EXAMPLE_DIR}/${json_name}.llcpp" \
-include-base "${EXAMPLE_DIR}"
mv "${EXAMPLE_DIR}/${llcpp_header_name}" "${EXAMPLE_DIR}/${llcpp_header_name}.golden"
mv "${EXAMPLE_DIR}/${llcpp_source_name}" "${EXAMPLE_DIR}/${llcpp_source_name}.golden"
echo " go: ${json_name} > ${go_impl_name}"
${FIDLGEN} \
-generators go \
-json "${EXAMPLE_DIR}/${json_name}" \
-output-base "${EXAMPLE_DIR}" \
-include-base "${EXAMPLE_DIR}"
rm "${EXAMPLE_DIR}/pkg_name"
mv "${EXAMPLE_DIR}/impl.go" "${EXAMPLE_DIR}/${go_impl_name}.golden"
echo " rust: ${json_name} > ${rust_name}"
${FIDLGEN} \
-generators rust \
-json "${EXAMPLE_DIR}/${json_name}" \
-output-base "${EXAMPLE_DIR}/${json_name}" \
-include-base "${EXAMPLE_DIR}"
mv "${EXAMPLE_DIR}/${rust_name}" "${EXAMPLE_DIR}/${rust_name}.golden"
done