podman
1#!/usr/bin/env bash
2#
3# podman-try - try running a command via PODMAN1; use PODMAN2 as fallback
4#
5# Intended for use with a podmanv2 client. If a command isn't yet
6# implemented, fall back to regular podman:
7#
8# Set PODMAN_V2 to the path to a podman v2 client
9# Set PODMAN_FALLBACK to the path to regular podman
10#
11# THIS IS IMPERFECT. In particular, it will not work if stdin is redirected
12# (e.g. 'podman ... < file' or 'something | podman'); nor for anything
13# that generates continuous output ('podman logs -f'); and probably more
14# situations.
15#
16
17die() {
18echo "$(basename $0): $*" >&2
19exit 1
20}
21
22test -n "$PODMAN_V2" || die "Please set \$PODMAN_V2 (path to podman v2)"
23test -n "$PODMAN_FALLBACK" || die "Please set \$PODMAN_FALLBACK (path to podman)"
24
25
26result=$(${PODMAN_V2} "$@" 2>&1)
27rc=$?
28
29if [ $rc == 125 ]; then
30if [[ "$result" =~ unrecognized\ command|unknown\ flag|unknown\ shorthand ]]; then
31result=$(${PODMAN_FALLBACK} "$@")
32rc=$?
33fi
34fi
35
36echo -n "$result"
37exit $rc
38