#!/bin/sh
set -e

cd /usr/src/php/ext

usage() {
    echo "usage: $0 [-jN] ext-name [ext-name ...]"
    echo "   ie: $0 gd mysqli"
    echo "       $0 pdo pdo_mysql"
    echo "       $0 -j5 gd mbstring mysqli pdo pdo_mysql shmop"
    echo
    echo 'if custom ./configure arguments are necessary, see docker-php-ext-configure'
    echo
    echo 'Possible values for ext-name:'
    echo $(find /usr/src/php/ext -mindepth 2 -maxdepth 2 -type f -name 'config.m4' | cut -d/ -f6 | sort)
}

opts="$(getopt -o 'h?j:' --long 'help,jobs:' -- "$@" || { usage >&2 && false; })"
eval set -- "$opts"

j=1
while true; do
    flag="$1"
    shift
    case "$flag" in
        --help|-h|'-?') usage && exit 0 ;;
        --jobs|-j) j="$1" && shift ;;
        --) break ;;
        *)
            {
                echo "error: unknown flag: $flag"
                usage
            } >&2
            exit 1
            ;;
    esac
done

exts=
for ext; do
    if [ -z "$ext" ]; then
        continue
    fi
    if [ ! -d "$ext" ]; then
        echo >&2 "error: $(pwd -P)/$ext does not exist"
        echo >&2
        usage >&2
        exit 1
    fi
    exts="$exts $ext"
done

if [ -z "$exts" ]; then
    usage >&2
    exit 1
fi

for ext in $exts; do
    (
        cd "$ext"
        [ -e Makefile ] || docker-php-ext-configure "$ext"
        make -j"$j"
        make -j"$j" install
        find modules \
            -maxdepth 1 \
            -name '*.so' \
            -exec basename '{}' ';' \
                | xargs -r docker-php-ext-enable
        make -j"$j" clean
    )
done
