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

75 lines
2.2 KiB
Markdown

# 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)
```bash
# Standard build command
cmake -G Ninja -S . -B ./build -DCMAKE_BUILD_TYPE=Debug -DPROJECT_NAME=<project>
cmake --build ./build
```
### Docker Build (for C++ tools)
```bash
# 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
```bash
./build.sh # Build individual project
./buildtestpublish_all.sh # Build all projects
```
### Test
```bash
./test.sh # Run tests for individual project
```
### Clean
```bash
./clean.sh # Clean build artifacts
```
### Publish
```bash
./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