# -*- 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        ismail-yilmaz Bobcat 0.9.9
name                [string tolower ${github.project}]
revision            1
categories          aqua shells
license             GPL-3
maintainers         {@barracuda156 macos-powerpc.org:barracuda}
description         Modern cross-platform terminal emulator built with U++
long_description    Bobcat is a modern, cross-platform terminal emulator built with \
                    Ultimate++. It provides a clean interface with support for multiple \
                    profiles, custom color schemes, split views and extensive keyboard \
                    shortcuts. Features include regex search, link detection, quick text \
                    snippets and session management.

checksums           rmd160  85a92d231013a28154a624684a64a73e60afe394 \
                    sha256  71dfb9ed77ed89440205935f4c04e0eff194a471552173b98b5ccf4d0055ec1f \
                    size    7685351
github.tarball_from archive

depends_build-append \
                    path:bin/git:git \
                    port:makeicns
depends_lib-append  port:ultimatepp \
                    port:zlib

# Compiler requirements: C++17 support (inherited from U++)
compiler.cxx_standard   2017

# No configure phase - uses umk directly
use_configure       no

set build_type      GCC

if {[string match *clang* ${configure.compiler}]} {
    set build_type  CLANG
}

# FIXME: like with ultimatepp itself, the first build run fails, without a specific error.
# The next run completes fine, without any changes or clean-up. Annoying but survivable.

# Build using umk from ultimatepp port
build.cmd           ${prefix}/bin/umk
build.args          ${worksrcpath},${prefix}/share/upp/uppsrc \
                    Bobcat \
                    ${build_type} \
                    -brh \
                    +GUI,SHARED \
                    Bobcat
build.env           CXX=${configure.cxx}

if {${configure.cxx_stdlib} ne "libc++"} {
    build.env-append \
                    DYLD_LIBRARY_PATH=${prefix}/lib/libgcc:\$DYLD_LIBRARY_PATH
}

build.target

post-build {
    set icon_source ${worksrcpath}/Bobcat/data/bobcat128x128.png
    # umk builds the .app in ${worksrcpath}/Bobcat/Bobcat.app
    set app_resources ${worksrcpath}/Bobcat/Bobcat.app/Contents/Resources

    # Generate .icns file using makeicns
    system "makeicns -in ${icon_source} -out ${app_resources}/bobcat.icns"

    # Update Info.plist to reference the icon
    set plist ${worksrcpath}/Bobcat/Bobcat.app/Contents/Info.plist
    system "/usr/libexec/PlistBuddy -c 'Add :CFBundleIconFile string bobcat' ${plist}"
}

destroot {
    # Install Bobcat.app bundle to MacPorts Applications directory
    copy ${worksrcpath}/Bobcat/Bobcat.app ${destroot}${applications_dir}/Bobcat.app

    # Create symlink for command-line access
    ln -s ${applications_dir}/Bobcat.app/Contents/MacOS/Bobcat ${destroot}${prefix}/bin/bobcat

    # Install documentation
    xinstall -d ${destroot}${prefix}/share/doc/${name}
    xinstall -m 644 ${worksrcpath}/README.md ${destroot}${prefix}/share/doc/${name}/
    xinstall -m 644 ${worksrcpath}/LICENSE ${destroot}${prefix}/share/doc/${name}/
}

notes "
Please launch Bobcat from the terminal, app bundle does not run directly.
"
