Skip to content

๐Ÿ›  CLI Referenceยถ

NAME:
   helmwave - true release management for helm

USAGE:
   helmwave [global options] command [command options] 

VERSION:
   0.36.0

DESCRIPTION:
   This tool helps you compose your helm releases!
   0. $ helmwave yml
   1. $ helmwave build
   2. $ helmwave up


COMMANDS:
   yml      ๐Ÿ“„ render helmwave.yml.tpl -> helmwave.yml
   help, h  Shows a list of commands or help for one command
   BUILD:
     build     ๐Ÿ— build a plan
     diff, vs  ๐Ÿ†š show differences
     validate  ๐Ÿ›‚ validate your plan
     graph     show graph
   DEPLOY:
     up        ๐Ÿšข apply your plan
     list, ls  ๐Ÿ‘€ list of deployed releases
     rollback  โฎ  rollback your plan
     status    ๐Ÿ‘๏ธstatus of deployed releases
     down      ๐Ÿ”ช delete all
   SUPPORT:
     schema        generate json schema
     version, ver  show shorts version
     completion    generate completion script

GLOBAL OPTIONS:
   --cache-dir value  base directory for cache (default: "/home/runner/.cache/helmwave") [$HELMWAVE_CACHE_DIR, $HELMWAVE_CACHE_HOME]
   --help, -h         show help
   --version, -v      print the version

   LOGGER

   --log-color         on/off color (default: true) [$HELMWAVE_LOG_COLOR]
   --log-format value  You can set: [ text | json | pad | emoji ] (default: "emoji") [$HELMWAVE_LOG_FORMAT]
   --log-level value   You can set: [ debug | info | warn  | fatal | panic | trace ] (default: "info") [$HELMWAVE_LOG_LEVEL, $HELMWAVE_LOG_LVL]
   --log-timestamps    Add timestamps to log messages (default: false) [$HELMWAVE_LOG_TIMESTAMPS]

workflow

flowchart TD step0[step 0: helmwave.yml.tpl] -- yml --> step1[step 1: helmwave.yml] -- build --> step2[step 2: .helmwave/planfile] step2 --> up(up) step2 --> down(down) step2 --> ls(ls) step2 --> s(status) step2 --> r(rollback) step2 --> g(graph) step2 --> v(validate) step2 --> diff(diff)
If you don't see a graph, please reload the page.

ymlยถ

This command renders helmwave.yml.tpl to helmwave.yml.

Flags
--file value, -f value  main yml file (default: "helmwave.yml") [$HELMWAVE_YAML, $HELMWAVE_YML]
--templater value       select template engine: [ sprig | gomplate ] (default: "sprig") [$HELMWAVE_TEMPLATER, $HELMWAVE_TEMPLATE_ENGINE]
--tpl value             main tpl file (default: "helmwave.yml.tpl") [$HELMWAVE_TPL]

--tplยถ

Set path to helmwave.yml.tpl

--fileยถ

Set path to helmwave.yml

--templaterยถ

Introduced in v0.17.0

You can define template engine, which will be used to render helmwave.yml file or values files.

Please visit templating reference for more details.

buildยถ

Helmwave builds plan in complete plan directory (.helmwave by default) that other commands use.

A plan includes:

  • Downloaded remote charts
  • Downloaded and templated all used values files
  • Rendered manifests for each release
  • Markdown file with dependency graph as mermaid diagram
  • Rendered helmwave.yml that uses plan files (e.g., downloaded chart and values)
Flags

As you can see, build command includes yml command flags. You can pass --yml flag into build command for launching yml command before building a plan.

--graph-width value        set ceil width: 1 โ€“ disable graph; 0 โ€“ full names; N>1 โ€“ show only N symbols; N<0 โ€“ drop N symbols from end. (default: 0) [$HELMWAVE_GRAPH_WIDTH]
--plandir value, -p value  path to plandir (default: ".helmwave/") [$HELMWAVE_PLANDIR, $HELMWAVE_PLAN]
--remote-source value      go-getter URL to download build sources [$HELMWAVE_REMOTE_SOURCE]
--skip-unchanged           skip unchanged releases (default: false) [$HELMWAVE_SKIP_UNCHANGED]
--3-way-merge                          show 3-way merge diff (default: false) [$HELMWAVE_DIFF_3_WAY_MERGE]
--diff-mode value                      you can set: [ live | local | none ] (default: "live") [$HELMWAVE_DIFF_MODE]
--find-renames value                   enable rename detection if set to any value greater than 0. (default: 0) [$HELMWAVE_DIFF_FIND_RENAMES]
--show-secret                          show secret in diff (default: true) [$HELMWAVE_DIFF_SHOW_SECRET]
--strip-trailing-cr                    strip trailing carriage return on input (default: false) [$HELMWAVE_DIFF_STRIP_TRAILING_CR]
--suppress value [ --suppress value ]  allows suppression of the values listed in the diff output ("Secret" for example) [$HELMWAVE_DIFF_SUPPRESS]
--wide value                           show line around changes (default: 5) [$HELMWAVE_DIFF_WIDE]
--match-all-tags                                   match all provided tags (default: false) [$HELMWAVE_MATCH_ALL_TAGS]
--tags value, -t value [ --tags value, -t value ]  build releases by tags: -t tag1 -t tag3,tag4 [$HELMWAVE_TAGS]
--file value, -f value  main yml file (default: "helmwave.yml") [$HELMWAVE_YAML, $HELMWAVE_YML]
--templater value       select template engine: [ sprig | gomplate ] (default: "sprig") [$HELMWAVE_TEMPLATER, $HELMWAVE_TEMPLATE_ENGINE]
--tpl value             main tpl file (default: "helmwave.yml.tpl") [$HELMWAVE_TPL]
--yml                   auto helmwave.yml.tpl --> helmwave.yml (default: false) [$HELMWAVE_AUTO_YML, $HELMWAVE_AUTO_YAML]

--ymlยถ

Enable execute yml command before build command.

helmwave yml                                                              
[๐Ÿ™ƒ aka INFO]: ๐Ÿ“„ YML is ready!
        build plan with next command: helmwave build -f helmwave.yml

--tagsยถ

Allow to filter releases by tags. You can use this flag multiple times.

