
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
75 lines
2.2 KiB
Markdown
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 |