+_sudo(){
+ if "${RUN_WITH_SUDO}"; then
+ _msg_debug "Run sudo ${*}"
+ eval sudo "${@}"
+ else
+ _msg_debug "Run ${*}"
+ eval "${@}"
+ fi
+}
+
+_pacman(){
+ _sudo "${PACMAN_COMMAND}" "${PACMAN_OPTIONS[@]}" --config "${PACMAN_CONFIG}" "${@}"
+}
+
+_run_detect_aur_helper(){
+ if [[ ! "${UID}" = 0 ]]; then
+ if [[ -z "${AURHELPER+SET}" ]]; then
+ for AURHELPER in "${HELPERS[@]}"; do
+ if [[ -f "${AURHELPER}" ]]; then
+ PACMAN_COMMAND="${AURHELPER}"
+ break
+ elif hash "$(basename "${AURHELPER}")" 2> /dev/null; then
+ PACMAN_COMMAND="$(basename "${AURHELPER}")"
+ break
+ fi
+ done
+ else
+ if [[ -f "${AURHELPER}" ]]; then
+ PACMAN_COMMAND="${AURHELPER}"
+ elif hash "$(basename "${AURHELPER}")" 2> /dev/null; then
+ PACMAN_COMMAND="$(basename "${AURHELPER}")"
+ else
+ _msg_error "${AURHELPER} is not installed"
+ exit 1
+ fi
+ fi
+ fi
+}
+
+_run_aur_message(){
+ if [[ ! "${PACMAN_COMMAND}" = "${DEFAULT_PACMAN_COMMAND}" ]] && [[ ! "$(basename "${PACMAN_COMMAND}")" = "$(basename "${DEFAULT_PACMAN_COMMAND}")" ]]; then
+ _msg_debug "Use AUR helper ${PACMAN_COMMAND}"
+ else
+ RUN_WITH_SUDO=true
+ fi
+}
+
+_run_autoremove(){
+ if "${AUTOREMOVE}"; then
+ if [[ -n $(${PACMAN_COMMAND} -Qttdq) ]]; then
+ "${PACMAN_COMMAND}" -Qttdq | _sudo "${PACMAN_COMMAND}" -Rsc --config "${PACMAN_CONFIG}" -
+ else
+ echo "No packages to remove"
+ exit 0
+ fi
+ fi
+}
+
+_run_distinguish_package(){
+ local pkg
+ for pkg in "${PACKAGE[@]}"; do
+ if [[ ! -f "${pkg}" ]]; then
+ PACMAN_PACKAGE+=("${pkg}")
+ elif [[ "$(file -b --mime-type "${pkg}" 2> /dev/null)" = "application/vnd.debian.binary-package" ]]; then
+ DEB_PACKAGE_FILE+=("${pkg}")
+ else
+ PACMAN_PACKAGE_FILE+=("${pkg}")
+ fi
+ done
+}
+
+_run_pacman(){
+ if [[ "${INSTALL}" = true ]]; then
+ _pacman -S "${PACMAN_PACKAGE[@]}"
+ else
+ _pacman "${PACMAN_PACKAGE[@]}"
+ fi
+}
+
+_run_debtap(){
+ _msg_warn "It is not recommended to install deb package"
+ _msg_warn "The package conversion is not perfect and can lead to errors in some cases"
+
+ if (( "${#DEB_PACKAGE_FILE[@]}" != 0 )) && ! hash "debtap"; then
+ _msg_error "debtap was not found"
+ exit 1
+ fi
+
+ if [[ -z "$(find "/var/cache/pkgfile" -maxdepth 1 -mindepth 1 -name "*.files" 2> /dev/null)" ]] || [[ -z "$(find "/var/cache/debtap" -maxdepth 1 -mindepth 1 -name "*-packages" 2> /dev/null)" ]] || [[ -z "$(find "/var/cache/debtap" -maxdepth 1 -mindepth 1 -name "*-files" 2> /dev/null)" ]]; then
+ _msg_debug "Updating debtap datebase"
+ sudo debtap -u
+ fi
+
+ (
+ sudo mkdir -p "${DEBTAP_WORK}"
+ local pkg work
+ for pkg in "${DEB_PACKAGE_FILE[@]}"; do
+ work="${DEBTAP_WORK}/$(basename "${pkg}")/"
+ file="${work}/$(basename "${pkg}")"
+ _msg_debug "Work dir: ${work}"
+ _msg_debug "Deb file:${work}"
+ sudo mkdir -p "${work}"
+ sudo cp "${pkg}" "${file}"
+ cd "${work}"
+ sudo debtap --Quiet "${file}"
+ while read -r archpkg; do
+ _msg_debug "Install ${archpkg} with pacman"
+ _pacman -U "${archpkg}"
+ done < <(find "${work}" -maxdepth 1 -mindepth 1 -type f -name "*.pkg.tar.*")
+ done
+ )
+}
+
+