# -*- 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                npm8
version             8.19.4
revision            0
categories          devel
platforms           any
supported_archs     noarch
license             MIT
maintainers         {ciserlohn @ci42} openmaintainer
description         node package manager
long_description    npm is a package manager for node. \
                    You can use it to install and publish your node programs. \
                    It manages dependencies and does other cool stuff.

conflicts           npm3 npm4 npm5 npm6 npm7 npm9 npm10 npm11

homepage            https://www.npmjs.com/

master_sites        https://registry.npmjs.org/npm/-/

distname            npm-${version}

extract.suffix      .tgz

# Please keep the sha1 - users can use it to validate sha values
# published on npmjs.org for the package
checksums           rmd160  9ed91059cca64bc3a42cb650eb1691f8f13a5912 \
                    sha1    65ad6a2dfdd157a4ef4467fb86e8dcd35a43493f \
                    sha256  2667a1b8300f315d223e43c307fbe946eb8b97792af399424ef67ea9cb0a72f6 \
                    size    2438811

worksrcdir          "package"

depends_lib         path:bin/node:nodejs16

platform darwin {
    if {${os.major} < 13} {
        depends_lib-replace path:bin/node:nodejs16 path:bin/node:nodejs14
    }
}

use_configure       no

patchfiles          patch-lib-commands-update.js.diff \
                    patch-package.json.diff

post-patch {
    foreach f [concat ${worksrcpath}/bin/npm-cli.js \
                   ${worksrcpath}/bin/npx-cli.js \
                   ${worksrcpath}/node_modules/@npmcli/arborist/bin/index.js \
                   ${worksrcpath}/node_modules/color-support/bin.js \
                   ${worksrcpath}/node_modules/cssesc/bin/cssesc \
                   ${worksrcpath}/node_modules/mkdirp/bin/cmd.js \
                   ${worksrcpath}/node_modules/node-gyp/bin/node-gyp.js \
                   ${worksrcpath}/node_modules/node-gyp/node_modules/nopt/bin/nopt.js \
                   ${worksrcpath}/node_modules/nopt/bin/nopt.js \
                   ${worksrcpath}/node_modules/npm-packlist/bin/index.js \
                   ${worksrcpath}/node_modules/opener/bin/opener-bin.js \
                   ${worksrcpath}/node_modules/pacote/lib/bin.js \
                   ${worksrcpath}/node_modules/qrcode-terminal/bin/qrcode-terminal.js \
                   ${worksrcpath}/node_modules/rimraf/bin.js \
                   ${worksrcpath}/node_modules/semver/bin/semver.js \
                   ${worksrcpath}/node_modules/which/bin/node-which] {
        reinplace "s|/usr/bin/env node|${prefix}/bin/node|" ${f}
    }
}

build {
    system -W ${worksrcpath} "NPM_CONFIG_UNSAFE_PERM=false ${prefix}/bin/node bin/npm-cli.js pack"
}

destroot.cmd        ${prefix}/bin/node ./bin/npm-cli.js
destroot.args       --location global ${distname}.tgz
destroot.destdir    --prefix=${destroot}${prefix}

post-destroot {
    set completions_path ${destroot}${prefix}/share/bash-completion/completions/
    xinstall -d ${completions_path}
    xinstall -m 644 ${worksrcpath}/lib/utils/completion.sh ${completions_path}/npm
}

notes "
It is not recommended to install packages globally. But if you do so\
please be aware that they won't get cleaned up when you deactivate\
or uninstall ${name}. Globally installed packages will remain in\
${prefix}/lib/node_modules/ until you manually delete them.
"

livecheck.type      regex
livecheck.url       https://registry.npmjs.org/npm
livecheck.regex     {"next-8":"(.*?)"}
