kubenix/pkgs/kubenix.nix
2022-08-15 20:41:06 -04:00

71 lines
1.2 KiB
Nix

{
lib,
writeShellScriptBin,
coreutils,
nix,
jq,
kubectl,
}: let
name = "kubenix";
in
lib.recursiveUpdate (writeShellScriptBin name ''
set -Eeuo pipefail
NAME=${name}
function help() {
echo "
kubenix - Kubernetes resource management with Nix
commands:
apply - create resources in target cluster
diff - show a diff between rendered and live resources
render - print resource manifests to stdout
"
}
MANIFEST="$(${nix}/bin/nix eval '.#k8s.config.kubernetes.result' --raw)"
function apply() {
${kubectl}/bin/kubectl apply -f $MANIFEST
}
function render() {
cat $MANIFEST | ${jq}/bin/jq
}
function diff() {
${kubectl}/bin/kubectl diff -f $MANIFEST
}
while test $# -gt 0; do
case "$1" in
apply|"")
shift
apply
;;
diff)
shift
diff
;;
render)
shift
render
;;
-h|--help)
help
exit 0
;;
-v|--verbose)
shift
set -x
;;
*)
help
exit 1
;;
esac
done
'')
{meta.description = "";}