aboutsummaryrefslogtreecommitdiff
path: root/hack/podmanv2-retry
blob: 1f3be0731b71766e73ae138ff2e3dfb989d8eb9a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#!/usr/bin/env bash
#
# podman-try - try running a command via PODMAN1; use PODMAN2 as fallback
#
# Intended for use with a podmanv2 client. If a command isn't yet
# implemented, fall back to regular podman:
#
#    Set PODMAN_V2 to the path to a podman v2 client
#    Set PODMAN_FALLBACK to the path to regular podman
#
# THIS IS IMPERFECT. In particular, it will not work if stdin is redirected
# (e.g. 'podman ... < file' or 'something | podman'); nor for anything
# that generates continuous output ('podman logs -f'); and probably more
# situations.
#

die() {
    echo "$(basename $0): $*" >&2
    exit 1
}

test -n "$PODMAN_V2"       || die "Please set \$PODMAN_V2 (path to podman v2)"
test -n "$PODMAN_FALLBACK" || die "Please set \$PODMAN_FALLBACK (path to podman)"


result=$(${PODMAN_V2} "$@" 2>&1)
rc=$?

if [ $rc == 125 ]; then
    if [[ "$result" =~ unrecognized\ command|unknown\ flag|unknown\ shorthand ]]; then
        result=$(${PODMAN_FALLBACK} "$@")
        rc=$?
    fi
fi

echo -n "$result"
exit $rc