1*abe8e1b9SSadaf Ebrahimi# Copyright 2020 The Bazel Authors. All rights reserved. 2*abe8e1b9SSadaf Ebrahimi# 3*abe8e1b9SSadaf Ebrahimi# Licensed under the Apache License, Version 2.0 (the "License"); 4*abe8e1b9SSadaf Ebrahimi# you may not use this file except in compliance with the License. 5*abe8e1b9SSadaf Ebrahimi# You may obtain a copy of the License at 6*abe8e1b9SSadaf Ebrahimi# 7*abe8e1b9SSadaf Ebrahimi# http://www.apache.org/licenses/LICENSE-2.0 8*abe8e1b9SSadaf Ebrahimi# 9*abe8e1b9SSadaf Ebrahimi# Unless required by applicable law or agreed to in writing, software 10*abe8e1b9SSadaf Ebrahimi# distributed under the License is distributed on an "AS IS" BASIS, 11*abe8e1b9SSadaf Ebrahimi# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*abe8e1b9SSadaf Ebrahimi# See the License for the specific language governing permissions and 13*abe8e1b9SSadaf Ebrahimi# limitations under the License. 14*abe8e1b9SSadaf Ebrahimi 15*abe8e1b9SSadaf Ebrahimi"""A rule than fails during analysis.""" 16*abe8e1b9SSadaf Ebrahimi 17*abe8e1b9SSadaf Ebrahimidef _fail_rule_impl(ctx): 18*abe8e1b9SSadaf Ebrahimi if ctx.attr.header: 19*abe8e1b9SSadaf Ebrahimi fail("%s %s" % (ctx.attr.header, ctx.attr.message)) 20*abe8e1b9SSadaf Ebrahimi else: 21*abe8e1b9SSadaf Ebrahimi fail(ctx.attr.message) 22*abe8e1b9SSadaf Ebrahimi 23*abe8e1b9SSadaf Ebrahimifail_rule = rule( 24*abe8e1b9SSadaf Ebrahimi doc = "A rule that fails during analysis.", 25*abe8e1b9SSadaf Ebrahimi implementation = _fail_rule_impl, 26*abe8e1b9SSadaf Ebrahimi attrs = { 27*abe8e1b9SSadaf Ebrahimi "header": attr.string( 28*abe8e1b9SSadaf Ebrahimi doc = "Header of the message.", 29*abe8e1b9SSadaf Ebrahimi ), 30*abe8e1b9SSadaf Ebrahimi "message": attr.string( 31*abe8e1b9SSadaf Ebrahimi mandatory = True, 32*abe8e1b9SSadaf Ebrahimi doc = "Message to display.", 33*abe8e1b9SSadaf Ebrahimi ), 34*abe8e1b9SSadaf Ebrahimi }, 35*abe8e1b9SSadaf Ebrahimi) 36