project = "hugo"

# In Hugo v0.103.0 we removed the archive name replacements (e.g. amd64 => 64bit).
# Using standard GOOS/GOARCH values makes it easier for scripts out there,
# but to prevent breakage in Netlify etc. that has adopted to the old names,
# we create aliases for the most common variants. 
# According to download numbers from v0.101.0, these are by a good margin the two most popular:
# hugo_extended_0.101.0_Linux-64bit.tar.gz  Downloaded 129,016 times
# hugo_0.101.0_Linux-64bit.tar.gz  Downloaded 87,846 times
# This replacement will create 2 extra alias archives.
archive_alias_replacements = { "linux-amd64.tar.gz" = "Linux-64bit.tar.gz" }

[go_settings]
    go_proxy = "https://proxy.golang.org"
    go_exe   = "go"

[build_settings]
    binary  = "hugo"
    flags   = ["-buildmode", "exe"]
    env     = ["CGO_ENABLED=0"]
    ldflags = "-s -w -X github.com/gohugoio/hugo/common/hugo.vendorInfo=gohugoio"

[archive_settings]
    name_template = "{{ .Project }}_{{ .Tag | trimPrefix `v` }}_{{ .Goos }}-{{ .Goarch }}"
    extra_files = [
        { source_path = "README.md", target_path = "README.md" },
        { source_path = "LICENSE", target_path = "LICENSE" },
    ]
    [archive_settings.type]
        format    = "tar.gz"
        extension = ".tar.gz"

[release_settings]
    name             = "${HUGORELEASER_TAG}"
    type             = "github"
    repository       = "hugo"
    repository_owner = "gohugoio"
    draft            = true
    prerelease       = false

    [release_settings.release_notes_settings]
        # Use Hugoreleaser's autogenerated release notes.
        generate = true

        # Collapse releases with < 10 changes below one title.
        short_threshold = 10
        short_title     = "What's Changed"

        groups = [
            # Group the changes in the release notes by title.
            # You need at least one.
            # The groups will be tested in order until a match is found.
            # The titles will so be listed in the given order in the release note.
            # Any match with ignore=true title will be dropped.
            { regexp = "Merge commit|Squashed|releaser:", ignore = true },
            { title = "Note", regexp = "(note|deprecated)", ordinal = 10 },
            { title = "Bug fixes", regexp = "fix", ordinal = 15 },
            { title = "Dependency Updates", regexp = "deps", ordinal = 30 },
            { title = "Build Setup", regexp = "(snap|release|update to)", ordinal = 40 },
            { title = "Documentation", regexp = "(doc|readme)", ordinal = 40 },
            { title = "Improvements", regexp = ".*", ordinal = 20 },
        ]

[[builds]]
    path = "container1/unix/regular"

    [[builds.os]]
        goos = "darwin"
        [[builds.os.archs]]
            goarch = "universal"
    [[builds.os]]
        goos = "linux"
        [[builds.os.archs]]
            goarch = "amd64"
        [[builds.os.archs]]
            goarch = "arm64"
        [[builds.os.archs]]
            goarch = "arm"
            [builds.os.archs.build_settings]
                env = ["CGO_ENABLED=0", "GOARM=7"]

    # Unix BSD variants
    [[builds.os]]
        goos = "dragonfly"
        [[builds.os.archs]]
            goarch = "amd64"
    [[builds.os]]
        goos = "freebsd"
        [[builds.os.archs]]
            goarch = "amd64"
    [[builds.os]]
        goos = "netbsd"
        [[builds.os.archs]]
            goarch = "amd64"
    [[builds.os]]
        goos = "openbsd"
        [[builds.os.archs]]
            goarch = "amd64"

[[builds]]
    path = "container1/unix/extended"

    [builds.build_settings]
        flags = ["-buildmode", "exe", "-tags", "extended"]
        env   = ["CGO_ENABLED=1"]

    [[builds.os]]
        goos = "darwin"
        [builds.os.build_settings]
            env = ["CGO_ENABLED=1", "CC=o64-clang", "CXX=o64-clang++"]
        [[builds.os.archs]]
            goarch = "universal"
    [[builds.os]]
        goos = "linux"
        [[builds.os.archs]]
            goarch = "amd64"

