File: utils.sh

package info (click to toggle)
python-semantic-release 10.3.1-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 3,112 kB
  • sloc: python: 36,523; sh: 340; makefile: 156
file content (67 lines) | stat: -rw-r--r-- 2,144 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#!/bin/bash

# ------------------------------
# UTILS
# ------------------------------
IMAGE_TAG="${TEST_CONTAINER_TAG:?TEST_CONTAINER_TAG not set}"
PROJECT_MOUNT_DIR="${PROJECT_MOUNT_DIR:-"tmp/project"}"
GITHUB_ACTIONS_CWD="/github/workspace"

log() {
  printf '%b\n' "$*"
}

error() {
  log >&2 "\033[31m$*\033[0m"
}

explicit_run_cmd() {
  local cmd="$*"
  log "$> $cmd\n"
  eval "$cmd"
}

run_test() {
    local test_name="${1:?Test name not provided}"
    test_name="${test_name//_/ }"
    test_name="$(tr "[:lower:]" "[:upper:]" <<< "${test_name:0:1}")${test_name:1}"

    # Set Defaults based on action.yml
    [ -z "${WITH_VAR_DIRECTORY:-}" ] && local WITH_VAR_DIRECTORY="."
    [ -z "${WITH_VAR_CONFIG_FILE:-}" ] && local WITH_VAR_CONFIG_FILE=""
    [ -z "${WITH_VAR_NO_OPERATION_MODE:-}" ] && local WITH_VAR_NO_OPERATION_MODE="false"
    [ -z "${WITH_VAR_VERBOSITY:-}" ] && local WITH_VAR_VERBOSITY="1"

    # Extract all WITH_VAR_ variables dynamically from environment
    local ENV_ARGS=()
    args_in_env="$(compgen -A variable | grep "^WITH_VAR_")"
    read -r -a ENV_ARGS <<< "$(printf '%s' "$args_in_env" | tr '\n' ' ')"

    # Set Docker arguments (default: always remove the container after execution)
    local DOCKER_ARGS=("--rm")

    # Add all WITH_VAR_ variables to the Docker command
    local actions_input_var_name=""
    for input in "${ENV_ARGS[@]}"; do
        # Convert WITH_VAR_ to INPUT_ to simulate GitHub Actions input syntax
        actions_input_var_name="INPUT_${input#WITH_VAR_}"

        # Add the environment variable to the Docker command
        DOCKER_ARGS+=("-e ${actions_input_var_name}='${!input}'")
    done

    # Add the project directory to the Docker command
    DOCKER_ARGS+=("-v ${PROJECT_MOUNT_DIR}:${GITHUB_ACTIONS_CWD}")

    # Set the working directory to the project directory
    DOCKER_ARGS+=("-w ${GITHUB_ACTIONS_CWD}")

    # Run the test
    log "\n$test_name"
    log "--------------------------------------------------------------------------------"
    if ! explicit_run_cmd "docker run ${DOCKER_ARGS[*]} $IMAGE_TAG"; then
        return 1
    fi
}

export UTILS_LOADED="true"