#!/usr/bin/env bash
###############################################################################
# BRLTTY - A background process providing access to the console screen (when in
#          text mode) for a blind person using a refreshable braille display.
#
# Copyright (C) 1995-2023 by The BRLTTY Developers.
#
# BRLTTY comes with ABSOLUTELY NO WARRANTY.
#
# This is free software, placed under the terms of the
# GNU Lesser General Public License, as published by the Free Software
# Foundation; either version 2.1 of the License, or (at your option) any
# later version. Please see the file LICENSE-LGPL for details.
#
# Web Page: http://brltty.app/
#
# This software is maintained by Dave Mielke <dave@mielke.cc>.
###############################################################################

. "$(dirname "${0}")/../brltty-prologue.sh"

processExtraProgramParameters() {
   declare -g additionalPackages=( "${@}" )
}

addProgramParameter "package" packageName "the package to remove"
optionalProgramParameters "packages" "additional packages to remove"
parseProgramArguments "${@}"

set -e
. "${programDirectory}/packages.sh"

removePackages "${packageName}" "${additionalPackages[@]}"
exit 0
