1
0
mirror of https://review.coreboot.org/flashrom.git synced 2025-10-13 22:10:23 +02:00
Files
flashrom/util/ubertest/cmd.sh
Anastasia Klimchuk 81e5b58a20 util: Use SPDX in headers
Change-Id: I7b4b3da3b47b90c2113bbe614e47892e9cc29417
Signed-off-by: Anastasia Klimchuk <aklm@flashrom.org>
Reviewed-on: https://review.coreboot.org/c/flashrom/+/89418
Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Antonio Vázquez Blanco <antoniovazquezblanco@gmail.com>
2025-10-12 05:07:45 +00:00

139 lines
2.7 KiB
Bash

#!/bin/sh
#
# This file is part of the flashrom project. It is derived from
# board_status.sh in coreboot.
#
# SPDX-License-Identifier: GPL-2.0-only
# SPDX-FileCopyrightText: 2016 Google Inc.
# SPDX-FileCopyrightText: 2014 Sage Electronic Engineering, LLC.
USE_CUSTOM_HOOKS=0
if [ -n "$CUSTOM_HOOKS_FILENAME" ]; then
USE_CUSTOM_HOOKS=1
. "$CUSTOM_HOOKS_FILENAME"
if [ $? -ne 0 ]; then
echo "Failed to source custom hooks file."
exit $EXIT_FAILURE
fi
if ! custom_hook_sanity_check; then
echo "Failed to run sanity check for custom hooks."
exit $EXIT_FAILURE
fi
fi
# test a command
#
# $1: 0 ($LOCAL) to run command locally,
# 1 ($REMOTE) to run remotely if remote host defined
# $2: command to test
# $3: 0 ($FATAL) Exit with an error if the command fails
# 1 ($NONFATAL) Don't exit on command test failure
test_cmd()
{
local rc
local cmd__="$(echo $2 | cut -d ' ' -f -1)"
local args="$(echo $2 | cut -d ' ' -f 2-)"
if [ -e "$cmd__" ]; then
return
fi
if [ "$1" -eq "$REMOTE" ] && [ -n "$REMOTE_HOST" ]; then
ssh $REMOTE_PORT_OPTION root@${REMOTE_HOST} command -v "$cmd__" $args > /dev/null 2>&1
rc=$?
else
command -v "$cmd__" $args >/dev/null 2>&1
rc=$?
fi
if [ $rc -eq 0 ]; then
return 0
fi
if [ "$3" = "1" ]; then
return 1
fi
echo "$2 not found"
exit $EXIT_FAILURE
}
# Same args as cmd() but with the addition of $4 which determines if the
# command should be totally silenced or not.
_cmd()
{
local silent=$4
local rc=0
if [ -n "$3" ]; then
pipe_location="${3}"
else
pipe_location="/dev/null"
fi
if [ $1 -eq $REMOTE ] && [ -n "$REMOTE_HOST" ]; then
if [ $silent -eq 0 ]; then
ssh $REMOTE_PORT_OPTION "root@${REMOTE_HOST}" "$2" > "$pipe_location" 2>/dev/null
rc=$?
else
ssh $REMOTE_PORT_OPTION "root@${REMOTE_HOST}" "$2" >/dev/null 2>&1
rc=$?
fi
else
if [ $USE_CUSTOM_HOOKS -eq 1 ]; then
preflash_hook $1 "$2" "$3" $4
fi
if [ $silent -eq 0 ]; then
$SUDO_CMD $2 > "$pipe_location" 2>/dev/null
rc=$?
else
$SUDO_CMD $2 >/dev/null 2>&1
rc=$?
fi
if [ $USE_CUSTOM_HOOKS -eq 1 ]; then
postflash_hook $1 "$2" "$3" $4
fi
fi
return $rc
}
# run a command
#
# $1: 0 ($LOCAL) to run command locally,
# 1 ($REMOTE) to run remotely if remote host defined
# $2: command
# $3: filename to direct output of command into
cmd()
{
_cmd $1 "$2" "$3" 0
if [ $? -eq 0 ]; then
return
fi
echo "Failed to run \"$2\", aborting"
rm -f "$3" # don't leave an empty file
return $EXIT_FAILURE
}
# run a command silently
#
# $1: 0 ($LOCAL) to run command locally,
# 1 ($REMOTE) to run remotely if remote host defined
# $2: command
scmd()
{
_cmd $1 "$2" "" 1
if [ $? -eq 0 ]; then
return
fi
echo "Failed to run \"$2\", aborting"
return $EXIT_FAILURE
}