1*e7b1675dSTing-Kang Chang# Copyright 2020 Google LLC 2*e7b1675dSTing-Kang Chang# 3*e7b1675dSTing-Kang Chang# Licensed under the Apache License, Version 2.0 (the "License"); 4*e7b1675dSTing-Kang Chang# you may not use this file except in compliance with the License. 5*e7b1675dSTing-Kang Chang# You may obtain a copy of the License at 6*e7b1675dSTing-Kang Chang# 7*e7b1675dSTing-Kang Chang# http://www.apache.org/licenses/LICENSE-2.0 8*e7b1675dSTing-Kang Chang# 9*e7b1675dSTing-Kang Chang# Unless required by applicable law or agreed to in writing, software 10*e7b1675dSTing-Kang Chang# distributed under the License is distributed on an "AS IS" BASIS, 11*e7b1675dSTing-Kang Chang# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*e7b1675dSTing-Kang Chang# See the License for the specific language governing permissions and 13*e7b1675dSTing-Kang Chang# limitations under the License. 14*e7b1675dSTing-Kang Chang"""starlark rules for jarjar. See https://github.com/pantsbuild/jarjar 15*e7b1675dSTing-Kang Chang""" 16*e7b1675dSTing-Kang Chang 17*e7b1675dSTing-Kang Changdef _jar_jar_impl(ctx): 18*e7b1675dSTing-Kang Chang ctx.actions.run( 19*e7b1675dSTing-Kang Chang inputs = [ctx.file.rules, ctx.file.input_jar], 20*e7b1675dSTing-Kang Chang outputs = [ctx.outputs.jar], 21*e7b1675dSTing-Kang Chang executable = ctx.executable._jarjar, 22*e7b1675dSTing-Kang Chang progress_message = "jarjar %s" % ctx.label, 23*e7b1675dSTing-Kang Chang arguments = ["process", ctx.file.rules.path, ctx.file.input_jar.path, ctx.outputs.jar.path], 24*e7b1675dSTing-Kang Chang ) 25*e7b1675dSTing-Kang Chang 26*e7b1675dSTing-Kang Chang return [ 27*e7b1675dSTing-Kang Chang JavaInfo( 28*e7b1675dSTing-Kang Chang output_jar = ctx.outputs.jar, 29*e7b1675dSTing-Kang Chang compile_jar = ctx.outputs.jar, 30*e7b1675dSTing-Kang Chang ), 31*e7b1675dSTing-Kang Chang DefaultInfo(files = depset([ctx.outputs.jar])), 32*e7b1675dSTing-Kang Chang ] 33*e7b1675dSTing-Kang Chang 34*e7b1675dSTing-Kang Changjar_jar = rule( 35*e7b1675dSTing-Kang Chang implementation = _jar_jar_impl, 36*e7b1675dSTing-Kang Chang attrs = { 37*e7b1675dSTing-Kang Chang "input_jar": attr.label(allow_single_file = True), 38*e7b1675dSTing-Kang Chang "rules": attr.label(allow_single_file = True), 39*e7b1675dSTing-Kang Chang "_jarjar": attr.label(executable = True, cfg = "exec", default = Label("//tools:jarjar")), 40*e7b1675dSTing-Kang Chang }, 41*e7b1675dSTing-Kang Chang outputs = { 42*e7b1675dSTing-Kang Chang "jar": "%{name}.jar", 43*e7b1675dSTing-Kang Chang }, 44*e7b1675dSTing-Kang Chang provides = [JavaInfo], 45*e7b1675dSTing-Kang Chang) 46