It works with --match-all-tags flag and tags field in helmwave.yaml file.

example

--match-all-tagsยถ

Change behavior of --tags flag. If --match-all-tags is set, then all tags should be matched. Otherwise, at least one tag should be matched.

example

--skip-unchangedยถ

Introduced in v0.27.0

This flag will skip unchanged helm releases.

TODO: add example

--graph-widthยถ

Introduced in v0.27.1

You can change logic of graph rendering by changing this flag.

  • 1: --graph-width=1 - disable graph rendering
  • 2: --graph-width=0 - try to detect max width of ceil by release name
  • N<0: --graph-width=-10 - drop 10 symbols.
  • N>1: --graph-width=10 - show only first 10 symbols.

:material-docs: example

--remote-sourceยถ

Introduced in v0.33.0

Remote source to use for building plan. go-getter URL format is used. The downloaded remote source is cached and the cache is reused.


--diff-modeยถ

Introduced in v0.12.0

  • live - diff with live cluster
  • plan - diff with local plan
  • none - disable diff

diff example

--wideยถ

Set wide output for diff.

TODO: add example

--show-secretยถ

Introduced in v0.16.0

Enable showing secret values in diff output.

TODO: add example

--3-way-mergeยถ

Introduced in v0.24.4

Enable 3-way merge for diff.

TODO: add example

--suppressยถ

Introduced in v0.35.0

Allows suppression of the values listed in the diff output

helmwave build --suppress Secret

--strip-trailing-crยถ

Introduced in v0.35.0

strip trailing carriage return on input

--find-renamesยถ

Introduced in v0.35.0

Enable rename detection if set to any value greater than 0.

upยถ

Helmwave will install repositories and helm releases from a plan.

Flags
--parallel-limit value  limit amount of parallel releases (default: 0) [$HELMWAVE_PARALLEL_LIMIT]
--build                    auto build (default: false) [$HELMWAVE_AUTO_BUILD]
--graph-width value        set ceil width: 1 โ€“ disable graph; 0 โ€“ full names; N>1 โ€“ show only N symbols; N<0 โ€“ drop N symbols from end. (default: 0) [$HELMWAVE_GRAPH_WIDTH]
--plandir value, -p value  path to plandir (default: ".helmwave/") [$HELMWAVE_PLANDIR, $HELMWAVE_PLAN]
--remote-source value      go-getter URL to download build sources [$HELMWAVE_REMOTE_SOURCE]
--skip-unchanged           skip unchanged releases (default: false) [$HELMWAVE_SKIP_UNCHANGED]
--3-way-merge                          show 3-way merge diff (default: false) [$HELMWAVE_DIFF_3_WAY_MERGE]
--diff-mode value                      you can set: [ live | local | none ] (default: "live") [$HELMWAVE_DIFF_MODE]
--find-renames value                   enable rename detection if set to any value greater than 0. (default: 0) [$HELMWAVE_DIFF_FIND_RENAMES]
--show-secret                          show secret in diff (default: true) [$HELMWAVE_DIFF_SHOW_SECRET]
--strip-trailing-cr                    strip trailing carriage return on input (default: false) [$HELMWAVE_DIFF_STRIP_TRAILING_CR]
--suppress value [ --suppress value ]  allows suppression of the values listed in the diff output ("Secret" for example) [$HELMWAVE_DIFF_SUPPRESS]
--wide value                           show line around changes (default: 5) [$HELMWAVE_DIFF_WIDE]
--kubedog                        enable/disable kubedog (default: false) [$HELMWAVE_KUBEDOG_ENABLED, $HELMWAVE_KUBEDOG]
--kubedog-log-width value        set kubedog max log line width (default: 140) [$HELMWAVE_KUBEDOG_LOG_WIDTH]
--kubedog-start-delay value      delay kubedog start, don't make it too late (default: 1s) [$HELMWAVE_KUBEDOG_START_DELAY]
--kubedog-status-interval value  interval of kubedog status messages: set -1s to stop showing status progress (default: 5s) [$HELMWAVE_KUBEDOG_STATUS_INTERVAL]
--kubedog-timeout value          timeout of kubedog multitrackers (default: 5m0s) [$HELMWAVE_KUBEDOG_TIMEOUT]
--kubedog-track-all              track almost all resources, experimental (default: false) [$HELMWAVE_KUBEDOG_TRACK_ALL]
--progress                       enable progress logs of helm (INFO log level) (default: false) [$HELMWAVE_PROGRESS]
--match-all-tags                                   match all provided tags (default: false) [$HELMWAVE_MATCH_ALL_TAGS]
--tags value, -t value [ --tags value, -t value ]  build releases by tags: -t tag1 -t tag3,tag4 [$HELMWAVE_TAGS]
--file value, -f value  main yml file (default: "helmwave.yml") [$HELMWAVE_YAML, $HELMWAVE_YML]
--templater value       select template engine: [ sprig | gomplate ] (default: "sprig") [$HELMWAVE_TEMPLATER, $HELMWAVE_TEMPLATE_ENGINE]
--tpl value             main tpl file (default: "helmwave.yml.tpl") [$HELMWAVE_TPL]
--yml                   auto helmwave.yml.tpl --> helmwave.yml (default: false) [$HELMWAVE_AUTO_YML, $HELMWAVE_AUTO_YAML]

--buildยถ

Enable execute build command before.

And you can also use --yml flag that renders helmwave.yml.tpl to helmwave.yml before running --build command.

--progressยถ

Introduced in v0.17.0

Enable helm debug progress output.

helmwave up --progress=false
[๐Ÿ™ƒ aka INFO]: ๐Ÿ—„ sync repositories...
[๐Ÿ™ƒ aka INFO]: ๐Ÿ—„ sync registries...
[๐Ÿ™ƒ aka INFO]: ๐Ÿ›ฅ sync releases...
[๐Ÿ™ƒ aka INFO]: ๐Ÿ›ฅ deploying... 
        release: a@my-namespace
[๐Ÿ™ƒ aka INFO]: ๐Ÿ›ฅ deploying... 
        release: b@my-namespace
[๐Ÿ™ƒ aka INFO]: โœ…
    release: b@my-namespace
[๐Ÿ™ƒ aka INFO]: โœ…
        release: a@my-namespace
