version: '3' vars: SHOULD_RUN: "yes" ENV: "prod" FEATURE_ENABLED: "true" FEATURE_DISABLED: "false" tasks: # Basic command-level if (condition met) cmd-if-true: cmds: - cmd: echo "executed" if: "true" # Basic command-level if (condition not met) cmd-if-false: cmds: - cmd: echo "should not appear" if: "false" - echo "this runs" # Task-level if (condition met) task-if-true: if: "true" cmds: - echo "task executed" # Task-level if (condition not met) task-if-false: if: "false" cmds: - echo "should not appear" # With template variables if-with-template: cmds: - cmd: echo "Running because SHOULD_RUN={{.SHOULD_RUN}}" if: '[ "{{.SHOULD_RUN}}" = "yes" ]' # If inside for loop if-in-for-loop: cmds: - for: ["a", "b", "c"] cmd: echo "processing {{.ITEM}}" if: '[ "{{.ITEM}}" != "b" ]' # If on task call if-on-task-call: cmds: - task: subtask if: "true" subtask: internal: true cmds: - echo "subtask ran" # If combined with platforms (both must pass) if-with-platforms: cmds: - cmd: echo "condition and platform met" platforms: [linux, darwin, windows] if: "true" # Skip task call skip-task-call: cmds: - task: subtask if: "false" - echo "after skipped task call" # Task call in cmds with if condition met task-call-if-true: cmds: - task: subtask if: "true" - echo "after task call" # Task call in cmds with if condition not met task-call-if-false: cmds: - task: subtask if: "false" - echo "continues after skipped task" # Template eq - condition met template-eq-true: cmds: - cmd: echo "env is prod" if: '{{ eq .ENV "prod" }}' # Template eq - condition not met template-eq-false: cmds: - cmd: echo "should not appear" if: '{{ eq .ENV "dev" }}' - echo "this runs" # Template ne (not equal) template-ne: cmds: - cmd: echo "env is not dev" if: '{{ ne .ENV "dev" }}' # Template with boolean-like variable template-bool-true: cmds: - cmd: echo "feature enabled" if: '{{ eq .FEATURE_ENABLED "true" }}' # Template with boolean-like variable (false) template-bool-false: cmds: - cmd: echo "should not appear" if: '{{ eq .FEATURE_DISABLED "true" }}' - echo "feature was disabled" # Direct true/false from template template-direct-true: cmds: - cmd: echo "direct true works" if: '{{ .FEATURE_ENABLED }}' # Direct true/false from template (false case) template-direct-false: cmds: - cmd: echo "should not appear" if: '{{ .FEATURE_DISABLED }}' - echo "direct false skipped correctly" # Template with CLI variable override template-cli-var: cmds: - cmd: echo "MY_VAR is yes" if: '{{ eq .MY_VAR "yes" }}' # Combined template conditions with and template-and: cmds: - cmd: echo "both conditions met" if: '{{ and (eq .ENV "prod") (eq .FEATURE_ENABLED "true") }}' # Combined template conditions with or template-or: cmds: - cmd: echo "at least one condition met" if: '{{ or (eq .ENV "dev") (eq .ENV "prod") }}' # Task-level if with template task-level-template: if: '{{ eq .ENV "prod" }}' cmds: - echo "task runs in prod" # Task-level if with template (not met) task-level-template-false: if: '{{ eq .ENV "dev" }}' cmds: - echo "should not appear" # Task-level if with dynamic variable (condition met) task-if-dynamic-true: vars: ENABLE_FEATURE: sh: 'echo "true"' if: '{{ eq .ENABLE_FEATURE "true" }}' cmds: - echo "dynamic feature enabled" # Task-level if with dynamic variable (condition not met) task-if-dynamic-false: vars: ENABLE_FEATURE: sh: 'echo "false"' if: '{{ eq .ENABLE_FEATURE "true" }}' cmds: - echo "should not appear"