From f3fdf2321708b04ec1a84f99e80852151a78242d Mon Sep 17 00:00:00 2001
From: Egor Tensin <Egor.Tensin@gmail.com>
Date: Sun, 24 May 2020 00:08:54 +0000
Subject: makefile_escaping: fix inclusions in other variables

---
 .github/workflows/makefile-escaping.yml |  8 ++++++++
 makefile_escaping/env_vars.mk           | 19 +++++++++++++------
 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))'
-- 
cgit v1.2.3