# -*- 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.4 app/v
set git-commit      2146852c483b7e4f68f405023034b8241bfc49c6
# 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  e49e9eed15ae49a63649ac84498b6702b1eb7530 \
                    sha256  9d989174736654f8608a4ba7c1c49306e4b97c6a19d65d926c10a8521de7b2be \
                    size    4461016

# 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
