)]}'
{"fun/clbot/clbot.go":[{"author":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"change_message_id":"ef133407ef81ed6b0da043fb64ca56da689d6f64","unresolved":true,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"var ("},{"line_number":17,"context_line":"\tgerritAddr       \u003d flag.String(\"gerrit_host\", \"cl.tvl.fyi:29418\", \"Gerrit SSH host:port\")"},{"line_number":18,"context_line":"\tgerritSSHKey     \u003d flag.String(\"gerrit_ssh_pubkey\", \"ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBIUNYBYPCCBNDFSd0BuCR+8kgeuJ7IA5S2nTNQmkQUYNyXK+ot5os7rHtCk96+grd5+J8jFCuFBWisUe8h8NC0Q\u003d\", \"Gerrit SSH public key\")"},{"line_number":19,"context_line":"\tgerritSSHTimeout \u003d flag.Duration(\"gerrit_tcp_timeout\", 5*time.Second, \"Gerrit SSH TCP connect timeout\")"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"\tgerritAuthUsername \u003d flag.String(\"gerrit_ssh_auth_username\", \"\", \"Gerrit SSH username\")"}],"source_content_type":"text/x-go","patch_set":7,"id":"eb26b082_35a1254c","line":18,"range":{"start_line":18,"start_character":7,"end_line":18,"end_character":13},"updated":"2020-06-14 00:52:11.000000000","message":"I\u0027d rename this to `gerritSSHHostKey` or something similar for clarity.","commit_id":"1f98bd2e3d09e2d906545bb358e6636225304735"},{"author":{"_account_id":1000000,"name":"lukegb","email":"lukegb@tvl.fyi","username":"lukegb","status":"zzz"},"tag":"autogenerated:gerrit:newPatchSet","change_message_id":"7a13d5ce17ffa99bca1717196803edc291fc36fd","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"var ("},{"line_number":17,"context_line":"\tgerritAddr       \u003d flag.String(\"gerrit_host\", \"cl.tvl.fyi:29418\", \"Gerrit SSH host:port\")"},{"line_number":18,"context_line":"\tgerritSSHKey     \u003d flag.String(\"gerrit_ssh_pubkey\", \"ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBIUNYBYPCCBNDFSd0BuCR+8kgeuJ7IA5S2nTNQmkQUYNyXK+ot5os7rHtCk96+grd5+J8jFCuFBWisUe8h8NC0Q\u003d\", \"Gerrit SSH public key\")"},{"line_number":19,"context_line":"\tgerritSSHTimeout \u003d flag.Duration(\"gerrit_tcp_timeout\", 5*time.Second, \"Gerrit SSH TCP connect timeout\")"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"\tgerritAuthUsername \u003d flag.String(\"gerrit_ssh_auth_username\", \"\", \"Gerrit SSH username\")"}],"source_content_type":"text/x-go","patch_set":7,"id":"05a21f0d_285e53cb","line":18,"range":{"start_line":18,"start_character":7,"end_line":18,"end_character":13},"in_reply_to":"eb26b082_35a1254c","updated":"2020-06-14 16:58:02.000000000","message":"Done","commit_id":"1f98bd2e3d09e2d906545bb358e6636225304735"},{"author":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"change_message_id":"ef133407ef81ed6b0da043fb64ca56da689d6f64","unresolved":true,"context_lines":[{"line_number":17,"context_line":"\tgerritAddr       \u003d flag.String(\"gerrit_host\", \"cl.tvl.fyi:29418\", \"Gerrit SSH host:port\")"},{"line_number":18,"context_line":"\tgerritSSHKey     \u003d flag.String(\"gerrit_ssh_pubkey\", \"ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBIUNYBYPCCBNDFSd0BuCR+8kgeuJ7IA5S2nTNQmkQUYNyXK+ot5os7rHtCk96+grd5+J8jFCuFBWisUe8h8NC0Q\u003d\", \"Gerrit SSH public key\")"},{"line_number":19,"context_line":"\tgerritSSHTimeout \u003d flag.Duration(\"gerrit_tcp_timeout\", 5*time.Second, \"Gerrit SSH TCP connect timeout\")"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"\tgerritAuthUsername \u003d flag.String(\"gerrit_ssh_auth_username\", \"\", \"Gerrit SSH username\")"},{"line_number":22,"context_line":"\tgerritAuthKeyPath  \u003d flag.String(\"gerrit_ssh_auth_key\", \"\", \"Gerrit SSH private key path\")"},{"line_number":23,"context_line":"\t_                  \u003d markRequired(\"gerrit_ssh_auth_username\", \"gerrit_ssh_auth_key\")"}],"source_content_type":"text/x-go","patch_set":7,"id":"8320e1a6_295291bb","line":20,"updated":"2020-06-14 00:52:11.000000000","message":"?","commit_id":"1f98bd2e3d09e2d906545bb358e6636225304735"},{"author":{"_account_id":1000000,"name":"lukegb","email":"lukegb@tvl.fyi","username":"lukegb","status":"zzz"},"tag":"autogenerated:gerrit:newPatchSet","change_message_id":"7a13d5ce17ffa99bca1717196803edc291fc36fd","unresolved":false,"context_lines":[{"line_number":17,"context_line":"\tgerritAddr       \u003d flag.String(\"gerrit_host\", \"cl.tvl.fyi:29418\", \"Gerrit SSH host:port\")"},{"line_number":18,"context_line":"\tgerritSSHKey     \u003d flag.String(\"gerrit_ssh_pubkey\", \"ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBIUNYBYPCCBNDFSd0BuCR+8kgeuJ7IA5S2nTNQmkQUYNyXK+ot5os7rHtCk96+grd5+J8jFCuFBWisUe8h8NC0Q\u003d\", \"Gerrit SSH public key\")"},{"line_number":19,"context_line":"\tgerritSSHTimeout \u003d flag.Duration(\"gerrit_tcp_timeout\", 5*time.Second, \"Gerrit SSH TCP connect timeout\")"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"\tgerritAuthUsername \u003d flag.String(\"gerrit_ssh_auth_username\", \"\", \"Gerrit SSH username\")"},{"line_number":22,"context_line":"\tgerritAuthKeyPath  \u003d flag.String(\"gerrit_ssh_auth_key\", \"\", \"Gerrit SSH private key path\")"},{"line_number":23,"context_line":"\t_                  \u003d markRequired(\"gerrit_ssh_auth_username\", \"gerrit_ssh_auth_key\")"}],"source_content_type":"text/x-go","patch_set":7,"id":"be1b2aa1_ed40729f","line":20,"in_reply_to":"8320e1a6_295291bb","updated":"2020-06-14 16:58:02.000000000","message":"Done","commit_id":"1f98bd2e3d09e2d906545bb358e6636225304735"},{"author":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"change_message_id":"ef133407ef81ed6b0da043fb64ca56da689d6f64","unresolved":true,"context_lines":[{"line_number":43,"context_line":"\treturn ssh.PublicKeys(pk)"},{"line_number":44,"context_line":"}"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"var requiredFlags \u003d map[string]bool{}"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"func markRequired(fs ...string) error {"},{"line_number":49,"context_line":"\tfor _, f :\u003d range fs {"},{"line_number":50,"context_line":"\t\trequiredFlags[f] \u003d true"},{"line_number":51,"context_line":"\t}"},{"line_number":52,"context_line":"\treturn nil"},{"line_number":53,"context_line":"}"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"func checkRequired() {"},{"line_number":56,"context_line":"\tseen :\u003d make(map[string]bool)"},{"line_number":57,"context_line":"\tflag.Visit(func(f *flag.Flag) { seen[f.Name] \u003d true })"},{"line_number":58,"context_line":"\tfailed :\u003d false"},{"line_number":59,"context_line":"\tfor f :\u003d range requiredFlags {"},{"line_number":60,"context_line":"\t\tif !seen[f] {"},{"line_number":61,"context_line":"\t\t\tlog.Errorf(\"flag %q was unset but is required\", f)"},{"line_number":62,"context_line":"\t\t\tfailed \u003d true"},{"line_number":63,"context_line":"\t\t}"},{"line_number":64,"context_line":"\t}"},{"line_number":65,"context_line":"\tif failed {"},{"line_number":66,"context_line":"\t\tos.Exit(1)"},{"line_number":67,"context_line":"\t}"},{"line_number":68,"context_line":"}"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"func main() {"},{"line_number":71,"context_line":"\tflag.Parse()"}],"source_content_type":"text/x-go","patch_set":7,"id":"1cefbd91_73418340","line":68,"range":{"start_line":46,"start_character":0,"end_line":68,"end_character":1},"updated":"2020-06-14 00:52:11.000000000","message":"I think you could replace this with just a `mustHaveFlag(*flag.FlagSet)` and it would still be shorter.","commit_id":"1f98bd2e3d09e2d906545bb358e6636225304735"},{"author":{"_account_id":1000000,"name":"lukegb","email":"lukegb@tvl.fyi","username":"lukegb","status":"zzz"},"tag":"autogenerated:gerrit:newPatchSet","change_message_id":"7a13d5ce17ffa99bca1717196803edc291fc36fd","unresolved":false,"context_lines":[{"line_number":43,"context_line":"\treturn ssh.PublicKeys(pk)"},{"line_number":44,"context_line":"}"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"var requiredFlags \u003d map[string]bool{}"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"func markRequired(fs ...string) error {"},{"line_number":49,"context_line":"\tfor _, f :\u003d range fs {"},{"line_number":50,"context_line":"\t\trequiredFlags[f] \u003d true"},{"line_number":51,"context_line":"\t}"},{"line_number":52,"context_line":"\treturn nil"},{"line_number":53,"context_line":"}"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"func checkRequired() {"},{"line_number":56,"context_line":"\tseen :\u003d make(map[string]bool)"},{"line_number":57,"context_line":"\tflag.Visit(func(f *flag.Flag) { seen[f.Name] \u003d true })"},{"line_number":58,"context_line":"\tfailed :\u003d false"},{"line_number":59,"context_line":"\tfor f :\u003d range requiredFlags {"},{"line_number":60,"context_line":"\t\tif !seen[f] {"},{"line_number":61,"context_line":"\t\t\tlog.Errorf(\"flag %q was unset but is required\", f)"},{"line_number":62,"context_line":"\t\t\tfailed \u003d true"},{"line_number":63,"context_line":"\t\t}"},{"line_number":64,"context_line":"\t}"},{"line_number":65,"context_line":"\tif failed {"},{"line_number":66,"context_line":"\t\tos.Exit(1)"},{"line_number":67,"context_line":"\t}"},{"line_number":68,"context_line":"}"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"func main() {"},{"line_number":71,"context_line":"\tflag.Parse()"}],"source_content_type":"text/x-go","patch_set":7,"id":"36c8c67f_aaaa9a61","line":68,"range":{"start_line":46,"start_character":0,"end_line":68,"end_character":1},"in_reply_to":"1cefbd91_73418340","updated":"2020-06-14 16:58:02.000000000","message":"Done","commit_id":"1f98bd2e3d09e2d906545bb358e6636225304735"}],"fun/clbot/deps.nix":[{"author":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"change_message_id":"ef133407ef81ed6b0da043fb64ca56da689d6f64","unresolved":true,"context_lines":[{"line_number":1,"context_line":"{ depot, ... }:"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"let"},{"line_number":4,"context_line":"  inherit (depot.nix.buildGo) external;"}],"source_content_type":"text/x-nix","patch_set":7,"id":"823ed8d3_ac008596","line":1,"range":{"start_line":1,"start_character":0,"end_line":1,"end_character":15},"updated":"2020-06-14 00:52:11.000000000","message":"these should go in `//third_party/gopkgs`.","commit_id":"1f98bd2e3d09e2d906545bb358e6636225304735"},{"author":{"_account_id":1000000,"name":"lukegb","email":"lukegb@tvl.fyi","username":"lukegb","status":"zzz"},"tag":"autogenerated:gerrit:newPatchSet","change_message_id":"7a13d5ce17ffa99bca1717196803edc291fc36fd","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{ depot, ... }:"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"let"},{"line_number":4,"context_line":"  inherit (depot.nix.buildGo) external;"}],"source_content_type":"text/x-nix","patch_set":7,"id":"d97631ed_a0302370","line":1,"range":{"start_line":1,"start_character":0,"end_line":1,"end_character":15},"in_reply_to":"823ed8d3_ac008596","updated":"2020-06-14 16:58:02.000000000","message":"Done","commit_id":"1f98bd2e3d09e2d906545bb358e6636225304735"}],"fun/clbot/gerrit/gerritevents/types.go":[{"author":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"change_message_id":"ef133407ef81ed6b0da043fb64ca56da689d6f64","unresolved":true,"context_lines":[{"line_number":1,"context_line":"package gerritevents"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"// Account is a Gerrit account (or just a Git name+email pair)."},{"line_number":4,"context_line":"type Account struct {"}],"source_content_type":"text/x-go","patch_set":7,"id":"30c6e6e4_3f988adf","line":1,"range":{"start_line":1,"start_character":0,"end_line":1,"end_character":20},"updated":"2020-06-14 00:52:11.000000000","message":"I assume these types match something that\u0027s documented in the Gerrit API - can you add a link to that documentation at the top here?\n\n(same for events.go)","commit_id":"1f98bd2e3d09e2d906545bb358e6636225304735"},{"author":{"_account_id":1000000,"name":"lukegb","email":"lukegb@tvl.fyi","username":"lukegb","status":"zzz"},"change_message_id":"7a13d5ce17ffa99bca1717196803edc291fc36fd","unresolved":false,"context_lines":[{"line_number":1,"context_line":"package gerritevents"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"// Account is a Gerrit account (or just a Git name+email pair)."},{"line_number":4,"context_line":"type Account struct {"}],"source_content_type":"text/x-go","patch_set":7,"id":"17b6fd17_a0846ef9","line":1,"range":{"start_line":1,"start_character":0,"end_line":1,"end_character":20},"in_reply_to":"30c6e6e4_3f988adf","updated":"2020-06-14 16:58:19.000000000","message":"Done","commit_id":"1f98bd2e3d09e2d906545bb358e6636225304735"}]}
