Code Generation Command
The codegen command generates type-safe client SDKs from Go source code annotations.
Usage
Description
Scans the VIIPER server codebase to extract:
- API routes and response DTOs
- Device wire formats from
viiper:wirecomment tags - Device constants (keycodes, modifiers, button masks)
Then generates client SDKs with:
- Management API clients
- Device-agnostic stream wrappers
- Per-device encode/decode functions
- Typed constants and enums
Note: The codegen command requires access to VIIPER source code. It must be executed from the viiper/ module directory within the repository.
Flags
--output
Output directory for generated SDKs (relative to repository root).
Default: ../clients
Environment Variable: VIIPER_CODEGEN_OUTPUT
Example:
--lang
Target language to generate.
Values: c, csharp, typescript, all
Default: all
Environment Variable: VIIPER_CODEGEN_LANG
Examples:
# Generate all SDKs
viiper codegen --lang=all
# Generate C SDK only
viiper codegen --lang=c
# Generate C# SDK only
viiper codegen --lang=csharp
# Generate TypeScript SDK only
viiper codegen --lang=typescript
Examples
Generate All SDKs
Generate C SDK and Rebuild Examples
cd viiper
go run ./cmd/viiper codegen --lang=c
cd ../examples/c
cmake --build build --config Release
CI/CD Integration
When to Regenerate
Run codegen when any of these change:
pkg/apitypes/*.go: API response structurespkg/device/*/inputstate.go: Wire format annotationspkg/device/*/const.go: Exported constantsinternal/server/api/*.go: Route registrations- Generator templates in
internal/codegen/generator/
See Also
- Generator Documentation: Detailed explanation of tagging system and code generation flow
- C SDK Documentation: C-specific usage and build instructions
- Configuration: Global configuration options