diff --git a/README.md b/README.md index 0dc3702..12fc75b 100644 --- a/README.md +++ b/README.md @@ -10,13 +10,11 @@ Kubernetes resource management with Nix ## Usage -See [./docs/examples/](./docs/examples/) for now. +Apply all resources with - diff --git a/flake.nix b/flake.nix index dd532a3..fe97f5c 100644 --- a/flake.nix +++ b/flake.nix @@ -74,9 +74,14 @@ devShells.default = import ./devshell {inherit pkgs inputs;}; - packages = inputs.flake-utils.lib.flattenTree { - inherit (pkgs) kubernetes kubectl; - }; + packages = + inputs.flake-utils.lib.flattenTree { + inherit (pkgs) kubernetes kubectl; + } + // { + cli = pkgs.callPackage ./pkgs/kubenix.nix {}; + default = self.packages.${system}.cli; + }; checks = let wasSuccess = suite: diff --git a/pkgs/kubenix.nix b/pkgs/kubenix.nix new file mode 100644 index 0000000..c9627b8 --- /dev/null +++ b/pkgs/kubenix.nix @@ -0,0 +1,60 @@ +{ + lib, + writeShellScriptBin, + coreutils, + nix, + jq, +}: 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 + render - print resource manifests to stdout + " + } + + function apply() { + echo not impremented + } + + function render() { + ${nix}/bin/nix eval '.#kubernetes' # | ${jq}/bin/jq 'fromjson' + } + + while test $# -gt 0; do + case "$1" in + apply|"") + shift + apply + ;; + render) + shift + render + ;; + -h|--help) + help + exit 0 + ;; + -v|--verbose) + shift + set -x + ;; + *) + help + exit 1 + ;; + esac + done + + + '') + {meta.description = "";}