#!/bin/bash
# This script contains helper functions for finding components
# in the Origin repository or on the host machine running scripts.
# os::util::find::system_binary determines the absolute path to a
# system binary, if it exists.
#
# Globals:
# None
# Arguments:
# - 1: binary name
# Returns:
# - location of the binary
function os::util::find::system_binary() {
local binary_name="$1"
command -v "${binary_name}"
}
readonly -f os::util::find::system_binary
# os::util::find::built_binary determines the absolute path to a
# built binary for the current platform, if it exists.
#
# Globals:
# - OS_OUTPUT_BINPATH
# Arguments:
# - 1: binary name
# Returns:
# - location of the binary
function os::util::find::built_binary() {
local binary_name="$1"
local binary_path; binary_path="${OS_OUTPUT_BINPATH}/$( os::build::host_platform )/${binary_name}"
# we need to check that the path leads to a file
# as directories also have the executable bit set
if [[ -f "${binary_path}" && -x "${binary_path}" ]]; then
echo "${binary_path}"
return 0
else
return 1
fi
}
readonly -f os::util::find::built_binary
# os::util::find::gopath_binary determines the absolute path to a
# binary installed through the go toolchain, if it exists.
#
# Globals:
# - GOPATH
# Arguments:
# - 1: binary name
# Returns:
# - location of the binary
function os::util::find::gopath_binary() {
local binary_name="$1"
local old_ifs="${IFS}"
IFS=":"
for part in ${GOPATH}; do
local binary_path="${part}/bin/${binary_name}"
# we need to check that the path leads to a file
# as directories also have the executable bit set
if [[ -f "${binary_path}" && -x "${binary_path}" ]]; then
echo "${binary_path}"
IFS="${old_ifs}"
return 0
fi
done
IFS="${old_ifs}"
return 1
}
readonly -f os::util::find::gopath_binary