controller/api: Implement CompileProtos endpoint.
BUG=b:162381958
TEST=manual
Change-Id: I68d696e43ff358fa2606c3ff0411c7d8a2f7f3a9
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/2708607
Tested-by: Alex Klein <saklein@chromium.org>
Reviewed-by: LaMont Jones <lamontjones@chromium.org>
Reviewed-by: Michael Mortensen <mmortensen@google.com>
Commit-Queue: Alex Klein <saklein@chromium.org>
diff --git a/api/controller/api.py b/api/controller/api.py
index 38253b1..1123fdb 100644
--- a/api/controller/api.py
+++ b/api/controller/api.py
@@ -7,9 +7,13 @@
from __future__ import print_function
+import os
+
from chromite.api import faux
from chromite.api import router as router_lib
from chromite.api import validate
+from chromite.lib import constants
+from chromite.lib import cros_build_lib
# API version number.
# The major version MUST be updated on breaking changes.
@@ -28,9 +32,19 @@
@faux.success(_CompileProtoSuccess)
@faux.empty_error
@validate.validation_complete
-def CompileProto(_input_proto, _output_proto, _config):
+def CompileProto(_input_proto, output_proto, _config):
"""Compile the Build API proto, returning the list of modified files."""
- pass
+ cmd = [os.path.join(constants.CHROMITE_DIR, 'api', 'compile_build_api_proto')]
+ cros_build_lib.run(cmd)
+ result = cros_build_lib.run(['git', 'status', '--porcelain=v1'],
+ cwd=constants.CHROMITE_DIR, capture_output=True,
+ encoding='utf-8')
+ for line in result.stdout.splitlines():
+ if not line:
+ continue
+ path = line.split()[-1]
+ output_proto.modified_files.add().path = os.path.join(
+ constants.CHROMITE_DIR, path)
@faux.all_empty