# -*- 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           github 1.0

github.setup        mapbox carto 1.2.0 v
github.tarball_from archive
revision            1

checksums           rmd160  400300a4bb39c9db3500e8919c2822813d1269c3 \
                    sha256  46c454f544828152995f025e39afdfbdc172bf1c3866a95b1b703f068a904ff5 \
                    size    223583

categories          gis
platforms           any
supported_archs     noarch
maintainers         {@frankdean fdsd.co.uk:frank.dean} openmaintainer

license             Apache-2 BSD ISC MIT PSF \
                    public-domain {AFL-2.1 BSD} {BSD MIT} {WTFPL MIT}

description         Fast CSS-like map stylesheets

long_description    CartoCSS (short: Carto) is a language for map \
                    design. It is similar in syntax to CSS, but builds \
                    upon it with specific abilities to filter map data \
                    and by providing things like variables. It targets \
                    the Mapnik renderer and is able to generate Mapnik \
                    XML and a JSON variant of Mapnik XML.

depends_lib-append  path:bin/node:nodejs22

depends_build-append \
                    path:bin/npm:npm10

patchfiles          bin-carto.diff \
                    lib-carto-mml-js.diff \
                    lib-carto-parser-js.diff \
                    lib-carto-tree-rule-js.diff \
                    package-json.diff \
                    package-lock-json.diff \
                    test-rendering-fontset-duplication-mml.diff \
                    test-rendering-fontset-duplication-result.diff \
                    test-rendering-zoomlevels-mml.diff \
                    test-rendering-zoomlevels-result.diff \
                    test-rule-test-js.diff

use_configure       no

test.run yes
test.cmd            "npm"

post-patch {
    file delete -force ${worksrcpath}/.eslintrc.yml
    xinstall -m 0644 -W ${filespath} eslint.config.mjs ${worksrcpath}
    file delete -force ${worksrcpath}/test/eclint.test.js
}

build               {}

destroot {
    xinstall -m 755 -d "${destroot}${prefix}/lib/node_modules"
    file copy "${worksrcpath}" "${destroot}${prefix}/lib/node_modules/${name}"
    system -W "${destroot}${prefix}/lib/node_modules/${name}" "npm install --production"
    ln -s ${prefix}/lib/node_modules/${name}/bin/${name} ${destroot}${prefix}/bin/${name}
}
