Skip to content

CLI Reference

Basic Usage

Terminal window
python -m struct_frame [proto_file] [options]

Code Generation Flags

FlagDescription
--build_cGenerate C code
--build_cppGenerate C++ code
--build_tsGenerate TypeScript code
--build_pyGenerate Python code
--build_jsGenerate JavaScript code
--build_gqlGenerate GraphQL schema
--build_csharpGenerate C# code

Output Path Options

FlagDescriptionDefault
--c_path PATHOutput directory for Cgenerated/c/
--cpp_path PATHOutput directory for C++generated/cpp/
--ts_path PATHOutput directory for TypeScriptgenerated/ts/
--py_path PATHOutput directory for Pythongenerated/py/
--js_path PATHOutput directory for JavaScriptgenerated/js/
--gql_path PATHOutput directory for GraphQLgenerated/gql/
--csharp_path PATHOutput directory for C#generated/csharp/

SDK Options

FlagDescription
--sdkInclude full SDK with transports (C++, Python, TypeScript)
--sdk_embeddedInclude embedded SDK without external dependencies (C++ only)

C# Options

FlagDescriptionDefault
--csharp_namespace NSRoot namespace for generated C# codeStructFrame
--csharp_sdkInclude C# transport implementations (Serial, TCP, UDP, WebSocket)
--target_framework TFMTarget framework for generated .csprojnet8.0

Other Options

FlagDescription
--equalityGenerate equality comparison operators/methods for messages
--forceForce regeneration even if hash matches previous generation
--hash_path PATHPath to store the generation hash file
--generate_testsGenerate test code with dummy values for round-trip verification

Examples

Generate C code:

Terminal window
python -m struct_frame messages.proto --build_c

Generate multiple languages:

Terminal window
python -m struct_frame messages.proto --build_c --build_cpp --build_py

Custom output paths:

Terminal window
python -m struct_frame messages.proto --build_c --c_path src/generated/

Generate with SDK:

Terminal window
python -m struct_frame messages.proto --build_cpp --sdk

Generated Files

C

  • <name>.structframe.h - Message definitions
  • Frame utilities (frame_base.h, frame_headers.h, frame_profiles.h, etc.)

C++

  • <name>.structframe.hpp - Message definitions
  • Frame utilities (frame_base.hpp, frame_headers.hpp, frame_profiles.hpp, etc.)
  • struct_frame_sdk/ - SDK files (if --sdk or --sdk_embedded used)

TypeScript

  • <name>.structframe.ts - Message definitions and classes
  • Frame utilities (frame-base.ts, frame-headers.ts, frame-profiles.ts, etc.)
  • struct_frame_sdk/ - SDK files (if --sdk used)

Python

  • struct_frame/generated/<name>.py - Message definitions and classes
  • Frame utilities (init.py, frame_base.py, frame_profiles.py, etc.)
  • struct_frame_sdk/ - SDK files (if --sdk used)

JavaScript

  • <name>.structframe.js - Message definitions and classes
  • Frame parsing utilities

GraphQL

  • <name>.structframe.graphql - GraphQL schema definitions

C#

  • <PackageName>/Enums/<EnumName>.cs - Enum definitions (one per enum)
  • <PackageName>/Messages/<MessageName>.cs - Message classes (one per message)
  • <PackageName>/MessageDefinitions.cs - Message registry
  • <PackageName>/SdkInterface.cs - SDK interface (always generated)
  • Framework/ - Framing, profiles, types, and SDK core
  • Framework/Sdk/Transports/ - Transport implementations (if --csharp_sdk used)
  • StructFrame.csproj - Project file (always generated)