[๐Ÿ™ƒ aka INFO]: Success 2 / 2
helmwave up --progress
[๐Ÿ™ƒ aka INFO]: ๐Ÿ—„ sync repositories...
[๐Ÿ™ƒ aka INFO]: ๐Ÿ—„ sync registries...
[๐Ÿ™ƒ aka INFO]: ๐Ÿ›ฅ sync releases...
[๐Ÿ™ƒ aka INFO]: ๐Ÿ›ฅ deploying... 
        release: a@my-namespace
[๐Ÿ™ƒ aka INFO]: ๐Ÿ›ฅ deploying... 
        release: b@my-namespace
[๐Ÿ™ƒ aka INFO]: getting history for release b
[๐Ÿ™ƒ aka INFO]: getting history for release a
[๐Ÿ™ƒ aka INFO]: preparing upgrade for b
[๐Ÿ™ƒ aka INFO]: preparing upgrade for a
[๐Ÿ™ƒ aka INFO]: performing update for a
[๐Ÿ™ƒ aka INFO]: performing update for b
[๐Ÿ™ƒ aka INFO]: creating upgraded release for a
[๐Ÿ™ƒ aka INFO]: creating upgraded release for b
[๐Ÿ™ƒ aka INFO]: checking 4 resources for changes
[๐Ÿ™ƒ aka INFO]: checking 4 resources for changes
[๐Ÿ™ƒ aka INFO]: Patch Secret "a-nats" in namespace my-namespace
[๐Ÿ™ƒ aka INFO]: Patch Secret "b-nats" in namespace my-namespace
[๐Ÿ™ƒ aka INFO]: Looks like there are no changes for Service "a-nats-headless"
[๐Ÿ™ƒ aka INFO]: Looks like there are no changes for Service "b-nats-headless"
[๐Ÿ™ƒ aka INFO]: Patch Service "a-nats" in namespace my-namespace
[๐Ÿ™ƒ aka INFO]: Patch Service "b-nats" in namespace my-namespace
[๐Ÿ™ƒ aka INFO]: Patch StatefulSet "a-nats" in namespace my-namespace
[๐Ÿ™ƒ aka INFO]: Patch StatefulSet "b-nats" in namespace my-namespace
[๐Ÿ™ƒ aka INFO]: waiting for release a resources (created: 0 updated: 4  deleted: 0)
[๐Ÿ™ƒ aka INFO]: beginning wait for 4 resources with timeout of 1m0s
[๐Ÿ™ƒ aka INFO]: waiting for release b resources (created: 0 updated: 4  deleted: 0)
[๐Ÿ™ƒ aka INFO]: beginning wait for 4 resources with timeout of 1m0s
[๐Ÿ™ƒ aka INFO]: StatefulSet is not ready: my-namespace/a-nats. 0 out of 1 expected pods have been scheduled
[๐Ÿ™ƒ aka INFO]: StatefulSet is not ready: my-namespace/b-nats. 0 out of 1 expected pods have been scheduled
[๐Ÿ™ƒ aka INFO]: StatefulSet is not ready: my-namespace/a-nats. 0 out of 1 expected pods are ready
[๐Ÿ™ƒ aka INFO]: StatefulSet is not ready: my-namespace/b-nats. 0 out of 1 expected pods have been scheduled
[๐Ÿ™ƒ aka INFO]: StatefulSet is not ready: my-namespace/a-nats. 0 out of 1 expected pods are ready
[๐Ÿ™ƒ aka INFO]: StatefulSet is not ready: my-namespace/b-nats. 0 out of 1 expected pods have been scheduled
[๐Ÿ™ƒ aka INFO]: StatefulSet is not ready: my-namespace/a-nats. 0 out of 1 expected pods are ready
[๐Ÿ™ƒ aka INFO]: StatefulSet is not ready: my-namespace/b-nats. 0 out of 1 expected pods have been scheduled
[๐Ÿ™ƒ aka INFO]: StatefulSet is not ready: my-namespace/a-nats. 0 out of 1 expected pods are ready
[๐Ÿ™ƒ aka INFO]: StatefulSet is not ready: my-namespace/b-nats. 0 out of 1 expected pods have been scheduled
[๐Ÿ™ƒ aka INFO]: StatefulSet is not ready: my-namespace/a-nats. 0 out of 1 expected pods are ready
[๐Ÿ™ƒ aka INFO]: StatefulSet is not ready: my-namespace/b-nats. 0 out of 1 expected pods are ready
[๐Ÿ™ƒ aka INFO]: StatefulSet is ready: my-namespace/a-nats. 1 out of 1 expected pods are ready
[๐Ÿ™ƒ aka INFO]: StatefulSet is not ready: my-namespace/b-nats. 0 out of 1 expected pods are ready
[๐Ÿ™ƒ aka INFO]: updating status for upgraded release for a
[๐Ÿ™ƒ aka INFO]: StatefulSet is not ready: my-namespace/b-nats. 0 out of 1 expected pods are ready
[๐Ÿ™ƒ aka INFO]: โœ…
        release: a@my-namespace
[๐Ÿ™ƒ aka INFO]: StatefulSet is not ready: my-namespace/b-nats. 0 out of 1 expected pods are ready
[๐Ÿ™ƒ aka INFO]: StatefulSet is not ready: my-namespace/b-nats. 0 out of 1 expected pods are ready
[๐Ÿ™ƒ aka INFO]: StatefulSet is ready: my-namespace/b-nats. 1 out of 1 expected pods are ready
[๐Ÿ™ƒ aka INFO]: updating status for upgraded release for b
[๐Ÿ™ƒ aka INFO]: โœ…
        release: b@my-namespace
[๐Ÿ™ƒ aka INFO]: Success 2 / 2

--parallel-limitยถ

Introduced in v0.20.0

Limit the number of parallel helm operations.


Introduced in v0.8.0

--kubedogยถ

Enable kubedog.

--kubedog-status-intervalยถ

Set interval for kubedog status.

--kubedog-start-delayยถ

Set delay before kubedog will start.

--kubedog-timeoutยถ

Set timeout for kubedog.

--kubedog-log-widthยถ

Set width of kubedog logboek.

--kubedog-track-allยถ

Introduced in v0.30.0

