#!/usr/bin/env bash

source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/../etc/bash/common.lib.sh"

clean_package() {
    [[ "$(echo "$2" | grep -c "no-bin")" = "1" ]] && local remove_bin=false
    [[ "$(echo "$2" | grep -c "no-lock")" = "1" ]] && local remove_lock=false

    print_header "Cleaning" "$(package_path_to_package_name "$1")"
    run_command "rm -r $1/vendor 2>/dev/null"

    if ${remove_bin}; then
        run_command "rm -r $1/bin 2>/dev/null"
    fi

    if ${remove_lock}; then
        run_command "rm $1/composer.lock 2>/dev/null"
    fi
}

display_help_message() {
    print_error "Usage: $0 [--no-bin] [--no-lock] <package paths or names>"
}

main() {
    local packages=() options=() package_path

    while [[ $# -gt 0 ]]; do
        case "$1" in
            --no-bin)
                options+=("no-bin")
            ;;
            --no-lock)
                options+=("no-lock")
            ;;
            --help)
                display_help_message
                exit 0
            ;;
            -*)
                print_error "Unknown option \"$1\""
                exit 1
            ;;
            *)
               packages+=("$1")
            ;;
        esac

        shift
    done

    if [[ "${packages[@]}" = "" ]]; then
        display_help_message
        exit 1
    fi

    for package in "${packages[@]}"; do
        package_path="$(cast_package_argument_to_package_path "${package}")"
        exit_on_error "Package \"${package}\" is not found"

        clean_package "${package_path}" "${options[*]}"
    done
}

main "$@"
