#!/bin/bash
PROJECT=
SERIES=
DISTRIB=$(lsb_release -cs)

die ()
{
    [[ -n "$1" ]] && echo ERROR: $@
    exit 0
}

check_project_series ()
{
    local _match

    [[ ! -d mkdeb-templates ]] && \
        die "Cannot find mkdeb-templates directory"

    while read line
    do
        local _project=$(awk -F= /PROJECT/'{print $2}' $line)
        local _series=$(awk -F= /SERIES/'{print $2}' $line)

        [[ "$_project" != "$PROJECT" ]] && \
            continue

        _match=${_project}

        # no series
        [[ -z "$SERIES" ]] && \
            break

        [[ "$_series" = "$SERIES" ]] && \
            _match=${_match}-${_series} || \
            unset _match

        break
    done < <(find mkdeb-templates -type f -name "volatile-task-core.env")

    [[ -n "$_match" ]] && \
        die "Project $_match already exists"

    echo "Create new project $PROJECT-$SERIES"
    return 0
}

create_new_project()
{
    local _target=mkdeb-templates/$PROJECT
    [[ -d $_target ]] &&
        return 0

    local _defver=$(dpkg-parsechangelog -lmkdeb-templates/default/changelog -SVersion)
    local _version=$(echo $_defver | sed 's/ubuntu.*//')${PROJECT}1

    mkdir -p $_target
    echo "PROJECT=$PROJECT" > $_target/volatile-task-core.env
    dch -c $_target/changelog \
        --create --package volatile-task-core \
        -D ${DISTRIB} \
        -v ${_version} \
        --urgency high \
        "Initial release.
" \
        "Branched from volatile-task-core $_defver"

    # binary and library
    mkdir -p lib/$PROJECT
    mkdir -p bin/$PROJECT

    # tasks
    for dir in $(find -maxdepth 1 -type d -printf '%P\n' | sed '/^$/d' | grep task); do
        echo "* Create task folder: $dir/$SERIES"
        mkdir -p $dir/$PROJECT
    done
}

create_new_series()
{
    local _target=mkdeb-templates/$PROJECT/$SERIES
    [[ -d $_target ]] &&
        die "$_target exists"

    mkdir -p $_target
    echo -e "PROJECT=$PROJECT\nSERIES=$SERIES" > $_target/volatile-task-core.env

    for dir in $(find -maxdepth 2 -type d -printf '%P\n' | grep $PROJECT | sed '/^$/d' | grep task); do
        echo "* Create task folder: $dir/$SERIES"
        mkdir -p $dir/$SERIES
    done
}

while [ "$1" ]; do
    case "$1" in
        *)
            PROJECT=${1%-*}
            [[ $1 =~ .*-.* ]] &&
                SERIES=${1##*-}
            ;;
    esac
    shift
done

if check_project_series; then
    create_new_project
    [[ -n "$SERIES" ]] && \
        create_new_series
fi