Track all resources, not only Deployment, DaemonSet, StatefulSet, Job. Annotations are also respected for these resources but it wasn't tested.

It will probably fail for some non-namespaced custom resources because kubedog can track only namespaced resources. In this case kubedog will fail with a warning

downยถ

Introduced in v0.12.2

Helmwave will uninstall helm releases from plan.

Flags
--build                    auto build (default: false) [$HELMWAVE_AUTO_BUILD]
--graph-width value        set ceil width: 1 โ€“ disable graph; 0 โ€“ full names; N>1 โ€“ show only N symbols; N<0 โ€“ drop N symbols from end. (default: 0) [$HELMWAVE_GRAPH_WIDTH]
--plandir value, -p value  path to plandir (default: ".helmwave/") [$HELMWAVE_PLANDIR, $HELMWAVE_PLAN]
--remote-source value      go-getter URL to download build sources [$HELMWAVE_REMOTE_SOURCE]
--skip-unchanged           skip unchanged releases (default: false) [$HELMWAVE_SKIP_UNCHANGED]
--3-way-merge                          show 3-way merge diff (default: false) [$HELMWAVE_DIFF_3_WAY_MERGE]
--diff-mode value                      you can set: [ live | local | none ] (default: "live") [$HELMWAVE_DIFF_MODE]
--find-renames value                   enable rename detection if set to any value greater than 0. (default: 0) [$HELMWAVE_DIFF_FIND_RENAMES]
--show-secret                          show secret in diff (default: true) [$HELMWAVE_DIFF_SHOW_SECRET]
--strip-trailing-cr                    strip trailing carriage return on input (default: false) [$HELMWAVE_DIFF_STRIP_TRAILING_CR]
--suppress value [ --suppress value ]  allows suppression of the values listed in the diff output ("Secret" for example) [$HELMWAVE_DIFF_SUPPRESS]
--wide value                           show line around changes (default: 5) [$HELMWAVE_DIFF_WIDE]
--match-all-tags                                   match all provided tags (default: false) [$HELMWAVE_MATCH_ALL_TAGS]
--tags value, -t value [ --tags value, -t value ]  build releases by tags: -t tag1 -t tag3,tag4 [$HELMWAVE_TAGS]
--file value, -f value  main yml file (default: "helmwave.yml") [$HELMWAVE_YAML, $HELMWAVE_YML]
--templater value       select template engine: [ sprig | gomplate ] (default: "sprig") [$HELMWAVE_TEMPLATER, $HELMWAVE_TEMPLATE_ENGINE]
--tpl value             main tpl file (default: "helmwave.yml.tpl") [$HELMWAVE_TPL]
--yml                   auto helmwave.yml.tpl --> helmwave.yml (default: false) [$HELMWAVE_AUTO_YML, $HELMWAVE_AUTO_YAML]
$ helmwave down      
[๐Ÿ™ƒ aka INFO]: โœ… frontend@test uninstalled!
[๐Ÿ™ƒ aka INFO]: โœ… database@test uninstalled!
[๐Ÿ™ƒ aka INFO]: โœ… backend@test uninstalled!

lsยถ

Introduced in v0.11.0

Helmwave will get a list of helm releases from a plan.

Flags
--build                    auto build (default: false) [$HELMWAVE_AUTO_BUILD]
--graph-width value        set ceil width: 1 โ€“ disable graph; 0 โ€“ full names; N>1 โ€“ show only N symbols; N<0 โ€“ drop N symbols from end. (default: 0) [$HELMWAVE_GRAPH_WIDTH]
--plandir value, -p value  path to plandir (default: ".helmwave/") [$HELMWAVE_PLANDIR, $HELMWAVE_PLAN]
--remote-source value      go-getter URL to download build sources [$HELMWAVE_REMOTE_SOURCE]
--skip-unchanged           skip unchanged releases (default: false) [$HELMWAVE_SKIP_UNCHANGED]
--3-way-merge                          show 3-way merge diff (default: false) [$HELMWAVE_DIFF_3_WAY_MERGE]
--diff-mode value                      you can set: [ live | local | none ] (default: "live") [$HELMWAVE_DIFF_MODE]
--find-renames value                   enable rename detection if set to any value greater than 0. (default: 0) [$HELMWAVE_DIFF_FIND_RENAMES]
--show-secret                          show secret in diff (default: true) [$HELMWAVE_DIFF_SHOW_SECRET]
--strip-trailing-cr                    strip trailing carriage return on input (default: false) [$HELMWAVE_DIFF_STRIP_TRAILING_CR]
--suppress value [ --suppress value ]  allows suppression of the values listed in the diff output ("Secret" for example) [$HELMWAVE_DIFF_SUPPRESS]
--wide value                           show line around changes (default: 5) [$HELMWAVE_DIFF_WIDE]
--match-all-tags                                   match all provided tags (default: false) [$HELMWAVE_MATCH_ALL_TAGS]
--tags value, -t value [ --tags value, -t value ]  build releases by tags: -t tag1 -t tag3,tag4 [$HELMWAVE_TAGS]
--file value, -f value  main yml file (default: "helmwave.yml") [$HELMWAVE_YAML, $HELMWAVE_YML]
--templater value       select template engine: [ sprig | gomplate ] (default: "sprig") [$HELMWAVE_TEMPLATER, $HELMWAVE_TEMPLATE_ENGINE]
--tpl value             main tpl file (default: "helmwave.yml.tpl") [$HELMWAVE_TPL]
--yml                   auto helmwave.yml.tpl --> helmwave.yml (default: false) [$HELMWAVE_AUTO_YML, $HELMWAVE_AUTO_YAML]
$ helmwave ls      
[๐Ÿ™ƒ aka INFO]: Should be 3 releases
   NAME    | NAMESPACE | REVISION |            UPDATED             |  STATUS  | CHART | VERSION  
-----------+-----------+----------+--------------------------------+----------+-------+----------
  frontend | test      |        1 | 2021-11-10 04:41:23.330989     | deployed | this  | 0.1.0    
           |           |          | +0300 MSK                      |          |       |          
  database | test      |        1 | 2021-11-10 04:41:23.353473     | deployed | this  | 0.1.0    
           |           |          | +0300 MSK                      |          |       |          
  backend  | test      |        1 | 2021-11-10 04:41:23.270076     | deployed | this  | 0.1.0    
           |           |          | +0300 MSK                      |          |       |

