crux 0.3.4

DevEx and operations CLI for everyday workflows

crux

A small single binary Crystal CLI for everyday DevEx and operations workflows.

Crux is an opinionated but transparent single-binary CLI that consolidates utilities used in the day-to-day. It favors convention over configuration, and tells you exactly what it is doing whenever it touches your system.

Installation

Homebrew:

brew install lowkeyliesmyth/tap/crux

Or grab a binary for your platform from the releases page.

Quick start

Crux groups commands by namespace. The kube namespace handles (currently only) Kubernetes manifest wrangling.

Split a multi-doc manifest into one file per object:

# from a local mega-manifest
crux kube ysplit ./out -f manifest.yaml

# from a remote URL
crux kube ysplit ./out -r https://example.com/manifests.yaml

Render a Helm chart and split its output into one file per object:

# remote chart targeting a specific version
crux kube helmsplit ./out jetstack/cert-manager -v 1.20

# local chart with a few values.yaml files and a project name prefixed to every output file
crux kube helmsplit ./out ./charts/myapp -f base.yaml -f prod.yaml -p myapp

Generate per-cluster ConfigMap patches from the rendered output:

For use with the rendered manifests pattern and generating kustomize-applied override patches.

crux kube helmsplit ./out sysdig/shield -o overrides.kyaml

where overrides.kyaml declares the clusters, an output path template, the keys to patch, and the content to patch them with:

---
{
  clusters: ["dev", "prod"],
  output: "clusters/${cluster}/patches/override-${object}.yaml",
  overrides: [{
    configmap: "shield-cluster",
    patches: [{
      outerPath: "data[cluster-shield.yaml]",
      innerPath: "cluster_config.name",
      valueFrom: "cluster.name",
    }],
  }],
}

Every crux run writes a _PROVENANCE.md file recording the exact command signature adjacent to the output files, giving you and your team the best chance to reproduce results.

Getting help. --help works at every command and namespace level:

crux --help
crux kube --help
crux kube helmsplit --help

Development

# Run spec tests
task spec

# Run ameba linter
task lint

# Build the crux binary
task build

# Format code
crystal tool format

# Run a specific test file
crystal spec spec/any_spec.cr

Contributing

Ran into a problem? Issues are welcome. Or if you're inclined to file a PR, see CONTRIBUTING.md to get set up.

Contributors

  • lowkey — creator and maintainer

License

Available as open source under the terms of the MIT License.

Repository

crux

Owner
Statistic
  • 0
  • 0
  • 0
  • 0
  • 4
  • about 4 hours ago
  • July 30, 2025
License

MIT License

Links
Synced at

Wed, 24 Jun 2026 15:54:58 GMT

Languages