In this example, a bash script is executed, attempting three methods of returning the currently running version of Bashbot.
This command is triggered by sending bashbot version
in a slack channel where Bashbot is also a member. The script is expected to exist before execution at the relative path ./examples/version/get-version.sh
and requires no additional input to execute. It takes no arguments/parameters and returns stdout
as a slack message, in the channel it was executed from.
name: Get Bashbot Version
description: Displays the currently running version of Bashbot
envvars: []
dependencies: []
help: "!bashbot version"
trigger: version
location: /bashbot/vendor/bashbot/examples/version
command:
- "./get-version.sh"
parameters: []
log: true
ephemeral: false
response: code
permissions:
- all
The get-version.sh first checks to see if Bashbot is already available via $PATH
and prints that version, if possible. Next, if the binary is being run from the ./bin
directory, this script will grab the correct os/architecture from uname
and attempt to print that version. If both of those methods fail, a Makefile target (go-version
) is executed, provided the Makefile and go source exists. If all of those methods are unsuccessful, an error message is returned to slack that the version could not be determined.
Note: exit 0
is used in success/failure states to ensure error messages are returned to slack. If exit 1
is used for error states, a generic error message is returned to slack and stderr
is suppressed.
# First check if bashbot is installed and pull that version
if command -v bashbot > /dev/null; then
command -v bashbot
bashbot version
exit 0
fi
# Next check if ./bin/bashbot-${os}-${arch} exists and pull that version
arch=amd64
[ "$(uname -m)" == "aarch64" ] && arch=arm64
os=$(uname | tr '[:upper:]' '[:lower:]')
if [ -f "./bin/bashbot-${os}-${arch}" ]; then
echo "./bin/bashbot-${os}-${arch} version"
./bin/bashbot-${os}-${arch} version
exit 0
fi
# Finally, check if bashbot go source exists and pull that version
go_filename=cmd/bashbot/bashbot.go
if [[ -f "./${go_filename}" ]] && [[ -f "./Makefile" ]]; then
make go-setup
make go-version
exit 0
fi
echo "Could not determine the current version of bashbot"
exit 0