1
0
Fork 0
mirror of https://cgit.krebsco.de/krops synced 2024-11-23 03:29:48 +01:00

support default target attrs for attrSets

This commit is contained in:
Erik Arvstedt 2020-04-18 23:36:53 +02:00
parent 2cafddd78d
commit 8a8b2cf861

View file

@ -43,17 +43,22 @@ let {
lib.elem target.host [origin.host "localhost"]; lib.elem target.host [origin.host "localhost"];
mkTarget = s: let mkTarget = s: let
default = defVal: val: if val != null then val else defVal;
parse = lib.match "(([^@]*)@)?(([^:/]+))?(:([^/]+))?(/.*)?" s; parse = lib.match "(([^@]*)@)?(([^:/]+))?(:([^/]+))?(/.*)?" s;
elemAt' = xs: i: if lib.length xs > i then lib.elemAt xs i else null; elemAt' = xs: i: if lib.length xs > i then lib.elemAt xs i else null;
in if lib.isString s then { filterNull = lib.filterAttrs (n: v: v != null);
user = default (lib.getEnv "LOGNAME") (elemAt' parse 1); in {
host = default (lib.maybeEnv "HOSTNAME" lib.getHostName) (elemAt' parse 3); user = lib.getEnv "LOGNAME";
port = default "22" /* "ssh"? */ (elemAt' parse 5); host = lib.maybeEnv "HOSTNAME" lib.getHostName;
path = default "/var/src" /* no default? */ (elemAt' parse 6); port = "22";
path = "/var/src";
sudo = false; sudo = false;
extraOptions = []; 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 shell = let
isSafeChar = lib.testString "[-+./0-9:=A-Z_a-z]"; isSafeChar = lib.testString "[-+./0-9:=A-Z_a-z]";