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

github.setup        reds-heig logisim-evolution 3.8.0 v
github.tarball_from archive
revision            0

categories          cad education java
platforms           any
supported_archs     noarch
license             GPL-3
maintainers         {@harens harens} openmaintainer

description         Digital logic designer and simulator
long_description    Logisim is an educational tool for designing and \
                    simulating digital logic circuits.

# This package does not work with MacPorts gradle 8
# See https://github.com/logisim-evolution/logisim-evolution/blob/master/gradle/wrapper/gradle-wrapper.properties
set gradle_version  7.5.1

set main_distfile   ${distfiles}
set gradle_distfile gradle-${gradle_version}-bin.zip

extract.only        ${main_distfile}
master_sites-append https://services.gradle.org/distributions/
distfiles-append    ${gradle_distfile}

checksums           ${main_distfile} \
                    rmd160  fc95ba68f3e519dbc5644d08de90b6cc1ba3d7ca \
                    sha256  7a49558a490a0df886b3ea488f12e4ea887a2ec8c278872dca39b2bebfaed3ee \
                    size    41988587 \
                    ${gradle_distfile} \
                    rmd160  5824b8c0ec452bc3e3f247229dea24c3e0fdef26 \
                    sha256  f6b8596b10cce501591e92f229816aa4046424f3b24d771751b06779d58c8ec4 \
                    size    120635534

java.version        16+
java.fallback       openjdk17

use_configure       no

# From apple commander port, which also modifies gradle-wrapper.properties
proc percent_encode {str} {
    return [subst [regsub -all {[^a-zA-Z0-9/.~_-]} $str {%[format %02x [scan {&} %c]]}]]
}

patchfiles          patch-gradle-wrappers.diff

post-patch {
    reinplace -W ${worksrcpath} "s|@DISTPATH@|[percent_encode ${distpath}]|g;s|@GRADLE_VERSION@|${gradle_version}|g" \
        gradle/wrapper/gradle-wrapper.properties
}

build.env-append    GRADLE_USER_HOME=${worksrcpath}/${name}
build.cmd           ${worksrcpath}/gradlew
build.target        createApp
build.args          --stacktrace --parallel --max-workers=${build.jobs}

destroot {
    move "${worksrcpath}/build/dist/Logisim-evolution.app" ${destroot}${applications_dir}
}
