diff options
| author | Jeff Epler <jepler@gmail.com> | 2025-09-03 08:52:13 -0500 |
|---|---|---|
| committer | Damien George <damien@micropython.org> | 2025-09-18 14:13:12 +1000 |
| commit | be1a1eb7ac44c45d7d5280e2ceabc29bef6e107c (patch) | |
| tree | 2ec3e302ddf30eaef6e4a7f250669baa4deb534e /tools | |
| parent | 6681530fc0f2b426e77642d887b548c0bae1fc9f (diff) | |
tools/ci.sh: Make this script runnable as command.
This makes it easier to run a sequence of ci steps locally. A help message
is also provided.
Signed-off-by: Jeff Epler <jepler@gmail.com>
Diffstat (limited to 'tools')
| -rwxr-xr-x | tools/ci.sh | 57 |
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 |
