blob: 6fb4af3215f1fb4fd9fe9eefc8702885687de81f [file] [log] [blame]
Alex Perrycb7da4b2019-08-28 19:35:56 -07001#include <string>
2#include <vector>
3
4#include "aos/configuration.h"
5#include "aos/init.h"
6#include "aos/json_to_flatbuffer.h"
7#include "aos/util/file.h"
8#include "gflags/gflags.h"
9#include "glog/logging.h"
10
11namespace aos {
12
13int Main(int argc, char **argv) {
14 CHECK_GE(argc, 3) << ": Too few arguments";
15
16 VLOG(1) << "Reading " << argv[2];
17 FlatbufferDetachedBuffer<Configuration> config =
18 configuration::ReadConfig(argv[2]);
19
20 std::vector<aos::FlatbufferString<reflection::Schema>> schemas;
21
22 for (int i = 3; i < argc; ++i) {
23 schemas.emplace_back(util::ReadFileToStringOrDie(argv[i]));
24 }
25
26 const std::string merged_config = FlatbufferToJson(
27 &configuration::MergeConfiguration(config, schemas).message(), true);
28
29 // TODO(austin): Figure out how to squash the schemas onto 1 line so it is
Austin Schuh217a9782019-12-21 23:02:50 -080030 // easier to read? Or figure out how to split them into a second file which
31 // gets included.
Alex Perrycb7da4b2019-08-28 19:35:56 -070032 VLOG(1) << "Flattened config is " << merged_config;
33 util::WriteStringToFileOrDie(argv[1], merged_config);
34 return 0;
35}
36
37} // namespace aos
38
39int main(int argc, char **argv) {
40 aos::InitGoogle(&argc, &argv);
41 return aos::Main(argc, argv);
42}