From 8a8b2cf86197d4550c3bf2bee5f57ac1036c5ceb Mon Sep 17 00:00:00 2001 From: Erik Arvstedt Date: Sat, 18 Apr 2020 23:36:53 +0200 Subject: support default target attrs for attrSets --- lib/default.nix | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) (limited to 'lib') diff --git a/lib/default.nix b/lib/default.nix index 912a1c9..5829250 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -43,17 +43,22 @@ let { lib.elem target.host [origin.host "localhost"]; mkTarget = s: let - default = defVal: val: if val != null then val else defVal; parse = lib.match "(([^@]*)@)?(([^:/]+))?(:([^/]+))?(/.*)?" s; elemAt' = xs: i: if lib.length xs > i then lib.elemAt xs i else null; - in if lib.isString s then { - user = default (lib.getEnv "LOGNAME") (elemAt' parse 1); - host = default (lib.maybeEnv "HOSTNAME" lib.getHostName) (elemAt' parse 3); - port = default "22" /* "ssh"? */ (elemAt' parse 5); - path = default "/var/src" /* no default? */ (elemAt' parse 6); + filterNull = lib.filterAttrs (n: v: v != null); + in { + user = lib.getEnv "LOGNAME"; + host = lib.maybeEnv "HOSTNAME" lib.getHostName; + port = "22"; + path = "/var/src"; sudo = false; extraOptions = []; - } else s; + } // (if lib.isString s then filterNull { + user = elemAt' parse 1; + host = elemAt' parse 3; + port = elemAt' parse 5; + path = elemAt' parse 6; + } else s); shell = let isSafeChar = lib.testString "[-+./0-9:=A-Z_a-z]"; -- cgit v1.2.3