summaryrefslogtreecommitdiffstats
path: root/Makefile
diff options
context:
space:
mode:
authortv <tv@krebsco.de>2016-02-16 06:20:40 +0100
committertv <tv@krebsco.de>2016-02-16 06:59:00 +0100
commit4fb829af7e5e9cb2837a052f34d789faf9f3cda9 (patch)
tree927f187cda7dc85360eb5e3e036db1ea6babb8c9 /Makefile
parent064d0111a0f56b813dba23ca0b19438f0c2e0530 (diff)
Makefile: parse target
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile24
1 files changed, 24 insertions, 0 deletions
diff --git a/Makefile b/Makefile
index 384c872a..a73a1aaf 100644
--- a/Makefile
+++ b/Makefile
@@ -2,6 +2,30 @@ ifndef system
$(error unbound variable: system)
endif
+# target = [target_user@]target_host[:target_port][/target_path]
+ifdef target
+_target_user != echo $(target) | sed -n 's/@.*//p'
+_target_path != echo $(target) | sed -n 's/^[^/]*//p'
+_target_port != echo $(target) | sed -En 's|^.*:([^/]*)(/.*)?$$|\1|p'
+_target_host != echo $(target) | sed -En 's/^(.*@)?([^:/]*).*/\2/p'
+ifneq ($(_target_host),)
+$(if $(target_host),$(error cannot define both, target_host and host in target))
+target_host ?= $(_target_host)
+endif
+ifneq ($(_target_user),)
+$(if $(target_user),$(error cannot define both, target_user and user in target))
+target_user ?= $(_target_user)
+endif
+ifneq ($(_target_port),)
+$(if $(target_port),$(error cannot define both, target_port and port in target))
+target_port ?= $(_target_port)
+endif
+ifneq ($(_target_path),)
+$(if $(target_path),$(error cannot define both, target_path and path in target))
+target_path ?= $(_target_path)
+endif
+endif
+
export target_host ?= $(system)
export target_user ?= root
export target_port ?= 22