aboutsummaryrefslogtreecommitdiff
blob: 9861a4cfc135d45e5c20419a728a319a5eb0b3af (plain)
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
#!/bin/bash
readonly SCRIPT="$(readlink -f "${BASH_SOURCE[0]?}")"
readonly SCRIPT_FILENAME="${BASH_SOURCE[0]##*/}"
readonly SCRIPT_DIR="${SCRIPT%/*}"
readonly PRJROOT="${SCRIPT_DIR%/*}"

extra_args=()

SCRIPT_NAME="${SCRIPT_FILENAME%.py}"
case "${SCRIPT_NAME}" in
   *[-_.]others)
      export ROVERLAY_TARGET_TYPE="foreign"
      SCRIPT_NAME="${SCRIPT_NAME%[-_.]*}"
   ;;
   *)
      : ${ROVERLAY_TARGET_TYPE:=gentoo}
      SCRIPT_NAME="${SCRIPT_NAME}"
   ;;
esac

case "${SCRIPT_NAME}" in
   'roverlay') SCRIPT_NAME="main" ;;
esac
readonly SCRIPT_NAME

if [[ "${ROVERLAY_TARGET_TYPE}" == "foreign" ]]; then
   case "${SCRIPT_NAME#roverlay[_-]}" in
      'setup')
         extra_args+=( '--target-type' 'foreign' )
      ;;
      'main'|'query'[-_]'config'|'status')
         extra_args+=( '-c' "${PRJROOT}/R-overlay.conf.others" )
      ;;
   esac
fi

readonly PYSCRIPT="${SCRIPT_DIR}/py/${SCRIPT_NAME}.py"
[ ${#extra_args[@]} -eq 0 ] || set -- "${extra_args[@]}" "$@"

export ROVERLAY_PRJROOT="${PRJROOT}"
export PYTHONPATH="${PRJROOT}${PYTHONPATH:+:}${PYTHONPATH}"


cd "${PRJROOT}" || exit

if [[ -z "${PYTHON-}" ]] && [[ -x "${PYSCRIPT}" ]]; then
   exec ${PYSCRIPT} "$@"
elif [[ -f "${PYSCRIPT}" ]]; then
   exec ${PYTHON:-python} ${PYSCRIPT} "$@"
else
   echo "script not found: ${PYSCRIPT}" 1>&2
   exit 9
fi