# -*- 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.3 app/v
set git-commit      a24ef5b8f003b8a3127c52a20696b5ee9daa1160
# 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  f61eefc3b10b1656322b12dacfd370ba2fec17f6 \
                    sha256  bed1ece93dfaa07fbf709136efadaf4ccb09e0375844de3e28c5644ebe518eb0 \
                    size    4466498

# 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
