diff options
-rw-r--r-- | .github/workflows/makefile-escaping.yml | 8 | ||||
-rw-r--r-- | makefile_escaping/env_vars.mk | 19 | ||||
-rw-r--r-- | makefile_escaping/shell.mk | 7 |
3 files changed, 28 insertions, 6 deletions
diff --git a/.github/workflows/makefile-escaping.yml b/.github/workflows/makefile-escaping.yml index e1a9af9..ca26e60 100644 --- a/.github/workflows/makefile-escaping.yml +++ b/.github/workflows/makefile-escaping.yml @@ -76,16 +76,22 @@ jobs: Includes ' quote Includes ' quote Includes ' quote + Outer variable - Inner variable - Includes ' quote + Outer variable - Inner variable - Includes ' quote expected_maybe_comment: |- Maybe a comment # Maybe a comment # Maybe a comment # Maybe a comment # + Outer variable - Inner variable - Maybe a comment # + Outer variable - Inner variable - Maybe a comment # expected_variable_reference: |- Variable ${reference} Variable ${reference} Variable ${reference} Variable ${reference} + Outer variable - Inner variable - Variable ${reference} + Outer variable - Inner variable - Variable ${reference} env_variables: name: Environment variables runs-on: ubuntu-18.04 @@ -107,3 +113,5 @@ jobs: Quote ' and variable ${reference} Quote ' and variable ${reference} Quote ' and variable ${reference} + Outer variable - Inner variable - Quote ' and variable ${reference} + Outer variable - Inner variable - Quote ' and variable ${reference} diff --git a/makefile_escaping/env_vars.mk b/makefile_escaping/env_vars.mk index 47c1647..7fdc087 100644 --- a/makefile_escaping/env_vars.mk +++ b/makefile_escaping/env_vars.mk @@ -1,15 +1,22 @@ escape = $(subst ','\'',$(1)) -escape_var = $(call escape,$(value $(1))) test_var ?= This is safe. +test_var := $(value test_var) export test_var -echo_test_var := printf '%s\n' '$(call escape_var,test_var)' -bash_test_var := bash -c '$(call escape_var,echo_test_var)' +inner_var := Inner variable +outer_var := Outer variable - $(inner_var) - $(test_var) + +echo_test_var := printf '%s\n' '$(call escape,$(test_var))' +bash_test_var := bash -c '$(call escape,$(echo_test_var))' + +echo_outer_var := printf '%s\n' '$(call escape,$(outer_var))' .PHONY: test test: - @printf '%s\n' '$(call escape_var,test_var)' + @printf '%s\n' '$(call escape,$(test_var))' @printf '%s\n' "$$test_var" - @bash -c '$(call escape_var,echo_test_var)' - @bash -c '$(call escape_var,bash_test_var)' + @bash -c '$(call escape,$(echo_test_var))' + @bash -c '$(call escape,$(bash_test_var))' + @printf '%s\n' '$(call escape,$(outer_var))' + @bash -c '$(call escape,$(echo_outer_var))' diff --git a/makefile_escaping/shell.mk b/makefile_escaping/shell.mk index 36db8d8..23f8f30 100644 --- a/makefile_escaping/shell.mk +++ b/makefile_escaping/shell.mk @@ -3,12 +3,19 @@ escape = $(subst ','\'',$(1)) cwd := $(shell basename -- "$$( pwd )") export cwd +inner_var := Inner variable +outer_var := Outer variable - $(inner_var) - $(cwd) + echo_cwd := printf '%s\n' '$(call escape,$(cwd))' bash_cwd := bash -c '$(call escape,$(echo_cwd))' +echo_outer_var := printf '%s\n' '$(call escape,$(outer_var))' + .PHONY: test test: @printf '%s\n' '$(call escape,$(cwd))' @printf '%s\n' "$$cwd" @bash -c '$(call escape,$(echo_cwd))' @bash -c '$(call escape,$(bash_cwd))' + @printf '%s\n' '$(call escape,$(outer_var))' + @bash -c '$(call escape,$(echo_outer_var))' |