#https://goreleaser.com/static/schema.json

# release --skip=publish

# goreleaser build --skip=validate --clean --debug

# GOPROXY=https://goproxy.cn

# docker run -it --rm -v $PWD:/app -v /go:/go -w /app --platform=linux/arm64 golang:alpine3.19

# docker run -it --rm -v $PWD:/app -v /go:/go -w /app goreleaser/goreleaser-cross build --skip=validate --clean --debug

# docker run -it --rm -v $PWD:/app -v /go:/go -w /app bjdgyc/dcross goreleaser build --skip=validate --clean --debug

version: 1

dist: dist

before:
  hooks:
    - pwd
#    - cmd: go mod tidy
#      dir:
#        "{{ dir .Dist}}"
#      output: true
#    - cmd: go generate
#      dir:
#        "{{ dir .Dist}}"
#      output: true

builds:
  - id: "build"
    #main: .
    dir: ./server
    hooks:
      pre:
        - cmd: go mod tidy
          dir: ./server
          output: true
        - cmd: go generate
          dir: ./server
          output: true
    # {{- if eq .Arch "amd64" }}CC=x86_64-linux-gnu-gcc CXX=x86_64-linux-gnu-g++{{- end }}
    env:
      - CGO_ENABLED=1
      - >-
        {{- if eq .Os "linux" }}
          {{- if eq .Arch "amd64" }}CC=x86_64-linux-musl-gcc{{- end }}
        
          {{- if eq .Arch "arm64" }}CC=aarch64-linux-gnu-gcc{{- end }}
        {{- end }}
        {{- if eq .Os "darwin" }}
          {{- if eq .Arch "amd64"}}CC=o64-clang{{- end }}
          {{- if eq .Arch "arm64"}}CC=oa64-clang{{- end }}
        {{- end }}
        {{- if eq .Os "windows" }}
          {{- if eq .Arch "amd64"}}CC=x86_64-w64-mingw32-gcc{{- end }}
          {{- if eq .Arch "arm64"}}CC=aarch64-linux-gnu-gcc{{- end }}
        {{- end }}
    goos:
      - linux
      #- darwin
      #- windows
    goarch:
      - amd64
      #- arm64
    # https://go.dev/wiki/MinimumRequirements
    goamd64:
      - v1
    command: build
    flags:
      - -trimpath
      - -tags osusergo,netgo,sqlite_omit_load_extension
    ldflags:
      # go tool link -help
      # go tool compile -help
      # -linkmode external
      # -extld=$CC
      # -fpic 作为动态链接库的时候 需要添加

      - -s -w -extldflags '-static' -X main.version={{.Version}} -X main.commit={{.Commit}} -X main.date={{.Date}} -X main.builtBy=dcross

archives:
  - id: "archive1"
    format: tar.gz
    # this name template makes the OS and Arch compatible with the results of `uname`.
    name_template: >-
      {{ .ProjectName }}_
      {{- title .Os }}_
      {{- if eq .Arch "amd64" }}x86_64
      {{- else if eq .Arch "386" }}i386
      {{- else }}{{ .Arch }}{{ end }}
      {{- if .Arm }}v{{ .Arm }}{{ end }}
    # use zip for windows archives
    format_overrides:
      - goos: windows
        format: zip

changelog:
  sort: asc
  filters:
    exclude:
      - "^docs:"
      - "^test:"
