// Copyright 2016 Google Inc. 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";

option java_package = "com.google.turbine.proto";
option java_outer_classname = "DepsProto";

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;
}

// 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;
}
