#!/usr/bin/env ruby

require 'json'

PROTO_PACKAGE = 'gitlab.com/gitlab-org/gitaly-proto'.freeze

go_mod_raw = IO.popen(%w[go mod edit -json], &:read)
abort 'go mod edit failed' unless $?.success?

go_mod = JSON.parse(go_mod_raw)

gitaly_proto = go_mod['Require'].find { |pkg| pkg['Path'] == PROTO_PACKAGE }
abort 'gitaly-proto not found in go.mod' unless gitaly_proto

puts gitaly_proto.to_json

# good: v1.2.3
# bad: v1.2.3-2019234234-a35478eff90
if gitaly_proto['Version'] =~ /^v[0-9.]+$/
  puts 'OK'
  exit
end

abort 'error: no tagged version of gitaly-proto found in go.mod'
