# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4

PortSystem          1.0

name                ormolu
version             0.8.2.0
revision            0
categories          devel haskell
maintainers         nomaintainer
license             BSD
platforms           macosx
homepage            https://github.com/tweag/ormolu/

description         A formatter for Haskell source code
long_description    {*}${description}

checksums           rmd160  fd2420b051246cc247de878380e7b4d9eb60ccae \
                    sha256  9ce1e8a1cefe21c7588b3d7ab3d26f353cf6a63cf68576eee203df144aec04f2 \
                    size    419787

# relative paths to ${prefix}
set ormolu_datadir  share/${name}

set build_store_root        {}
set build_store_dirname     {}
set build_ormolu_datadir    {}

# Fix for cabal data-files hardcoded path in binary
# See:
# https://github.com/commercialhaskell/stack/issues/848
# https://github.com/commercialhaskell/stack/issues/4857
# https://github.com/haskell/cabal/issues/462
# https://github.com/haskell/cabal/issues/3586
post-extract {
    xinstall -m 0644 -W ${worksrcpath} \
                    ${filespath}/Paths_NAME.hs ./src/Paths_${name}.hs

    reinplace "s|@PREFIX@|${prefix}|g" \
                    ${worksrcpath}/src/Paths_${name}.hs
    reinplace "s|@NAME@|${name}|g" \
                    ${worksrcpath}/src/Paths_${name}.hs
    reinplace -E "s|(Version\[\[:space:\]\]+)\\\[\[\[:digit:\]\]+(,\[\[:digit:\]\]+){1,4}\\\]|\\1\[[join [split ${version} .] ,]\]|" \
                    ${worksrcpath}/src/Paths_${name}.hs
}

variant stack \
    description {Use stack to build.} {}

if { [variant_isset "stack"] } {
    PortGroup       haskell_stack 1.0

    post-extract {
        if {[geteuid] == 0} {
            xinstall -o ${macportsuser} -d \
                    "[option haskell_stack.stack_root]"
        } else {
            xinstall -d \
                    "[option haskell_stack.stack_root]"
        }
    }

    set build_store_root    ${worksrcpath}/.stack-work
    set build_store_dirname "${name}-${version}"
} else {
    PortGroup       haskell_cabal 1.0

    set build_store_root    ${haskell_cabal.cabal_root}/store
    set build_store_dirname share

    build.target    exe:${name}
    build.post_args-append \
                    --bindir=${prefix}/bin \
                    --datadir=${prefix}/share/${name}
}

post-destroot {
    if {[geteuid] == 0} {
        xinstall -o ${macportsuser} -d \
                    ${destroot}${prefix}/${ormolu_datadir}/doc
    } else {
        xinstall -d ${destroot}${prefix}/${ormolu_datadir}/doc
    }

    # find cabal data-files
    fs-traverse f ${build_store_root} {
        if { [file isdirectory ${f}]
            && [file tail ${f}] eq ${build_store_dirname}} {
            set build_ormolu_datadir ${f}
            break
        }
    }

    xinstall -m 0644 ${build_ormolu_datadir}/doc/LICENSE \
                    ${destroot}${prefix}/${ormolu_datadir}/doc
    copy            ${build_ormolu_datadir}/doc/html \
                    ${destroot}${prefix}/${ormolu_datadir}/doc
}
