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

go.setup            github.com/apernet/hysteria 2.6.5 app/v
set git-commit      55e70a5f446fb4002f721de0b32bae6d6b03f164
# This line is for displaying commit in CLI only
revision            0
categories          net
maintainers         {i0ntempest @i0ntempest} openmaintainer
license             MIT

description         network utility and proxy optimized for networks of poor quality
long_description    Hysteria is a feature-packed network utility optimized for networks of poor quality \
                    (e.g. satellite connections, congested public Wi-Fi, cross-country connection) \
                    powered by a custom version of QUIC protocol.

checksums           rmd160  cf6474af51b493054fafb021fbed7bd4241c0579 \
                    sha256  21a04ef8ce640d7c60c3b8678500b6e6481862d9af62f9ce2663b772211718d0 \
                    size    4461168

# Notes for updating this port:
# Remember to update git commit hash

set time [clock format [clock seconds] -format %Y-%m-%dT%H:%M:%S]
build.args-append   -ldflags=\"-X 'main.appVersion=v${version}' -X 'main.appCommit=${git-commit}' -X 'main.appDate=${time}'\" -o ../hysteria .
# go2port no longer works since 1.3.1 as there's no go.mod at project root
go.offline_build    no
build.dir           ${worksrcpath}/app

destroot {
    xinstall -m 0755 ${worksrcpath}/${name} ${destroot}${prefix}/bin/
    file mkdir ${destroot}${prefix}/etc/hysteria
    copy ${filespath}/server.json ${filespath}/client.json ${destroot}${prefix}/etc/hysteria/
}

post-activate {
    if {![file exists ${prefix}/etc/hysteria/config.json]} {
        copy ${prefix}/etc/hysteria/client.json ${prefix}/etc/hysteria/config.json
    }
}

notes-append "
    The default config file is copied to ${prefix}/etc/hysteria/config.json and its content\
    will be preserved across upgrades and reinstalls. The startup item will use this config\
    file by default.
"

startupitem.create          yes
startupitem.executable      ${prefix}/bin/hysteria --config ${prefix}/etc/hysteria/config.json
