ci_helpers.sh raw

   1  #!/usr/bin/env bash
   2  
   3  export LC_ALL=C
   4  
   5  set -o errexit -o nounset -o pipefail -o xtrace
   6  
   7  write_env_var() {
   8    local key="$1"
   9    local value="$2"
  10  
  11    if [[ -n "${GITHUB_ENV:-}" ]]; then
  12      echo "${key}=${value}" >> "${GITHUB_ENV}"
  13    else
  14      export "${key}=${value}"
  15    fi
  16  }
  17  
  18  write_output_var() {
  19    local key="$1"
  20    local value="$2"
  21  
  22    if [[ -n "${GITHUB_OUTPUT:-}" ]]; then
  23      echo "${key}=${value}" >> "${GITHUB_OUTPUT}"
  24    else
  25      echo "${key}=${value}"
  26    fi
  27  }
  28  
  29  available_nproc() {
  30    if command -v nproc >/dev/null 2>&1; then
  31      nproc
  32    else
  33      sysctl -n hw.logicalcpu
  34    fi
  35  }
  36  
  37  determine_parallelism() {
  38    local multiplier="$1"
  39    local available
  40  
  41    available="$(available_nproc)"
  42    write_env_var BUILD_PARALLEL "${available}"
  43    write_env_var PARALLEL "$((available * multiplier))"
  44  }
  45  
  46  reset_ccache_stats() {
  47    which ccache
  48    ccache --version
  49    ccache --zero-stats
  50  }
  51  
  52  show_ccache_stats() {
  53    ccache --show-stats
  54  }
  55  
  56  install_apt_packages() {
  57    sudo apt-get install --no-install-recommends -y "$@"
  58  }
  59  
  60  install_homebrew_packages() {
  61    HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1 brew install --quiet "$@"
  62  }
  63  
  64  install_pip_packages() {
  65    pip3 install "$@"
  66  }
  67  
  68  determine_host() {
  69    local config_guess="${1:-./depends/config.guess}"
  70    local output_key="${2:-host}"
  71  
  72    write_output_var "${output_key}" "$("${config_guess}")"
  73  }
  74  
  75  ci_helpers_main() {
  76    local command="${1:?missing command}"
  77    shift
  78  
  79    [[ "${command}" =~ ^[a-z_][a-z0-9_]*$ ]] || {
  80      echo "Invalid command: ${command}" >&2
  81      exit 1
  82    }
  83  
  84    if declare -F "${command}" >/dev/null; then
  85      "${command}" "$@"
  86    else
  87      echo "Unknown command: ${command}" >&2
  88      exit 1
  89    fi
  90  }
  91  
  92  if [[ "${BASH_SOURCE[0]}" == "$0" ]]; then
  93    ci_helpers_main "$@"
  94  fi
  95