asyncSudoUser = (user, args, allowFail, dryRun, envVars = {}) => {
  if (os.userInfo().username === user) {
    console.log(">", args.join(" "));
    if (!dryRun)
      execSync(args.join(" "), {
        stdio: "inherit",
        env: { ...process.env, ...envVars },
      });
  } else return asyncSudo(["sudo", "-iu", user, ...args], allowFail, dryRun);
}
Execute OS commands. For current user uses direct exec instead of sudo
@param user - user
@param args - args
@param allowFail - if true than allow OS process execution fail
@param dryRun - if true than it does not execute sudo but displays commands (to test purposes)
@returns {Promise<*>}