statusยถ

Introduced in v0.11.0

Helmwave try getting status of helm releases from a plan.

Flags
--build                    auto build (default: false) [$HELMWAVE_AUTO_BUILD]
--graph-width value        set ceil width: 1 โ€“ disable graph; 0 โ€“ full names; N>1 โ€“ show only N symbols; N<0 โ€“ drop N symbols from end. (default: 0) [$HELMWAVE_GRAPH_WIDTH]
--plandir value, -p value  path to plandir (default: ".helmwave/") [$HELMWAVE_PLANDIR, $HELMWAVE_PLAN]
--remote-source value      go-getter URL to download build sources [$HELMWAVE_REMOTE_SOURCE]
--skip-unchanged           skip unchanged releases (default: false) [$HELMWAVE_SKIP_UNCHANGED]
--3-way-merge                          show 3-way merge diff (default: false) [$HELMWAVE_DIFF_3_WAY_MERGE]
--diff-mode value                      you can set: [ live | local | none ] (default: "live") [$HELMWAVE_DIFF_MODE]
--find-renames value                   enable rename detection if set to any value greater than 0. (default: 0) [$HELMWAVE_DIFF_FIND_RENAMES]
--show-secret                          show secret in diff (default: true) [$HELMWAVE_DIFF_SHOW_SECRET]
--strip-trailing-cr                    strip trailing carriage return on input (default: false) [$HELMWAVE_DIFF_STRIP_TRAILING_CR]
--suppress value [ --suppress value ]  allows suppression of the values listed in the diff output ("Secret" for example) [$HELMWAVE_DIFF_SUPPRESS]
--wide value                           show line around changes (default: 5) [$HELMWAVE_DIFF_WIDE]
--match-all-tags                                   match all provided tags (default: false) [$HELMWAVE_MATCH_ALL_TAGS]
--tags value, -t value [ --tags value, -t value ]  build releases by tags: -t tag1 -t tag3,tag4 [$HELMWAVE_TAGS]
--file value, -f value  main yml file (default: "helmwave.yml") [$HELMWAVE_YAML, $HELMWAVE_YML]
--templater value       select template engine: [ sprig | gomplate ] (default: "sprig") [$HELMWAVE_TEMPLATER, $HELMWAVE_TEMPLATE_ENGINE]
--tpl value             main tpl file (default: "helmwave.yml.tpl") [$HELMWAVE_TPL]
--yml                   auto helmwave.yml.tpl --> helmwave.yml (default: false) [$HELMWAVE_AUTO_YML, $HELMWAVE_AUTO_YAML]
$ helmwave status      
[๐Ÿ™ƒ aka INFO]: Status of frontend@test
        status: deployed
        revision: 1
        name: frontend
        namespace: test
        chart: frontend-0.1.0
        last deployed: 2021-11-10 04:41:23.330989 +0300 MSK
[๐Ÿ™ƒ aka INFO]: Status of database@test
        status: deployed
        revision: 1
        name: database
        namespace: test
        chart: database-0.1.0
        last deployed: 2021-11-10 04:41:23.353473 +0300 MSK
[๐Ÿ™ƒ aka INFO]: Status of backend@test
        name: backend
        namespace: test
        chart: backend-0.1.0
        last deployed: 2021-11-10 04:41:23.270076 +0300 MSK
        status: deployed
        revision: 1

rollbackยถ

Introduced in v0.12.0

Rollback helm releases from a plan.

Flags
--revision value                                   rollback all releases to this revision (default: -1)
--build                    auto build (default: false) [$HELMWAVE_AUTO_BUILD]
--graph-width value        set ceil width: 1 โ€“ disable graph; 0 โ€“ full names; N>1 โ€“ show only N symbols; N<0 โ€“ drop N symbols from end. (default: 0) [$HELMWAVE_GRAPH_WIDTH]
--plandir value, -p value  path to plandir (default: ".helmwave/") [$HELMWAVE_PLANDIR, $HELMWAVE_PLAN]
--remote-source value      go-getter URL to download build sources [$HELMWAVE_REMOTE_SOURCE]
--skip-unchanged           skip unchanged releases (default: false) [$HELMWAVE_SKIP_UNCHANGED]
--3-way-merge                          show 3-way merge diff (default: false) [$HELMWAVE_DIFF_3_WAY_MERGE]
--diff-mode value                      you can set: [ live | local | none ] (default: "live") [$HELMWAVE_DIFF_MODE]
--find-renames value                   enable rename detection if set to any value greater than 0. (default: 0) [$HELMWAVE_DIFF_FIND_RENAMES]
--show-secret                          show secret in diff (default: true) [$HELMWAVE_DIFF_SHOW_SECRET]
--strip-trailing-cr                    strip trailing carriage return on input (default: false) [$HELMWAVE_DIFF_STRIP_TRAILING_CR]
--suppress value [ --suppress value ]  allows suppression of the values listed in the diff output ("Secret" for example) [$HELMWAVE_DIFF_SUPPRESS]
--wide value                           show line around changes (default: 5) [$HELMWAVE_DIFF_WIDE]
--kubedog                        enable/disable kubedog (default: false) [$HELMWAVE_KUBEDOG_ENABLED, $HELMWAVE_KUBEDOG]
--kubedog-log-width value        set kubedog max log line width (default: 140) [$HELMWAVE_KUBEDOG_LOG_WIDTH]
--kubedog-start-delay value      delay kubedog start, don't make it too late (default: 1s) [$HELMWAVE_KUBEDOG_START_DELAY]
--kubedog-status-interval value  interval of kubedog status messages: set -1s to stop showing status progress (default: 5s) [$HELMWAVE_KUBEDOG_STATUS_INTERVAL]
--kubedog-timeout value          timeout of kubedog multitrackers (default: 5m0s) [$HELMWAVE_KUBEDOG_TIMEOUT]
--kubedog-track-all              track almost all resources, experimental (default: false) [$HELMWAVE_KUBEDOG_TRACK_ALL]
--match-all-tags                                   match all provided tags (default: false) [$HELMWAVE_MATCH_ALL_TAGS]
--tags value, -t value [ --tags value, -t value ]  build releases by tags: -t tag1 -t tag3,tag4 [$HELMWAVE_TAGS]
--file value, -f value  main yml file (default: "helmwave.yml") [$HELMWAVE_YAML, $HELMWAVE_YML]
--templater value       select template engine: [ sprig | gomplate ] (default: "sprig") [$HELMWAVE_TEMPLATER, $HELMWAVE_TEMPLATE_ENGINE]
--tpl value             main tpl file (default: "helmwave.yml.tpl") [$HELMWAVE_TPL]
--yml                   auto helmwave.yml.tpl --> helmwave.yml (default: false) [$HELMWAVE_AUTO_YML, $HELMWAVE_AUTO_YAML]

