// Copyright 2018 The Bazel Authors. All rights reserved.
//
// Licensed 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.
//
// Definitions for dependency reports.

syntax = "proto2";

package blaze_deps;

option java_package = "com.google.devtools.build.lib.view.proto";

// A specific location within a source file.
message SourceLocation {
    required string path = 1;
    optional int32 line = 2;
    optional int32 column = 3;
}

message Dependency {

    enum Kind {
        // Dependency used explicitly in the source.
        EXPLICIT = 0;
        // Dependency that is implicitly loaded and used by the compiler.
        IMPLICIT = 1;
        // Unused dependency.
        UNUSED = 2;
        // Implicit dependency considered by the compiler but not completed.
        INCOMPLETE = 3;
    }

    // Path to the artifact representing this dependency.
    required string path = 1;

    // Dependency kind
    required Kind kind = 2;

    // Source file locations: compilers can pinpoint the uses of a dependency.
    repeated SourceLocation location = 3;
}

// Top-level message found in .deps artifacts
message Dependencies {
    repeated Dependency dependency = 1;

    // Name of the rule being analyzed.
    optional string rule_label = 2;

    // Whether the action was successful; even when compilation fails, partial
    // dependency information can be useful.
    optional bool success = 3;

    // Packages contained in the output jar, sorted alphabetically.
    repeated string contained_package = 4;
}