#!/usr/bin/env bash set -euo pipefail helper_dir=${SLOPTRAP_HELPER_DIR:-/run/sloptrap-helper} queue_dir="$helper_dir/queue" mkdir -p "$queue_dir" if [[ ${1-} != "install" ]]; then printf 'usage: slop-apt install \n' >&2 exit 2 fi shift if [[ $# -eq 0 ]]; then printf 'slop-apt: at least one package is required\n' >&2 exit 2 fi for package in "$@"; do if [[ ! $package =~ ^[A-Za-z0-9+.-]+$ ]]; then printf 'slop-apt: invalid package name %s\n' "$package" >&2 exit 2 fi done request_dir=$(mktemp -d "$queue_dir/request.XXXXXX.req") trap 'rm -rf "$request_dir"' EXIT INT TERM HUP printf 'apt-install\n' >"$request_dir/op" printf '%s\n' "$@" >"$request_dir/packages" while [[ ! -f "$request_dir/status" ]]; do sleep 1 done if [[ -s "$request_dir/stdout" ]]; then cat "$request_dir/stdout" fi if [[ -s "$request_dir/stderr" ]]; then cat "$request_dir/stderr" >&2 fi status=$(<"$request_dir/status") exit "$status"