diff --git a/pkgm.ts b/pkgm.ts index f3f08c3..e7af31f 100755 --- a/pkgm.ts +++ b/pkgm.ts @@ -297,21 +297,27 @@ async function query_pkgx( set("PKGX_DIST_URL"); set("XDG_DATA_HOME"); - const needs_sudo_backwards = install_prefix().string == "/usr/local"; - let cmd = needs_sudo_backwards ? "/usr/bin/sudo" : pkgx; + const isRoot = Deno.uid() == 0; + const sudoUser = Deno.env.get("SUDO_USER"); + const prefix = install_prefix().string; + + if (prefix == "/usr/local" && isRoot && !sudoUser) { + console.error( + "%cwarning", + "color:yellow", + "installing as root; installing via `sudo` is preferred", + ); + } + + const needs_sudo_backwards = + prefix == "/usr/local" && !isRoot && !sudoUser; + + let cmd = pkgx; + if (needs_sudo_backwards) { - if (!Deno.env.get("SUDO_USER")) { - if (Deno.uid() == 0) { - console.error( - "%cwarning", - "color:yellow", - "installing as root; installing via `sudo` is preferred", - ); - } - cmd = pkgx; - } else { - args.unshift("-u", Deno.env.get("SUDO_USER")!, pkgx); - } + cmd = "/usr/bin/sudo"; + const user = Deno.env.get("USER")!; + args.unshift("-u", user, pkgx); } const proc = new Deno.Command(cmd, {