from std/os import paramCount, paramStr, extractFilename
from std/strformat import fmt
import sharedModule

proc enableGlobalMenus(): int =
  return runCommand("/usr/bin/env", ["SKIP_AUTOSNAP=", "/usr/bin/pacman", "-S", "--noconfirm", "vala-panel-appmenu-registrar"])

proc disableGlobalMenus(): int =
  result = runCommand("/usr/bin/env", ["SKIP_AUTOSNAP=", "/usr/bin/pacman", "-R", "--noconfirm", "vala-panel-appmenu-registrar"])
  if result == 0:
    discard runCommand("/usr/bin/killall", ["appmenu-registrar"])

proc showHelp() =
  let executableName = paramStr(0).extractFilename()
  echo fmt"""
Usage: {executableName} <option>
Options:
    enable      install global menus
    disable     remove global menus"""

var exitCode: int
if paramCount() < 1:
  if isGlobalMenuEnabled():
    exitCode = disableGlobalMenus()
  else:
    exitCode = enableGlobalMenus()
else:
  case paramStr(1)
  of "enable":
    if isGlobalMenuEnabled():
      echo "Global menus are already enabled."
      exitCode = 0
    else:
      exitCode = enableGlobalMenus()
  of "disable":
    if not isGlobalMenuEnabled():
      echo "Global menus are already disabled."
      exitCode = 0
    else:
      exitCode = disableGlobalMenus()
  else:
    showHelp()

quit(exitCode)