kubernix 0.1.1

Kubernetes development cluster bootstrapping with Nix packages
Documentation
SUDO := sudo -E
KUBERNIX := $(SUDO) target/release/kubernix

define nix-shell
	nix-shell -j$(shell nproc) nix/build.nix $(1)
endef

define nix-shell-pure
	$(call nix-shell,--keep SSH_AUTH_SOCK --pure $(1))
endef

define nix-shell-run
	$(call nix-shell,--run "$(1)")
endef

define nix-shell-pure-run
	$(call nix-shell-pure,--run "$(1)")
endef

all: build

.PHONY: build
build:
	$(call nix-shell-pure-run,cargo build)

.PHONY: build-release
build-release:
	$(call nix-shell-pure-run,cargo build --release)

.PHONY: docs
docs:
	$(call nix-shell-pure-run,cargo doc --no-deps)

.PHONY: nixpkgs
nixpkgs:
	nix-shell -p nix-prefetch-git --run "nix-prefetch-git --no-deepClone \
		https://github.com/nixos/nixpkgs > nix/nixpkgs.json"

.PHONY: shell
shell: build-release
	$(KUBERNIX) shell

.PHONY: test
test:
	$(call nix-shell-pure-run,cargo test)

.PHONY: run
run: build-release
	$(call nix-shell-pure-run,cargo build --release)
	$(KUBERNIX)

.PHONY: lint-clippy
lint-clippy:
	$(call nix-shell-pure-run,cargo clippy --all -- -D warnings)

.PHONY: lint-rustfmt
lint-rustfmt:
	$(call nix-shell-pure-run,cargo fmt)
	$(call nix-shell-pure-run,git diff --exit-code)