aboutsummaryrefslogtreecommitdiffstats
path: root/plugins/bootstrap.mk
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2015-07-03 12:58:52 +0200
committerLoïc Hoguin <[email protected]>2015-07-04 00:44:38 +0200
commit2f49c09aea91884c82d3a33fe0174ff3b093e846 (patch)
treec2c2e6094b5f1cdb42ded05b4869980ad443850e /plugins/bootstrap.mk
parent17aa621b6d27216de4610928ebc1ba19dd9d553c (diff)
downloaderlang.mk-2f49c09aea91884c82d3a33fe0174ff3b093e846.tar.gz
erlang.mk-2f49c09aea91884c82d3a33fe0174ff3b093e846.tar.bz2
erlang.mk-2f49c09aea91884c82d3a33fe0174ff3b093e846.zip
Allow changing template whitespace
By default templates use tabs. Unfortunately there are misguided heretics who prefer spaces. Bummer. Two variables are introduced: * SP=<number> can be set to use <number> spaces per indentation level. * WS=<string> can be set to use <string> for each indentation level. Most users will just want to use SP, for example: make new t=gen_server n=my_server SP=4 Note that people who want tabs don't have to do anything; tabs are still the default. WS is reserved for advanced users. Normal Make rules apply: all whitespaces are trimmed. To specify 4 spaces using WS, you can do the following: make new t=gen_server n=my_server WS='$(empty) $(empty)' Ugly, right? So just use SP. Finally, SP and WS can be put in your Makefile directly. In fact, erlang.mk will automatically add SP to a newly created project if it was used during creation. For example: make -f erlang.mk bootstrap SP=2 So in time we should only need to make a note in the docs at project creation time, as there is very little value after that point.
Diffstat (limited to 'plugins/bootstrap.mk')
-rw-r--r--plugins/bootstrap.mk26
1 files changed, 23 insertions, 3 deletions
diff --git a/plugins/bootstrap.mk b/plugins/bootstrap.mk
index 6637520..3cb9830 100644
--- a/plugins/bootstrap.mk
+++ b/plugins/bootstrap.mk
@@ -46,10 +46,21 @@ define bs_appsrc_lib
]}.
endef
+ifdef SP
+define bs_Makefile
+PROJECT = $(PROJECT)
+
+# Whitespace to be used when creating files from templates.
+SP = $(SP)
+
+include erlang.mk
+endef
+else
define bs_Makefile
PROJECT = $(PROJECT)
include erlang.mk
endef
+endif
define bs_app
-module($(PROJECT)_app).
@@ -323,11 +334,20 @@ endef
# Plugin-specific targets.
define render_template
- @echo "$${$(1)}" > $(2)
+ @echo "$${_$(1)}" > $(2)
endef
-$(foreach template,$(filter bs_%,$(.VARIABLES)),$(eval export $(template)))
-$(foreach template,$(filter tpl_%,$(.VARIABLES)),$(eval export $(template)))
+ifndef WS
+ifdef SP
+WS = $(subst a,,a $(wordlist 1,$(SP),a a a a a a a a a a a a a a a a a a a a))
+else
+WS = $(tab)
+endif
+endif
+
+$(foreach template,$(filter bs_% tpl_%,$(.VARIABLES)), \
+ $(eval _$(template) = $$(subst $$(tab),$$(WS),$$($(template)))) \
+ $(eval export _$(template)))
bootstrap:
ifneq ($(wildcard src/),)