#!/usr/bin/env bash
# This file is part of scripts.
# scripts is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, version 3.
# scripts is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with scripts.  If not, see .
# Original author: Marcin Woźniak (y0rune@aol.com)
# Copyright (c) 2020, src_prepare group
# Licensed under the GNU GPL v3 License
function scanning(){
    EUSCAN=$(euscan --nocolor --quiet "$1")
    if [ -n "$EUSCAN" ]; then
        printf "%s\n" "=============== NOW: $(find ./* -mindepth 2 -maxdepth 2  -name ''"$1"'*.ebuild' | tail -1) =================
        $(printf "%s\n" "$EUSCAN" | tail -1)"
    fi
}
function folder(){
    cd "$1" || exit
    PACKAGES=()
    for FILE in */*
    do
        PACKAGE=$(printf "%s\n" "$FILE" | grep -Eo '[A-z0-9_-]+$')
        PACKAGES+=("$PACKAGE")
    done
    for i in "${PACKAGES[@]}"
    do
        scanning "$i" &
    done
    for j in $(jobs -p)
    do
        wait "$j"
    done
    printf "%s\n" ">>> Done scanning $1"
}
function nofolder(){
    if [ -z "${1}" ]; then
        printf "%s\n" \
            "No overlay names given" \
            "Please give at least one overlay name as a commandline argument" \
            "Exiting" >> /dev/stderr
        exit 1
    fi
for overlay in "${@}"
do
    for ebuild in $(EIX_LIMIT=0 eix --only-names --in-overlay "${overlay}")
    do
        euscan --nocolor --quiet "${ebuild}" &
    done
    for j in $(jobs -p)
    do
        wait "$j"
    done
    printf "%s\n" ">>> Done scanning ${overlay}"
done
}
function help(){
    printf "%s\n" \
    "You can use:" \
    "*   -r or --repo " \
    "*   -f or --folder \n" \
    "Example of usage" \
    "./euscan-parallel -r src_prepare-overlay" \
    "./euscan-parallel -f ~/git/src_prepare-overlay"
}
function main(){
    [ "$(whereis eix | wc -w)" -le "1" ] && { printf "%s\n" "The eix is NOT installed" >> /dev/stderr; exit; }
    [ "$(whereis euscan | wc -w)" -le "1" ] && { printf "%s\n" "The euscan is NOT installed" >> /dev/stderr; exit; }
    case $1 in
        -h|--help)
            help
            ;;
        -r|--repo)
            nofolder "$2" | tee -a "euscan-$(date -I).log"
            ;;
        -f|--folder)
            folder "$2" | tee -a "euscan-$(date -I).log"
            ;;
        *)
        printf "%s\n" "No found variable" >> /dev/stderr; printf "\n"; help
    esac
}
main "$@"