// Copyright 2020 TVL
// SPDX-License-Identifier: MIT

syntax = "proto3";
package tvl.tools.depot_scanner;
option go_package = "code.tvl.fyi/tools/depot-scanner/proto";

enum PathType {
  UNKNOWN = 0;
  DEPOT = 1;
  STORE = 2;
  CORE = 3;
}

message ScanRequest {
  // Which revision of the depot
  string revision = 1;
  string attr = 2;
  // Optionally, the attr to evaluate can be provided as a path to a folder or a
  // .nix file.  This is used by the HTTP service.
  string attrAsPath = 3;
}

message ScanResponse {
  repeated string depotPath = 1;
  repeated string nixStorePath = 2;
  repeated string corePkgsPath = 4;
  repeated string otherPath = 3;

  bytes derivation = 5;
}

message ArchiveRequest {
  repeated string depotPath = 1;
}

message ArchiveChunk {
  bytes chunk = 1;
}

service DepotScanService {
  rpc Scan(ScanRequest) returns (ScanResponse);

  rpc MakeArchive(ArchiveRequest) returns (stream ArchiveChunk);
}

