#!/bin/bash # # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you 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. # Utility script that invokes the passed in thrift command but deduplicates # and filters the output if the command is successful. COMMAND=("$@") TMP_FILE=$(mktemp -q) "${COMMAND[@]}" > ${TMP_FILE} 2>&1 COMMAND_RET_CODE=${PIPESTATUS[0]} if [[ ${COMMAND_RET_CODE} -ne 0 ]]; then # If the command failed, print all the output without sorting or filtering. cat ${TMP_FILE} else # If the command succeeded, then it is safe to deduplicate the output and # filter out warnings that are not useful. # # Thrift can print some warnings from included Thrift files, not just # the top-level Thrift file. Some commonly used Thrift files can be # included several times by several other included Thrift files, leading # to many copies of the same warning. Sorting and deduplicating reduces # the output considerably (i.e. '| sort | uniq' below) # # Ignored output: # 1. '64-bit constant "34359738368" may not work in all languages.' # 2. 'The "byte" type is a compatibility alias for "i8". Use "i8" to # emphasize the signedness of this type.' # 3. Empty lines ("^$") cat ${TMP_FILE} \ | sort | uniq \ | grep -v "64-bit constant.* may not work in all language." \ | grep -v 'The "byte" type is a compatibility alias for "i8".' \ | grep -v "^$" fi rm -f ${TMP_FILE} exit "${COMMAND_RET_CODE}"