%define add_sysuser(-) %{lua: if arg[1] == '-b' then prefix = '' \ table.remove(arg, 1) \ else \ prefix = 'Provides: ' \ end \ if #arg < 2 then \ macros.error({'not enough arguments'}) \ end \ if arg[1] == 'g' then \ type = 'group' \ elseif arg[1] == 'u!' then \ type = 'user' \ elseif arg[1] == 'r' or arg[1] == 'm' then \ macros.warn({'ignoring unsupported sysuser type: '..arg[1]}) \ return \ else \ macros.error({'invalid sysuser type: '..arg[1]}) \ end \ name = arg[2] \ line = table.concat(arg, ' ') \ -- \0-pad source string to avoid '=' in the output \ llen = line:len() \ ulen = math.ceil(4 * (llen / 3)) \ plen = 4 * math.ceil(llen / 3) \ pad = string.rep('\\0', plen-ulen) \ enc = rpm.b64encode(line..pad, 0); \ \ print(string.format('%s%s(%s) = %s\\n', prefix, type, name, enc)) \ if type == 'user' then \ print(string.format('%s%s(%s)\\n', prefix, 'group', name)) \ end \ } %{nil}