Skip to content

tableauio/loader

Repository files navigation

Loader

The official config loader for Tableau.

Prerequisites

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 2022 from the Start menu to ensure cl.exe and other build tools are in your PATH.
      • Change dir to loader repo
      • Run: .\init.bat

C++

Dev at 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++
  • Build: cmake --build build -j16
  • Run: ./bin/loader

Dev at Windows

  • 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
  • Build: cmake --build build
  • Run: .\bin\loader.exe

References

Go

  • 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

References

TypeScript

Requirements

  • nodejs v16.0.0
  • protobufjs v7.2.3

Test

  • Change dir: cd test/ts-tableau-loader
  • Install depedencies: npm install
  • Generate protoconf: npm run generate
  • Test: npm run test

Problems in protobufjs:

protobufjs: Reflection vs. static code

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.

References: