kimager 0.1.0

Logs the existence of container images in a Kubernetes cluster.
Documentation
# Developing

This document contains tips, tricks, workflows, etc. for developing within this repository.

## Formatting

This repository includes a `rustfmt.toml` file, which is only used for organizing imports and newline characters.
The goal is to provide extra formatting that would otherwise be performed manually, and it is *not* to deviate from [rust-lang/rustfmt](https://github.com/rust-lang/rustfmt).

The TOML file includes [imports_granularity](https://github.com/rust-lang/rustfmt/blob/master/Configurations.md#imports_granularity), which is an unstable option that requires a nightly toolchain.
With a nightly toolchain installed, you can add the nightly `rustfmt` component.

```sh
rustup component add rustfmt --toolchain nightly
```

Now, you can format the code with all settings from the `rustfmt.toml` file.

```sh
cargo +nightly fmt
```

## Building

Execute the following commands to build `kimager`:

```sh
cargo update
cargo +nightly fmt
cargo clippy
cargo build
```

On compatible platforms, you can reduce the binary size by using `strip` to remove debug symbols.

```sh
du -h $BINARY
strip $BINARY
du -h $BINARY
```

## Testing with the Chart

First, we need to publish and image for our [Helm chart](./chart).
You can use a local, or remote, personal container repository for testing the end-to-end workflow.

```sh
docker build -t $IMAGE .
docker push $IMAGE
```

Now, we can install our chart and use our development image.

```sh
helm install -n kimager-system \
	--create-namespace --wait \
	--set image.repository=$REPOSITORY \
	--set image.tag=$TAG \
	./chart
```

Refer to the [README](./README.md) for more instructions on usage.

## Where is the Makefile?

This project aims to be cross-platform development friendly, and leverages the extensive options of `cargo` to do so.
In addition, this project aims to fill gaps with documentation.
However, this approach is subject to change if it does not suffice.