# -*- 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
PortGroup           active_variants 1.1
PortGroup           github 1.0
PortGroup           python 1.0

github.setup        gravitystorm openstreetmap-carto 5.8.0 v
github.tarball_from archive
revision            0

categories          gis
maintainers         {@frankdean fdsd.co.uk:frank.dean} openmaintainer

# license CC0-1.0 (http://creativecommons.org/publicdomain/zero/1.0/)
license             public-domain

description         A general-purpose OpenStreetMap mapnik style, in CartoCSS

long_description    These are the CartoCSS map stylesheets for the Standard \
                    map layer on OpenStreetMap.org.

checksums           rmd160  a2bc4b2445857a7334fc031e8397c8e16984e832 \
                    sha256  fb8ab188d3677a81132948ceed14a7e6352f6cee3d7112db405712881f083c7b \
                    size    3472021

python.default_version 312

depends_lib-append  port:py${python.version}-psycopg2 \
                    port:py${python.version}-requests \
                    port:py${python.version}-yaml

set datadir         ${prefix}/var/lib/${name}
set docdir          ${prefix}/share/doc/${name}
set configdir       ${prefix}/etc/${name}

patchfiles          style-fonts-mss.diff

variant postgresql15 conflicts postgresql16 description {Use with PostgreSQL 15} {
    require_active_variants py${python.version}-psycopg2 postgresql15
    depends_lib-append port:postgresql15
}

variant postgresql16 conflicts postgresql15 description {Use with PostgreSQL 16} {
    require_active_variants py${python.version}-psycopg2 postgresql16
    depends_lib-append port:postgresql16
}

if {![variant_isset postgresql15] && ![variant_isset postgresql16]} {
    default_variants +postgresql16
}

post-patch {
    reinplace "s#/usr/bin/env python3#${python.bin}#g" \
        ${worksrcpath}/scripts/get-external-data.py \
        ${worksrcpath}/scripts/generate_road_colours.py \
        ${worksrcpath}/scripts/generate_shields.py \
        ${worksrcpath}/scripts/indexes.py
}

build {}

pre-destroot {
    reinplace "s#data_dir: data#data_dir: ${datadir}#" ${worksrcpath}/external-data.yml
}

destroot {
    xinstall -d ${destroot}${configdir}
    xinstall -m 0755 -o nobody -g admin -d ${destroot}${datadir}
    file copy ${worksrcpath} ${destroot}${prefix}/share/${name}
    destroot.keepdirs ${destroot}${datadir}
}

post-destroot {
    file delete -force ${destroot}${prefix}/share/${name}/.github
    file delete {*}[glob -directory ${destroot}${prefix}/share/${name} Dockerfile* docker-compose.yml]

    foreach fn [glob -types hidden ${destroot}${prefix}/share/${name}/*] {
        if {[file tail ${fn}] ni {. ..}} {
            file delete ${fn}
        }
    }

    file rename {*}[glob -directory ${destroot}${prefix}/share/${name} *.md LICENSE.txt] \
        ${destroot}${docdir}
    file rename ${destroot}${prefix}/share/${name}/external-data.yml \
        ${destroot}${configdir}/external-data.yml.dist
    ln -s ${prefix}/share/${name}/symbols ${destroot}${configdir}/symbols
    ln -s ${configdir}/external-data.yml ${destroot}${prefix}/share/${name}/external-data.yml
}

post-activate {
    if {![file exists ${configdir}/external-data.yml ]} {
        file copy ${configdir}/external-data.yml.dist ${configdir}/external-data.yml
    }
}