The official config loader for Tableau.
TODO: devcontainer
- C++ standard: at least C++17
- Install: CMake 3.22 or above
- Init protobuf:
- macOS or Linux:
bash init.sh - Windows:
- Install Visual Studio 2022
- Environment Setup: Open the appropriate
Developer Command Prompt for VS 2022from the Start menu to ensurecl.exeand other build tools are in yourPATH. - Change dir to loader repo
- Run:
.\init.bat
- macOS or Linux:
- Change dir:
cd test/cpp-tableau-loader - Generate protoconf:
bash ./gen.sh - CMake:
- C++17:
cmake -S . -B build - C++20:
cmake -S . -B build -DCMAKE_CXX_STANDARD=20 - clang:
cmake -S . -B build -DCMAKE_CXX_COMPILER=clang++
- C++17:
- Build:
cmake --build build -j16 - Run:
./bin/loader
- Change dir:
cd test\cpp-tableau-loader - Generate protoconf:
.\gen.bat - CMake:
- C++17:
cmake -S . -B build -G "NMake Makefiles" - C++20:
cmake -S . -B build -G "NMake Makefiles" -DCMAKE_CXX_STANDARD=20
- C++17:
- Build:
cmake --build build - Run:
.\bin\loader.exe
- Install: go1.18 or above
- Install protoc-gen-go:
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest - Change dir:
cd test/go-tableau-loader - Generate protoconf:
bash ./gen.sh - Build:
go build
- nodejs v16.0.0
- protobufjs v7.2.3
- Change dir:
cd test/ts-tableau-loader - Install depedencies:
npm install - Generate protoconf:
npm run generate - Test:
npm run test
Problems in protobufjs:
- Unable to use Google well known types
- google.protobuf.Timestamp deserialization incompatible with canonical JSON representation
- Implement wrapper for google.protobuf.Timestamp, and correctly generate wrappers for static target.
If using reflection (.proto or JSON) but not static code, and for well-known types support, then proto3-json-serializer is a good option. This library implements proto3 JSON serialization and deserialization for
protobuf.js protobuf objects
according to the spec.