1*9bb1b549SSpandan Das# Copyright 2014 The Bazel Authors. All rights reserved. 2*9bb1b549SSpandan Das# 3*9bb1b549SSpandan Das# Licensed under the Apache License, Version 2.0 (the "License"); 4*9bb1b549SSpandan Das# you may not use this file except in compliance with the License. 5*9bb1b549SSpandan Das# You may obtain a copy of the License at 6*9bb1b549SSpandan Das# 7*9bb1b549SSpandan Das# http://www.apache.org/licenses/LICENSE-2.0 8*9bb1b549SSpandan Das# 9*9bb1b549SSpandan Das# Unless required by applicable law or agreed to in writing, software 10*9bb1b549SSpandan Das# distributed under the License is distributed on an "AS IS" BASIS, 11*9bb1b549SSpandan Das# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*9bb1b549SSpandan Das# See the License for the specific language governing permissions and 13*9bb1b549SSpandan Das# limitations under the License. 14*9bb1b549SSpandan Das 15*9bb1b549SSpandan Dasload( 16*9bb1b549SSpandan Das "//go/private:context.bzl", 17*9bb1b549SSpandan Das "go_context", 18*9bb1b549SSpandan Das) 19*9bb1b549SSpandan Dasload( 20*9bb1b549SSpandan Das "//go/private:go_toolchain.bzl", 21*9bb1b549SSpandan Das "GO_TOOLCHAIN", 22*9bb1b549SSpandan Das) 23*9bb1b549SSpandan Das 24*9bb1b549SSpandan Dasdef _go_info_impl(ctx): 25*9bb1b549SSpandan Das go = go_context(ctx) 26*9bb1b549SSpandan Das report = go.declare_file(go, ext = ".txt") 27*9bb1b549SSpandan Das args = go.builder_args(go) 28*9bb1b549SSpandan Das args.add("-out", report) 29*9bb1b549SSpandan Das go.actions.run( 30*9bb1b549SSpandan Das inputs = go.sdk_files, 31*9bb1b549SSpandan Das outputs = [report], 32*9bb1b549SSpandan Das mnemonic = "GoInfo", 33*9bb1b549SSpandan Das executable = ctx.executable._go_info, 34*9bb1b549SSpandan Das arguments = [args], 35*9bb1b549SSpandan Das ) 36*9bb1b549SSpandan Das return [DefaultInfo( 37*9bb1b549SSpandan Das files = depset([report]), 38*9bb1b549SSpandan Das runfiles = ctx.runfiles([report]), 39*9bb1b549SSpandan Das )] 40*9bb1b549SSpandan Das 41*9bb1b549SSpandan Das_go_info = rule( 42*9bb1b549SSpandan Das implementation = _go_info_impl, 43*9bb1b549SSpandan Das attrs = { 44*9bb1b549SSpandan Das "_go_info": attr.label( 45*9bb1b549SSpandan Das executable = True, 46*9bb1b549SSpandan Das cfg = "exec", 47*9bb1b549SSpandan Das default = "//go/tools/builders:info", 48*9bb1b549SSpandan Das ), 49*9bb1b549SSpandan Das "_go_context_data": attr.label( 50*9bb1b549SSpandan Das default = "//:go_context_data", 51*9bb1b549SSpandan Das ), 52*9bb1b549SSpandan Das }, 53*9bb1b549SSpandan Das toolchains = [GO_TOOLCHAIN], 54*9bb1b549SSpandan Das) 55*9bb1b549SSpandan Das 56*9bb1b549SSpandan Dasdef go_info(): 57*9bb1b549SSpandan Das _go_info( 58*9bb1b549SSpandan Das name = "go_info", 59*9bb1b549SSpandan Das visibility = ["//visibility:public"], 60*9bb1b549SSpandan Das ) 61