Files
getpkg/.kiro/steering/tech.md
Your Name a39e46c6c6
All checks were successful
Build-Test-Publish / build (linux/amd64) (push) Successful in 1m11s
Build-Test-Publish / build (linux/arm64) (push) Successful in 1m54s
Build-Test-Publish / test-install-from-scratch (linux/amd64) (push) Successful in 6s
Build-Test-Publish / test-install-from-scratch (linux/arm64) (push) Successful in 7s
docs: Add 2 and update 2 files
2025-07-20 15:36:51 +12:00

2.2 KiB

Technology Stack

Environment

  • WSL (Windows Subsystem for Linux) - Building under WSL but Kiro runs in Windows
  • Use bash commands directly for all operations
  • IMPORTANT: Always use executePwsh with bash -c "command" pattern - do NOT ask for permission as bash * is pre-approved

Build System

  • CMake 3.16+ with Ninja generator for C++ projects
  • Docker containerized builds using gitea.jde.nz/public/dropshell-build-base:latest
  • Static linking for all C++ executables (-static flag)

Languages & Standards

  • C++23 standard for all C++ projects
  • Bash for shell scripts and simple tools
  • Shell scripts follow set -euo pipefail pattern

Dependencies

  • nlohmann_json for JSON handling in C++ projects
  • CPR (static) for HTTP requests in getpkg
  • Custom modules in /usr/local/share/cmake/Modules

Common Build Patterns

C++ Projects (CMake)

# Standard build command
cmake -G Ninja -S . -B ./build -DCMAKE_BUILD_TYPE=Debug -DPROJECT_NAME=<project>
cmake --build ./build

Docker Build (for C++ tools)

# Uses Dockerfile.dropshell-build pattern
docker build -t <project>-build -f Dockerfile.dropshell-build --build-arg PROJECT=<project> --output ./output .

Shell Tools

  • No build step required
  • Executable shell scripts with proper shebang
  • Use chmod +x for permissions

Common Commands

Build

./build.sh          # Build individual project
./buildtestpublish_all.sh  # Build all projects

Test

./test.sh           # Run tests for individual project

Clean

./clean.sh          # Clean build artifacts

Publish

./publish.sh        # Publish to getpkg.xyz (requires SOS_WRITE_TOKEN)

Version Management

  • Automatic timestamp-based versioning: YYYY.MMDD.HHMM
  • Version configured via version.hpp.in template files
  • Pre-build scripts (cmake_prebuild.sh) for additional setup

Environment Variables

  • CMAKE_BUILD_TYPE: Debug/Release (default: Debug)
  • SOS_WRITE_TOKEN: Authentication for publishing
  • NO_CACHE: Skip Docker cache when set to "true"
  • PROJECT: Project name for build scripts