Provide offline version of foxglove
This may be useful at events and in places with bad internet, and also
lets me pull in https://github.com/foxglove/studio/pull/5323 a few hours
early.
Change-Id: I584dda8fe7903a9a8d2876fa3a0ea318fa319180
Signed-off-by: James Kuszmaul <jabukuszmaul+collab@gmail.com>
diff --git a/frc971/analysis/BUILD b/frc971/analysis/BUILD
index b50e84e..c1ae252 100644
--- a/frc971/analysis/BUILD
+++ b/frc971/analysis/BUILD
@@ -187,3 +187,15 @@
"//frc971/input:joystick_state_fbs",
],
)
+
+cc_binary(
+ name = "local_foxglove",
+ srcs = ["local_foxglove.cc"],
+ data = ["@foxglove_studio"],
+ deps = [
+ "//aos:init",
+ "//aos/network:gen_embedded",
+ "//aos/seasocks:seasocks_logger",
+ "//third_party/seasocks",
+ ],
+)
diff --git a/frc971/analysis/local_foxglove.cc b/frc971/analysis/local_foxglove.cc
new file mode 100644
index 0000000..33e5a8b
--- /dev/null
+++ b/frc971/analysis/local_foxglove.cc
@@ -0,0 +1,18 @@
+#include "aos/init.h"
+#include "aos/seasocks/seasocks_logger.h"
+#include "glog/logging.h"
+#include "internal/Embedded.h"
+#include "seasocks/Server.h"
+
+DEFINE_string(data_path, "external/foxglove_studio",
+ "Path to foxglove studio files to serve.");
+DEFINE_uint32(port, 8000, "Port to serve files at.");
+
+int main(int argc, char *argv[]) {
+ aos::InitGoogle(&argc, &argv);
+ // Magic for seasocks.
+ findEmbeddedContent("");
+ ::seasocks::Server server(std::make_shared<aos::seasocks::SeasocksLogger>(
+ ::seasocks::Logger::Level::Info));
+ server.serve(FLAGS_data_path.c_str(), FLAGS_port);
+}