123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- #!/bin/sh
- #
- # This file is part of the flashrom project. It is derived from
- # board_status.sh in coreboot.
- #
- # Copyright (C) 2016 Google Inc.
- # Copyright (C) 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
- 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
- }
|