devtools/depotview: init
This is a small service for accessing git repos read-only over gRPC.
It's going to be used to allow hackdoc to render arbitrary versions of
hscloud.
Change-Id: Ib3c5eb5a8bc679e8062142e6fa30505d9550e2fa
diff --git a/devtools/depotview/proto/depotview.proto b/devtools/depotview/proto/depotview.proto
new file mode 100644
index 0000000..2584961
--- /dev/null
+++ b/devtools/depotview/proto/depotview.proto
@@ -0,0 +1,46 @@
+syntax = "proto3";
+package depotview;
+option go_package = "code.hackerspace.pl/hscloud/devtools/depotview/proto";
+
+message ResolveRequest {
+ string ref = 1;
+}
+
+message ResolveResponse {
+ string hash = 1;
+ int64 last_checked = 2;
+}
+
+message StatRequest {
+ string hash = 1;
+ string path = 2;
+}
+
+message StatResponse {
+ enum Type {
+ TYPE_INVALID = 0;
+ TYPE_NOT_PRESENT = 1;
+ TYPE_FILE = 2;
+ TYPE_DIRECTORY = 3;
+ };
+ Type type = 1;
+}
+
+message ReadRequest {
+ string hash = 1;
+ string path = 2;
+}
+
+message ReadResponse {
+ // Chunk of data. Empty once everything has been sent over.
+ bytes data = 1;
+}
+
+service DepotView {
+ // Resolve a git branch/tag/ref... into a commit hash.
+ rpc Resolve(ResolveRequest) returns (ResolveResponse);
+
+ // Minimal file access API. It kinda stinks.
+ rpc Stat(StatRequest) returns (StatResponse);
+ rpc Read(ReadRequest) returns (stream ReadResponse);
+}