summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tools')
-rwxr-xr-xtools/ci.sh57
1 files changed, 57 insertions, 0 deletions
diff --git a/tools/ci.sh b/tools/ci.sh
index 901059991..6b974f983 100755
--- a/tools/ci.sh
+++ b/tools/ci.sh
@@ -970,3 +970,60 @@ function ci_alif_ae3_build {
make ${MAKEOPTS} -C ports/alif BOARD=OPENMV_AE3 MCU_CORE=M55_DUAL
make ${MAKEOPTS} -C ports/alif BOARD=ALIF_ENSEMBLE MCU_CORE=M55_DUAL
}
+
+function _ci_help {
+ # Note: these lines must be indented with tab characters (required by bash <<-EOF)
+ cat <<-EOF
+ ci.sh: Script fragments used during CI
+
+ When invoked as a script, runs a sequence of ci steps,
+ stopping after the first error.
+
+ Usage:
+ ${BASH_SOURCE} step1 step2...
+
+ Steps:
+ EOF
+ if type -path column > /dev/null 2>&1; then
+ grep '^function ci_' $0 | awk '{print $2}' | sed 's/^ci_//' | column
+ else
+ grep '^function ci_' $0 | awk '{print $2}' | sed 's/^ci_//'
+ fi
+ exit
+}
+
+function _ci_main {
+ case "$1" in
+ (-h|-?|--help)
+ _ci_help
+ ;;
+ (*)
+ cd $(dirname "$0")/..
+ while [ $# -ne 0 ]; do
+ ci_$1
+ shift
+ done
+ ;;
+ esac
+}
+
+# https://stackoverflow.com/questions/2683279/how-to-detect-if-a-script-is-being-sourced
+sourced=0
+if [ -n "$ZSH_VERSION" ]; then
+ case $ZSH_EVAL_CONTEXT in *:file) sourced=1;; esac
+elif [ -n "$KSH_VERSION" ]; then
+ [ "$(cd -- "$(dirname -- "$0")" && pwd -P)/$(basename -- "$0")" != "$(cd -- "$(dirname -- "${.sh.file}")" && pwd -P)/$(basename -- "${.sh.file}")" ] && sourced=1
+elif [ -n "$BASH_VERSION" ]; then
+ (return 0 2>/dev/null) && sourced=1
+else # All other shells: examine $0 for known shell binary filenames.
+ # Detects `sh` and `dash`; add additional shell filenames as needed.
+ case ${0##*/} in sh|-sh|dash|-dash) sourced=1;; esac
+fi
+
+if [ $sourced -eq 0 ]; then
+ # invoked as a command
+ if [ "$#" -eq 0 ]; then
+ set -- --help
+ fi
+ _ci_main "$@"
+fi