[[builds]]
    path = "container2/linux/extended"

    [builds.build_settings]
        flags = ["-buildmode", "exe", "-tags", "extended"]

    [[builds.os]]
        goos = "linux"
        [builds.os.build_settings]
            env = [
                "CGO_ENABLED=1",
                "CC=aarch64-linux-gnu-gcc",
                "CXX=aarch64-linux-gnu-g++",
            ]
        [[builds.os.archs]]
            goarch = "arm64"

[[builds]]
    path = "container1/windows/regular"

    [[builds.os]]
        goos = "windows"
        [builds.os.build_settings]
            binary = "hugo.exe"
        [[builds.os.archs]]
            goarch = "amd64"
        [[builds.os.archs]]
            goarch = "arm64"

[[builds]]
    path = "container1/windows/extended"

    [builds.build_settings]
        flags = ["-buildmode", "exe", "-tags", "extended"]
        env = [
            "CGO_ENABLED=1",
            "CC=x86_64-w64-mingw32-gcc",
            "CXX=x86_64-w64-mingw32-g++",
        ]
        ldflags = "-s -w -X github.com/gohugoio/hugo/common/hugo.vendorInfo=gohugoio -extldflags '-static'"

    [[builds.os]]
        goos = "windows"
        [builds.os.build_settings]
            binary = "hugo.exe"
        [[builds.os.archs]]
            goarch = "amd64"

[[archives]]
    paths = ["builds/container1/unix/regular/**"]
[[archives]]
    paths = ["builds/container1/unix/extended/**"]
    [archives.archive_settings]
        name_template = "{{ .Project }}_extended_{{ .Tag | trimPrefix `v` }}_{{ .Goos }}-{{ .Goarch }}"
[[archives]]
    # Only extended builds in container2.
    paths = ["builds/container2/**"]
    [archives.archive_settings]
        name_template = "{{ .Project }}_extended_{{ .Tag | trimPrefix `v` }}_{{ .Goos }}-{{ .Goarch }}"
[[archives]]
    paths = ["builds/**/windows/regular/**"]
    [archives.archive_settings.type]
        format    = "zip"
        extension = ".zip"
[[archives]]
    paths = ["builds/**/windows/extended/**"]
    [archives.archive_settings]
        name_template = "{{ .Project }}_extended_{{ .Tag | trimPrefix `v` }}_{{ .Goos }}-{{ .Goarch }}"
        [archives.archive_settings.type]
            format    = "zip"
            extension = ".zip"
[[archives]]
    paths = ["builds/**/regular/linux/{arm64,amd64}"]
    [archives.archive_settings]
        binary_dir  = "/usr/local/bin"
        extra_files = []
        [archives.archive_settings.type]
            format    = "_plugin"
            extension = ".deb"
        [archives.archive_settings.plugin]
            id      = "deb"
            type    = "gorun"
            command = "github.com/gohugoio/hugoreleaser-archive-plugins/deb@v0.6.1"
        [archives.archive_settings.custom_settings]
            vendor      = "gohugo.io"
            homepage    = "https://github.com/gohugoio/hugoreleaser"
            maintainer  = "Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>"
            description = "Build, archive and release Go programs."
            license     = "Apache-2.0"
[[archives]]
    paths = ["builds/**/extended/linux/{arm64,amd64}"]
    [archives.archive_settings]
        binary_dir    = "/usr/local/bin"
        extra_files   = []
        name_template = "{{ .Project }}_extended_{{ .Tag | trimPrefix `v` }}_{{ .Goos }}-{{ .Goarch }}"
        [archives.archive_settings.type]
            format    = "_plugin"
            extension = ".deb"
        [archives.archive_settings.plugin]
            id      = "deb"
            type    = "gorun"
            command = "github.com/gohugoio/hugoreleaser-archive-plugins/deb@latest"
        [archives.archive_settings.custom_settings]
            vendor      = "gohugo.io"
            homepage    = "https://github.com/gohugoio/hugoreleaser"
            maintainer  = "Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>"
            description = "Build, archive and release Go programs."
            license     = "Apache-2.0"

[[releases]]
    paths = ["archives/**"]
    path  = "r1"

    # The above should allow the following build commands:
    # hugoreleaser build -paths "builds/container1/**"
    # hugoreleaser build -paths "builds/container2/**"
    # hugoreleaser archive 
    # hugoreleaser release
