I've just published the first release of a CIQ build system based on Bazel (the open-source version of Google's build system).
Initially it works only on macOS; Windows and Linux support will come in time.
The inspiration for it came from the challenges I face while attempting to build apps in a scalable manner. I wanted to be able to reliably and flexibly generate .prg and .iq files for apps that shared source and resource files, as well as automate tasks like device-specific image scaling. I found the simulator execution via the VS Code extension was flaky, so there are tools for hot-reloading to the simulator for both interactive tests and unit testing. Also, and maybe this is macOS specific, but I was frustrated with how cumbersome file uploads/downloads to physical devices were, so I have tooling to help upload .prg & settings files, and help download logs.
The following features are currently available:
- Project Scaffolding: Automatically generate `manifest.xml` and `jungle` files based on your build targets.
- Resource Scaling: Automatically scale drawable resources for different device resolutions and icon sizes.
- Device Builds: Build `.prg` application files for specific devices with type checking and optimization options.
- Simulation: Launch your application in the Connect IQ Simulator directly from the command line (optionally with hot-reload).
- Testing: Run unit tests in the simulator (optionally with hot-reload).
- Device Deployment: Upload applications to physical Garmin devices via MTP (Media Transfer Protocol).
- Log Retrieval: Fetch debug logs from physical devices.
- Release Packaging: Export `.iq` files for submission to the Connect IQ Store.
- Multi-Device Management: Use macros to generate build, test, and simulation targets for multiple devices at once.
The following features are future endeavours:
- Add image scaling distinction between simulator and physical devices.
- Add bmfont generation with scaling and dilation support.
- Add barrel support.
- Add animations support.
- Add physical device .SET setting file configurator tool.
- Add CIQ crash log cat tool with PC (program counter) mapper.
- Explore simulator automation and screenshot regression testing.
- Explore possibilities for sandboxed SDK installations.
- Explore possibilities for app store publication support.
It's MIT licensed, and contributions are welcome!