--revisionยถ

Rollback all releases to specific revision.


Introduced in v0.30.0

--kubedogยถ

Enable kubedog.

--kubedog-status-intervalยถ

Set interval for kubedog status.

--kubedog-start-delayยถ

Set delay before kubedog will start.

--kubedog-timeoutยถ

Set timeout for kubedog.

--kubedog-log-widthยถ

Set width of kubedog logboek.

--kubedog-track-allยถ

Introduced in v0.30.0

Track all resources, not only Deployment, DaemonSet, StatefulSet, Job. Annotations are also respected for these resources but it wasn't tested.

It will probably fail for some non-namespaced custom resources because kubedog can track only namespaced resources. In this case kubedog will fail with a warning

$ helmwave rollback      
[๐Ÿ™ƒ aka INFO]: โœ… frontend@test rollback!
[๐Ÿ™ƒ aka INFO]: โœ… database@test rollback!
[๐Ÿ™ƒ aka INFO]: โœ… backend@test rollback!

graphยถ

Introduced in v0.27.2

Show only graph of helm releases from plan. Graph draws with helmwave/asciigraph

Flags
--build                    auto build (default: false) [$HELMWAVE_AUTO_BUILD]
--graph-width value        set ceil width: 1 โ€“ disable graph; 0 โ€“ full names; N>1 โ€“ show only N symbols; N<0 โ€“ drop N symbols from end. (default: 0) [$HELMWAVE_GRAPH_WIDTH]
--plandir value, -p value  path to plandir (default: ".helmwave/") [$HELMWAVE_PLANDIR, $HELMWAVE_PLAN]
--remote-source value      go-getter URL to download build sources [$HELMWAVE_REMOTE_SOURCE]
--skip-unchanged           skip unchanged releases (default: false) [$HELMWAVE_SKIP_UNCHANGED]
--3-way-merge                          show 3-way merge diff (default: false) [$HELMWAVE_DIFF_3_WAY_MERGE]
--diff-mode value                      you can set: [ live | local | none ] (default: "live") [$HELMWAVE_DIFF_MODE]
--find-renames value                   enable rename detection if set to any value greater than 0. (default: 0) [$HELMWAVE_DIFF_FIND_RENAMES]
--show-secret                          show secret in diff (default: true) [$HELMWAVE_DIFF_SHOW_SECRET]
--strip-trailing-cr                    strip trailing carriage return on input (default: false) [$HELMWAVE_DIFF_STRIP_TRAILING_CR]
--suppress value [ --suppress value ]  allows suppression of the values listed in the diff output ("Secret" for example) [$HELMWAVE_DIFF_SUPPRESS]
--wide value                           show line around changes (default: 5) [$HELMWAVE_DIFF_WIDE]
--match-all-tags                                   match all provided tags (default: false) [$HELMWAVE_MATCH_ALL_TAGS]
--tags value, -t value [ --tags value, -t value ]  build releases by tags: -t tag1 -t tag3,tag4 [$HELMWAVE_TAGS]
--file value, -f value  main yml file (default: "helmwave.yml") [$HELMWAVE_YAML, $HELMWAVE_YML]
--templater value       select template engine: [ sprig | gomplate ] (default: "sprig") [$HELMWAVE_TEMPLATER, $HELMWAVE_TEMPLATE_ENGINE]
--tpl value             main tpl file (default: "helmwave.yml.tpl") [$HELMWAVE_TPL]
--yml                   auto helmwave.yml.tpl --> helmwave.yml (default: false) [$HELMWAVE_AUTO_YML, $HELMWAVE_AUTO_YAML]

--graph-widthยถ

Introduced in v0.27.1

You can change logic of graph rendering by changing this flag.

  • 1: --graph-width=1 - disable graph rendering
  • 2: --graph-width=0 - try to detect max width of ceil by release name
  • N<0: --graph-width=-10 - drop 10 symbols.
  • N>1: --graph-width=10 - show only first 10 symbols.

:material-docs: example

validateยถ

Introduced in v0.12.0

Helmwave will validate a plan. Helmwave always validates plan before any command.

Flags
--plandir value, -p value  path to plandir (default: ".helmwave/") [$HELMWAVE_PLANDIR, $HELMWAVE_PLAN]
$ helmwave validate                                                          
$ echo $?                   
0

diffยถ

Introduced in v0.18.0

Flags
--3-way-merge                          show 3-way merge diff (default: false) [$HELMWAVE_DIFF_3_WAY_MERGE]
--find-renames value                   enable rename detection if set to any value greater than 0. (default: 0) [$HELMWAVE_DIFF_FIND_RENAMES]
--show-secret                          show secret in diff (default: true) [$HELMWAVE_DIFF_SHOW_SECRET]
--strip-trailing-cr                    strip trailing carriage return on input (default: false) [$HELMWAVE_DIFF_STRIP_TRAILING_CR]
--suppress value [ --suppress value ]  allows suppression of the values listed in the diff output ("Secret" for example) [$HELMWAVE_DIFF_SUPPRESS]
--wide value                           show line around changes (default: 5) [$HELMWAVE_DIFF_WIDE]

--wideยถ

Set wide output for diff.

TODO: add example

--show-secretยถ

Introduced in v0.16.0

Enable showing secret values in diff output.

TODO: add example

--3-way-mergeยถ

Introduced in v0.24.4

Enable 3-way merge for diff.

TODO: add example

--suppressยถ

Introduced in v0.35.0

Allows suppression of the values listed in the diff output

