* Support faster writes by preallocating indexes
* Allow reading and writing raw key value pairs in libcar
* Remove bom_alloc_empty and bom_tree_alloc_empty
* Keep space for two extra indexes for compatibility
* Include struct bom_variables when checking minimum size of BOM memory
* Remove preallocated_index_count
* Refactor resizing code
* Add API to increase the size of the BOM index free list
* Optimize CAR write by pre-allocting BOM indexes
Print the set of output files, as expected, and output dependency info
as requested by the command line options. The dependency info contains
the full set of inputs and outputs used during compilation.
* Parse minimum system version for launch image assets.
A system version has at least two components separated by dots, with
an optional third component separated by an additional dot.
* Compile launch image assets.
Launch images are copied to the output, and metadata is added to the
partial info plist to describe the launch images.
Instead of checking if strings are empty, use optionals to store if
the arguments were passed at all. Additionally, add a few utility
methods to the option parser to simplify various tool option classes.
- Separate out PNG loading into a separate module.
- Refactor PNG loading to be less tied to asset compliation.
- Add an implementation of PNG loading using ImageIO when available.
- Add a unit test for loading various types of PNG images.
Using iterators, each stream is read or written a byte at a time, which
is inefficient. Instead, treat the buffers as buffers and read or write
in blocks.
Normalizing a path doesn't remove trailing directory separators, so
all paths relative to the working directory gained an extra separator
when the working directory itself ended in a separator.
* Pass through info and dependency info options to asset compile output.
Fixes writing out additional info plist and dependency info.
* Add initial implementation of compiling app icons.
Supports copying the images and writing the icon metadata to info
plist additions. Current implementation has two limitations:
- All idioms are copied for all target platforms. For example, watch
images are copied for asset compilation targeting a phone.
- The size of images is not verified against the specified dimensions.
In addition to the SDK, toolchains, and developer root. Also, refactor
executable search paths to require explicitly searching `PATH` rather
than treating it as a default.
- Refactor some logic out into separate functions.
- Cleanup code style nits for consistency.
- Use filesystem to read JPEG images as well as PNG.
- Move image set compilation into namespace and class.