helmwave build --suppress Secret

--strip-trailing-crยถ

Introduced in v0.35.0

strip trailing carriage return on input

--find-renamesยถ

Introduced in v0.35.0

Enable rename detection if set to any value greater than 0.

Diff has 2 subcommands plan and live.

This command will diff with manifests in the kubernetes cluster

options
--plandir value, -p value  path to plandir (default: ".helmwave/") [$HELMWAVE_PLANDIR, $HELMWAVE_PLAN]
--3-way-merge  show 3-way merge diff (default: false) [$HELMWAVE_DIFF_3_WAY_MERGE]
helmwave diff live

This command will diff with local plan

options
--plandir1 value  path to plandir1 (default: ".helmwave/") [$HELMWAVE_PLANDIR_1, $HELMWAVE_PLANDIR]
--plandir2 value  path to plandir2 (default: ".helmwave/") [$HELMWAVE_PLANDIR_2]
helmwave diff plan

versionยถ

Get version of current helmwave.

$ helmwave --version  
helmwave version 0.36.0

$ helmwave -v
helmwave version 0.36.0
$ helmwave version
0.36.0

$ helmwave ver
0.36.0

completionยถ

Generates scripts for shell completion.

Add this code to your ~/.bashrc

source <(helmwave completion bash)
echo "source <(helmwave completion bash)" >> ~/.bashrc

bash completion example

Add this code to your ~/.zshrc

source <(helmwave completion zsh)
echo "source <(helmwave completion zsh)" >> ~/.zshrc

zsh completion example

schemaยถ

You can generate json schema for autocomplete and validate helmwave.yml in your IDE.

helmwave schema > helmwave.schema.json

๐Ÿณ๏ธ Global flagsยถ

Global flags available in any command.

Flags
--log-color         on/off color (default: true) [$HELMWAVE_LOG_COLOR]
--log-format value  You can set: [ text | json | pad | emoji ] (default: "emoji") [$HELMWAVE_LOG_FORMAT]
--log-level value   You can set: [ debug | info | warn  | fatal | panic | trace ] (default: "info") [$HELMWAVE_LOG_LEVEL, $HELMWAVE_LOG_LVL]
--log-timestamps    Add timestamps to log messages (default: false) [$HELMWAVE_LOG_TIMESTAMPS]

Helmwave uses sirupsen/logrus as internal logger.

--cache-dirยถ

Introduced in v0.33.0

The directory to use for storing remote sources.

--log-formatยถ

Helmwave supports different log formatters

features text json pad emoji (default)
Color โœ… โŒ โœ… ๐ŸŒˆ
Human readable ๐Ÿง ๐Ÿค– ๐Ÿง๐Ÿง โœ…
Performance ๐Ÿš€ ๐Ÿข โœˆ๏ธ ๐Ÿข
Module TextFormatter (in-built logrus formatter) JSONFormatter (in-built logrus formatter) TextFormatter (in-built logrus formatter) logrus-emoji-formatter special for helmwave
$ helmwave --log-format text build -f docs/examples/quick-start/helmwave.yml
INFO ๐Ÿ”จ Building releases...                       
INFO ๐Ÿ”จ Building graphs...                         
INFO show graph:
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ a@my-namespace  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜



โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ b@my-namespace  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ 
INFO ๐Ÿ”จ Building values...                         
INFO ๐Ÿ”จ no values provided                          release=a@my-namespace
INFO ๐Ÿ”จ no values provided                          release=b@my-namespace
INFO ๐Ÿ”จ Building repositories...                   
INFO ๐Ÿ”จ Building registries...                     
INFO ๐Ÿ—„ registry has been added to the plan         registry=registry-1.docker.io
INFO ๐Ÿ”จ Building charts...                         
INFO Pulled: registry-1.docker.io/bitnamicharts/nats:7.8.3 
INFO Digest: sha256:5f80350b8a85177e4a9c7ed968f77c47bedcc461418172fb66594bc61fa1ffac 
INFO Pulled: registry-1.docker.io/bitnamicharts/nats:7.8.3 
INFO Digest: sha256:5f80350b8a85177e4a9c7ed968f77c47bedcc461418172fb66594bc61fa1ffac 
INFO ๐Ÿ”จ Building manifests...                      
INFO โŽ skipping updating dependencies for remote chart  release=b@my-namespace
INFO โŽ skipping updating dependencies for remote chart  release=a@my-namespace
INFO Pulled: registry-1.docker.io/bitnamicharts/nats:7.8.3 
INFO Digest: sha256:5f80350b8a85177e4a9c7ed968f77c47bedcc461418172fb66594bc61fa1ffac 
INFO Pulled: registry-1.docker.io/bitnamicharts/nats:7.8.3 
INFO Digest: sha256:5f80350b8a85177e4a9c7ed968f77c47bedcc461418172fb66594bc61fa1ffac
...
$ helmwave --log-format json build -f docs/examples/quick-start/helmwave.yml
{
  "level": "info",
  "msg": "๐Ÿ”จ Building releases...",
}
{
  "level": "info",
  "msg": "๐Ÿ”จ Building graphs...",
}
{
  "level": "info",
  "msg": "show graph:\nโ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”\nโ”‚ a@my-namespace  โ”‚\nโ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜\n                   \n                   \n                   \nโ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”\nโ”‚ b@my-namespace  โ”‚\nโ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜\n",
}
{
  "level": "info",
  "msg": "๐Ÿ”จ Building values...",
}
$ helmwave --log-format pad build -f docs/examples/quick-start/helmwave.yml
INFO    ๐Ÿ”จ Building releases...                       
INFO    ๐Ÿ”จ Building graphs...                         
INFO    show graph:
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ a@my-namespace  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜



โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ b@my-namespace  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ 
INFO    ๐Ÿ”จ Building values...                         
INFO    ๐Ÿ”จ no values provided                          release=b@my-namespace
INFO    ๐Ÿ”จ no values provided                          release=a@my-namespace
INFO    ๐Ÿ”จ Building repositories...                   
INFO    ๐Ÿ”จ Building registries...                     
INFO    ๐Ÿ—„ registry has been added to the plan         registry=registry-1.docker.io
INFO    ๐Ÿ”จ Building charts...                         
$ helmwave --log-format emoji build -f docs/examples/quick-start/helmwave.yml
[๐Ÿ™ƒ aka INFO]: ๐Ÿ”จ Building releases...
[๐Ÿ™ƒ aka INFO]: ๐Ÿ”จ Building graphs...
[๐Ÿ™ƒ aka INFO]: show graph:
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ a@my-namespace  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜



โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ b@my-namespace  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

[๐Ÿ™ƒ aka INFO]: ๐Ÿ”จ Building values...
[๐Ÿ™ƒ aka INFO]: ๐Ÿ”จ no values provided
        release: b@my-namespace
[๐Ÿ™ƒ aka INFO]: ๐Ÿ”จ no values provided
        release: a@my-namespace
[๐Ÿ™ƒ aka INFO]: ๐Ÿ”จ Building repositories...
[๐Ÿ™ƒ aka INFO]: ๐Ÿ”จ Building registries...
[๐Ÿ™ƒ aka INFO]: ๐Ÿ—„ registry has been added to the plan
        registry: registry-1.docker.io
[๐Ÿ™ƒ aka INFO]: ๐Ÿ”จ Building charts...
[๐Ÿ™ƒ aka INFO]: Pulled: registry-1.docker.io/bitnamicharts/nats:7.8.3

--log-levelยถ

This option manage how much information you want to get. This modern way instead of verbose (-vvvvv) logging.

_ info (default) debug warn fatal panic trace
general info โœ… โœ… โœ… โœ… โœ… โœ…
incompatible version โŒ โœ… โœ… โœ… โœ… โœ…
helm-debug without --progress โŒ โœ… โœ… โœ… โœ… โœ…
helm-debug with --progress โœ… โœ… โœ… โœ… โœ… โœ…
lifecycle hooks show=true โœ… โœ… โœ… โœ… โœ… โœ…
lifecycle hooks show=false โŒ โœ… โœ… โœ… โœ… โœ…
file content โŒ โœ… โŒ โœ… โœ… โœ…
helm manifests, bug report โŒ โŒ โŒ โŒ โŒ โœ…

--log-colorยถ

Enable/Disable color in output.

output with disabled log colors

output with enabled log colors

--log-timestampsยถ

Add additional block with timestamp information in logs.

helmwave --log-timestamps --log-format text build -f docs/examples/quick-start/helmwave.yml 
INFO[2023-06-19T05:51:32+04:00] ๐Ÿ”จ Building releases...                       
INFO[2023-06-19T05:51:32+04:00] ๐Ÿ”จ Building graphs...                         
INFO[2023-06-19T05:51:32+04:00] show graph:
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ a@my-namespace  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜



โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ b@my-namespace  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ 
INFO[2023-06-19T05:51:32+04:00] ๐Ÿ”จ Building values...                         
INFO[2023-06-19T05:51:32+04:00] ๐Ÿ”จ no values provided                          release=b@my-namespace
INFO[2023-06-19T05:51:32+04:00] ๐Ÿ”จ no values provided                          release=a@my-namespace
INFO[2023-06-19T05:51:32+04:00] ๐Ÿ”จ Building repositories...                   
INFO[2023-06-19T05:51:32+04:00] ๐Ÿ”จ Building registries...                     
INFO[2023-06-19T05:51:32+04:00] ๐Ÿ—„ registry has been added to the plan         registry=registry-1.docker.io
INFO[2023-06-19T05:51:32+04:00] ๐Ÿ”จ Building charts...                         
INFO[2023-06-19T05:51:34+04:00] Pulled: registry-1.docker.io/bitnamicharts/nats:7.8.3 
helmwave --log-timestamps --log-format json build -f docs/examples/quick-start/helmwave.yml 
{
  "level": "info",
  "msg": "๐Ÿ”จ Building releases...",
  "time": "2023-06-19T05:52:24+04:00"
}
{
  "level": "info",
  "msg": "๐Ÿ”จ Building graphs...",
  "time": "2023-06-19T05:52:24+04:00"
}
{
  "level": "info",
  "msg": "show graph:\nโ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”\nโ”‚ a@my-namespace  โ”‚\nโ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜\n                   \n                   \n                   \nโ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”\nโ”‚ b@my-namespace  โ”‚\nโ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜\n",
  "time": "2023-06-19T05:52:24+04:00"
}
{
  "level": "info",
  "msg": "๐Ÿ”จ Building values...",
  "time": "2023-06-19T05:52:24+04:00"
}
{
  "level": "info",
  "msg": "๐Ÿ”จ no values provided",
  "release": "b@my-namespace",
  "time": "2023-06-19T05:52:24+04:00"
}
{
  "level": "info",
  "msg": "๐Ÿ”จ no values provided",
  "release": "a@my-namespace",
  "time": "2023-06-19T05:52:24+04:00"
}
{
  "level": "info",
  "msg": "๐Ÿ”จ Building repositories...",
  "time": "2023-06-19T05:52:24+04:00"
}
{
  "level": "info",
  "msg": "๐Ÿ”จ Building registries...",
  "time": "2023-06-19T05:52:24+04:00"
}
$ helmwave --log-timestamps build -f docs/examples/quick-start/helmwave.yml 
[2023-06-19T03:31:18+04:00] [๐Ÿ™ƒ aka INFO]: ๐Ÿ”จ Building releases...
[2023-06-19T03:31:18+04:00] [๐Ÿ™ƒ aka INFO]: ๐Ÿ”จ Building graphs...
[2023-06-19T03:31:18+04:00] [๐Ÿ™ƒ aka INFO]: show graph:
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ a@my-namespace  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜



โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ b@my-namespace  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

[2023-06-19T03:31:18+04:00] [๐Ÿ™ƒ aka INFO]: ๐Ÿ”จ Building values...
[2023-06-19T03:31:18+04:00] [๐Ÿ™ƒ aka INFO]: ๐Ÿ”จ no values provided
        release: b@my-namespace
[2023-06-19T03:31:18+04:00] [๐Ÿ™ƒ aka INFO]: ๐Ÿ”จ no values provided
        release: a@my-namespace
[2023-06-19T03:31:18+04:00] [๐Ÿ™ƒ aka INFO]: ๐Ÿ”จ Building repositories...