chore: only deps on go-judge/pb
This commit is contained in:
parent
901d37f619
commit
ad549a4499
4
go.mod
4
go.mod
|
@ -5,7 +5,6 @@ go 1.24
|
|||
toolchain go1.24.1
|
||||
|
||||
require (
|
||||
github.com/criyle/go-judge v1.9.2
|
||||
github.com/criyle/go-judge/pb v1.0.0
|
||||
github.com/go-git/go-git/v5 v5.14.0
|
||||
github.com/jinzhu/copier v0.4.0
|
||||
|
@ -23,8 +22,6 @@ require (
|
|||
github.com/Microsoft/go-winio v0.6.2 // indirect
|
||||
github.com/ProtonMail/go-crypto v1.1.6 // indirect
|
||||
github.com/cloudflare/circl v1.6.0 // indirect
|
||||
github.com/creack/pty v1.1.24 // indirect
|
||||
github.com/criyle/go-sandbox v0.11.2 // indirect
|
||||
github.com/cyphar/filepath-securejoin v0.4.1 // indirect
|
||||
github.com/danwakefield/fnmatch v0.0.0-20160403171240-cbb64ac3d964 // indirect
|
||||
github.com/emirpasic/gods v1.18.1 // indirect
|
||||
|
@ -41,7 +38,6 @@ require (
|
|||
github.com/xanzy/ssh-agent v0.3.3 // indirect
|
||||
golang.org/x/crypto v0.36.0 // indirect
|
||||
golang.org/x/net v0.37.0 // indirect
|
||||
golang.org/x/sync v0.12.0 // indirect
|
||||
golang.org/x/sys v0.31.0 // indirect
|
||||
golang.org/x/text v0.23.0 // indirect
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20250313205543-e70fdf4c4cb4 // indirect
|
||||
|
|
72
go.sum
72
go.sum
|
@ -1,14 +1,10 @@
|
|||
dario.cat/mergo v1.0.1 h1:Ra4+bf83h2ztPIQYNP99R6m+Y7KfnARDfID+a+vLl4s=
|
||||
dario.cat/mergo v1.0.1/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk=
|
||||
github.com/BurntSushi/toml v1.4.0 h1:kuoIxZQy2WRRk1pttg9asf+WVv6tWQuBNVmK8+nqPr0=
|
||||
github.com/BurntSushi/toml v1.4.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho=
|
||||
github.com/BurntSushi/toml v1.5.0 h1:W5quZX/G/csjUnuI8SUYlsHs9M38FC7znL0lIO+DvMg=
|
||||
github.com/BurntSushi/toml v1.5.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho=
|
||||
github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY=
|
||||
github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY=
|
||||
github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU=
|
||||
github.com/ProtonMail/go-crypto v1.1.5 h1:eoAQfK2dwL+tFSFpr7TbOaPNUbPiJj4fLYwwGE1FQO4=
|
||||
github.com/ProtonMail/go-crypto v1.1.5/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE=
|
||||
github.com/ProtonMail/go-crypto v1.1.6 h1:ZcV+Ropw6Qn0AX9brlQLAUXfqLBc7Bl+f/DmNxpLfdw=
|
||||
github.com/ProtonMail/go-crypto v1.1.6/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE=
|
||||
github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8=
|
||||
|
@ -17,18 +13,8 @@ github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPd
|
|||
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
|
||||
github.com/cloudflare/circl v1.6.0 h1:cr5JKic4HI+LkINy2lg3W2jF8sHCVTBncJr5gIIq7qk=
|
||||
github.com/cloudflare/circl v1.6.0/go.mod h1:uddAzsPgqdMAYatqJ0lsjX1oECcQLIlRpzZh3pJrofs=
|
||||
github.com/creack/pty v1.1.24 h1:bJrF4RRfyJnbTJqzRLHzcGaZK1NeM5kTC9jGgovnR1s=
|
||||
github.com/creack/pty v1.1.24/go.mod h1:08sCNb52WyoAwi2QDyzUCTgcvVFhUzewun7wtTfvcwE=
|
||||
github.com/criyle/go-judge v1.8.7 h1:HWg/xlQd7uxWtLoP7134lf+BDEUAp0cg/r9XlPyRQGk=
|
||||
github.com/criyle/go-judge v1.8.7/go.mod h1:nH3cCXThwVGtPGJJtakR6zhmNYKiTrYALnQd4WEW32E=
|
||||
github.com/criyle/go-judge v1.9.2 h1:PtX/pEPTHSFeqqOeOZ4WJVFPMFny/exhZ62+dYnI1OU=
|
||||
github.com/criyle/go-judge v1.9.2/go.mod h1:91G9KzibnX/EJlb7PtlzazY9BMMpNIrs/YbczfQaeJU=
|
||||
github.com/criyle/go-judge/pb v1.0.0 h1:8A4zHPPCGCDTuFY1GW5Hqpg+8ETIwzgXxiRpYKKb2zA=
|
||||
github.com/criyle/go-judge/pb v1.0.0/go.mod h1:hjgixgK9NH9ktwc29xbXVdZDOlKfEkRkEbZ4W5bOMmw=
|
||||
github.com/criyle/go-sandbox v0.10.6 h1:vyp+r7V2Vl5xY4Pt/2kYvRF5wu1NhMwLgmPKD0lXZ/o=
|
||||
github.com/criyle/go-sandbox v0.10.6/go.mod h1:nZLj0b/45fZ/a+xWmWrPrcKSepnXu0iPAVF3xF54UEI=
|
||||
github.com/criyle/go-sandbox v0.11.2 h1:u+GpAtIQZx9aFq7+xCtMFn8Uj7Sbok/971zi71Olhmo=
|
||||
github.com/criyle/go-sandbox v0.11.2/go.mod h1:9IZSv7cxcDkVaPSRufhMPLUg+7M7lTPAt8hjd/iMKFo=
|
||||
github.com/cyphar/filepath-securejoin v0.4.1 h1:JyxxyPEaktOD+GAnqIqTf9A8tHyAG22rowi7HkoSU1s=
|
||||
github.com/cyphar/filepath-securejoin v0.4.1/go.mod h1:Sdj7gXlvMcPZsbhwhQ33GguGLDGQL7h7bg04C/+u9jI=
|
||||
github.com/danwakefield/fnmatch v0.0.0-20160403171240-cbb64ac3d964 h1:y5HC9v93H5EPKqaS1UYVg1uYah5Xf51mBfIoWehClUQ=
|
||||
|
@ -36,8 +22,8 @@ github.com/danwakefield/fnmatch v0.0.0-20160403171240-cbb64ac3d964/go.mod h1:Xd9
|
|||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/elazarl/goproxy v1.4.0 h1:4GyuSbFa+s26+3rmYNSuUVsx+HgPrV1bk1jXI0l9wjM=
|
||||
github.com/elazarl/goproxy v1.4.0/go.mod h1:X/5W/t+gzDyLfHW4DrMdpjqYjpXsURlBt9lpBDxZZZQ=
|
||||
github.com/elazarl/goproxy v1.7.2 h1:Y2o6urb7Eule09PjlhQRGNsqRfPmYI3KKQLFpCAV3+o=
|
||||
github.com/elazarl/goproxy v1.7.2/go.mod h1:82vkLNir0ALaW14Rc399OTTjyNREgmdL2cVoIbS6XaE=
|
||||
github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc=
|
||||
github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ=
|
||||
github.com/fatih/camelcase v1.0.0 h1:hxNvNX/xYBp0ovncs8WyWZrOrpBNub/JfaMvbURyft8=
|
||||
|
@ -52,8 +38,6 @@ github.com/go-git/go-billy/v5 v5.6.2 h1:6Q86EsPXMa7c3YZ3aLAQsMA0VlWmy43r6FHqa/UN
|
|||
github.com/go-git/go-billy/v5 v5.6.2/go.mod h1:rcFC2rAsp/erv7CMz9GczHcuD0D32fWzH+MJAU+jaUU=
|
||||
github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4=
|
||||
github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII=
|
||||
github.com/go-git/go-git/v5 v5.13.2 h1:7O7xvsK7K+rZPKW6AQR1YyNhfywkv7B8/FsP3ki6Zv0=
|
||||
github.com/go-git/go-git/v5 v5.13.2/go.mod h1:hWdW5P4YZRjmpGHwRH2v3zkWcNl6HeXaXQEMGb3NJ9A=
|
||||
github.com/go-git/go-git/v5 v5.14.0 h1:/MD3lCrGjCen5WfEAzKg00MJJffKhC8gzS80ycmCi60=
|
||||
github.com/go-git/go-git/v5 v5.14.0/go.mod h1:Z5Xhoia5PcWA3NF8vRLURn9E5FRhSl7dGj9ItW3Wk5k=
|
||||
github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=
|
||||
|
@ -64,8 +48,8 @@ github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 h1:f+oWsMOmNPc8J
|
|||
github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8/go.mod h1:wcDNUvekVysuuOpQKo3191zZyTpiI6se1N1ULghS0sw=
|
||||
github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
|
||||
github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
|
||||
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
|
||||
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
||||
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
|
||||
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
|
||||
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
|
||||
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A=
|
||||
|
@ -98,8 +82,8 @@ github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
|
|||
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||
github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
|
||||
github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
|
||||
github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ=
|
||||
github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc=
|
||||
github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8=
|
||||
github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4=
|
||||
github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
|
||||
|
@ -112,59 +96,43 @@ github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOf
|
|||
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
|
||||
github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM=
|
||||
github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw=
|
||||
go.opentelemetry.io/otel v1.32.0 h1:WnBN+Xjcteh0zdk01SVqV55d/m62NJLJdIyb4y/WO5U=
|
||||
go.opentelemetry.io/otel v1.32.0/go.mod h1:00DCVSB0RQcnzlwyTfqtxSm+DRr9hpYrHjNGiBHVQIg=
|
||||
go.opentelemetry.io/otel/metric v1.32.0 h1:xV2umtmNcThh2/a/aCP+h64Xx5wsj8qqnkYZktzNa0M=
|
||||
go.opentelemetry.io/otel/metric v1.32.0/go.mod h1:jH7CIbbK6SH2V2wE16W05BHCtIDzauciCRLoc/SyMv8=
|
||||
go.opentelemetry.io/otel/sdk v1.32.0 h1:RNxepc9vK59A8XsgZQouW8ue8Gkb4jpWtJm9ge5lEG4=
|
||||
go.opentelemetry.io/otel/sdk v1.32.0/go.mod h1:LqgegDBjKMmb2GC6/PrTnteJG39I8/vJCAP9LlJXEjU=
|
||||
go.opentelemetry.io/otel/sdk/metric v1.32.0 h1:rZvFnvmvawYb0alrYkjraqJq0Z4ZUJAiyYCU9snn1CU=
|
||||
go.opentelemetry.io/otel/sdk/metric v1.32.0/go.mod h1:PWeZlq0zt9YkYAp3gjKZ0eicRYvOh1Gd+X99x6GHpCQ=
|
||||
go.opentelemetry.io/otel/trace v1.32.0 h1:WIC9mYrXf8TmY/EXuULKc8hR17vE+Hjv2cssQDe03fM=
|
||||
go.opentelemetry.io/otel/trace v1.32.0/go.mod h1:+i4rkvCraA+tG6AzwloGaCtkx53Fa+L+V8e9a7YvhT8=
|
||||
go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA=
|
||||
go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A=
|
||||
go.opentelemetry.io/otel v1.34.0 h1:zRLXxLCgL1WyKsPVrgbSdMN4c0FMkDAskSTQP+0hdUY=
|
||||
go.opentelemetry.io/otel v1.34.0/go.mod h1:OWFPOQ+h4G8xpyjgqo4SxJYdDQ/qmRH+wivy7zzx9oI=
|
||||
go.opentelemetry.io/otel/metric v1.34.0 h1:+eTR3U0MyfWjRDhmFMxe2SsW64QrZ84AOhvqS7Y+PoQ=
|
||||
go.opentelemetry.io/otel/metric v1.34.0/go.mod h1:CEDrp0fy2D0MvkXE+dPV7cMi8tWZwX3dmaIhwPOaqHE=
|
||||
go.opentelemetry.io/otel/sdk v1.34.0 h1:95zS4k/2GOy069d321O8jWgYsW3MzVV+KuSPKp7Wr1A=
|
||||
go.opentelemetry.io/otel/sdk v1.34.0/go.mod h1:0e/pNiaMAqaykJGKbi+tSjWfNNHMTxoC9qANsCzbyxU=
|
||||
go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce1EK0Gyvahk=
|
||||
go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w=
|
||||
go.opentelemetry.io/otel/trace v1.34.0 h1:+ouXS2V8Rd4hp4580a8q23bg0azF2nI8cqLYnC8mh/k=
|
||||
go.opentelemetry.io/otel/trace v1.34.0/go.mod h1:Svm7lSjQD7kG7KJ/MUHPVXSDGz2OX4h0M2jHBhmSfRE=
|
||||
golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
|
||||
golang.org/x/crypto v0.33.0 h1:IOBPskki6Lysi0lo9qQvbxiQ+FvsCC/YWOecCHAixus=
|
||||
golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M=
|
||||
golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34=
|
||||
golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc=
|
||||
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8=
|
||||
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY=
|
||||
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||
golang.org/x/net v0.35.0 h1:T5GQRQb2y08kTAByq9L4/bz8cipCdA8FbRTXewonqY8=
|
||||
golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk=
|
||||
golang.org/x/net v0.37.0 h1:1zLorHbz+LYj7MQlSf1+2tPIIgibq2eL5xkrGk6f+2c=
|
||||
golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8=
|
||||
golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w=
|
||||
golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
||||
golang.org/x/sync v0.12.0 h1:MHc5BpPuC30uJk597Ri8TV3CNZcTLu6B6z4lJy+g6Jw=
|
||||
golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
|
||||
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc=
|
||||
golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||
golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik=
|
||||
golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
|
||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||
golang.org/x/term v0.29.0 h1:L6pJp37ocefwRRtYPKSWOWzOtWSxVajvz2ldH/xi3iU=
|
||||
golang.org/x/term v0.29.0/go.mod h1:6bl4lRlvVuDgSf3179VpIxBF0o10JUpXWOnI7nErv7s=
|
||||
golang.org/x/term v0.30.0 h1:PQ39fJZ+mfadBm0y5WlL4vlM7Sx1Hgf13sMIY2+QS9Y=
|
||||
golang.org/x/term v0.30.0/go.mod h1:NYYFdzHoI5wRh/h5tDMdMqCqPJZEuNqVR5xJLd/n67g=
|
||||
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM=
|
||||
golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY=
|
||||
golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY=
|
||||
golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4=
|
||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20250207221924-e9438ea467c6 h1:2duwAxN2+k0xLNpjnHTXoMUgnv6VPSp5fiqTuwSxjmI=
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20250207221924-e9438ea467c6/go.mod h1:8BS3B93F/U1juMFq9+EDk+qOT5CO1R9IzXxG3PTqiRk=
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb h1:TLPQVbx1GJ8VKZxz52VAxl1EBgKXXbTiU9Fc5fZeLn4=
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I=
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20250313205543-e70fdf4c4cb4 h1:iK2jbkWL86DXjEx0qiHcRE9dE4/Ahua5k6V8OWFb//c=
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20250313205543-e70fdf4c4cb4/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I=
|
||||
google.golang.org/grpc v1.70.0 h1:pWFv03aZoHzlRKHWicjsZytKAiYCtNS0dHbXnIdq7jQ=
|
||||
google.golang.org/grpc v1.70.0/go.mod h1:ofIJqVKDXx/JiXrwr2IG4/zwdH9txy3IlF40RmcJSQw=
|
||||
google.golang.org/grpc v1.71.0 h1:kF77BGdPTQ4/JZWMlb9VpJ5pa25aqvVqogsxNHHdeBg=
|
||||
google.golang.org/grpc v1.71.0/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec=
|
||||
google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM=
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
package dummy
|
||||
|
||||
import (
|
||||
"github.com/criyle/go-judge/envexec"
|
||||
"github.com/joint-online-judge/JOJ3/internal/stage"
|
||||
)
|
||||
|
||||
|
@ -9,7 +8,7 @@ func (e *Dummy) Run(cmds []stage.Cmd) ([]stage.ExecutorResult, error) {
|
|||
var res []stage.ExecutorResult
|
||||
for range cmds {
|
||||
res = append(res, stage.ExecutorResult{
|
||||
Status: stage.Status(envexec.StatusAccepted),
|
||||
Status: stage.StatusAccepted,
|
||||
ExitStatus: 0,
|
||||
Error: "",
|
||||
Time: 0,
|
||||
|
|
|
@ -11,7 +11,6 @@ import (
|
|||
"syscall"
|
||||
"time"
|
||||
|
||||
"github.com/criyle/go-judge/envexec"
|
||||
"github.com/joint-online-judge/JOJ3/internal/stage"
|
||||
)
|
||||
|
||||
|
@ -23,7 +22,7 @@ func (e *Local) generateResult(
|
|||
stdoutBuffer, stderrBuffer bytes.Buffer,
|
||||
) stage.ExecutorResult {
|
||||
result := stage.ExecutorResult{
|
||||
Status: stage.Status(envexec.StatusAccepted),
|
||||
Status: stage.StatusAccepted,
|
||||
ExitStatus: processState.ExitCode(),
|
||||
Error: "",
|
||||
Time: func() uint64 {
|
||||
|
@ -59,10 +58,10 @@ func (e *Local) generateResult(
|
|||
|
||||
if err != nil {
|
||||
if exitErr, ok := err.(*exec.ExitError); ok {
|
||||
result.Status = stage.Status(envexec.StatusNonzeroExitStatus)
|
||||
result.Status = stage.StatusNonzeroExitStatus
|
||||
result.Error = exitErr.Error()
|
||||
} else {
|
||||
result.Status = stage.Status(envexec.StatusInternalError)
|
||||
result.Status = stage.StatusInternalError
|
||||
result.Error = err.Error()
|
||||
}
|
||||
}
|
||||
|
@ -75,7 +74,7 @@ func (e *Local) generateResult(
|
|||
}
|
||||
|
||||
if err := handleCopyOut(&result, cmd); err != nil {
|
||||
result.Status = stage.Status(envexec.StatusFileError)
|
||||
result.Status = stage.StatusFileError
|
||||
result.Error = err.Error()
|
||||
}
|
||||
|
||||
|
@ -146,7 +145,7 @@ func (e *Local) Run(cmds []stage.Cmd) ([]stage.ExecutorResult, error) {
|
|||
case <-time.After(duration):
|
||||
_ = execCmd.Process.Kill()
|
||||
result := stage.ExecutorResult{
|
||||
Status: stage.Status(envexec.StatusTimeLimitExceeded),
|
||||
Status: stage.StatusTimeLimitExceeded,
|
||||
Error: "",
|
||||
Files: map[string]string{},
|
||||
FileIDs: map[string]string{},
|
||||
|
|
|
@ -6,7 +6,6 @@ import (
|
|||
"os"
|
||||
"strings"
|
||||
|
||||
"github.com/criyle/go-judge/envexec"
|
||||
"github.com/joint-online-judge/JOJ3/internal/stage"
|
||||
)
|
||||
|
||||
|
@ -37,7 +36,7 @@ func (*Diff) Run(results []stage.ExecutorResult, confAny any) (
|
|||
score := 0
|
||||
comment := ""
|
||||
if conf.FailOnNotAccepted &&
|
||||
result.Status != stage.Status(envexec.StatusAccepted) {
|
||||
result.Status != stage.StatusAccepted {
|
||||
if conf.ForceQuitOnFailed {
|
||||
forceQuit = true
|
||||
}
|
||||
|
|
|
@ -5,7 +5,6 @@ import (
|
|||
"fmt"
|
||||
"log/slog"
|
||||
|
||||
"github.com/criyle/go-judge/envexec"
|
||||
"github.com/joint-online-judge/JOJ3/internal/stage"
|
||||
"github.com/joint-online-judge/JOJ3/pkg/healthcheck"
|
||||
)
|
||||
|
@ -14,7 +13,7 @@ func (*Healthcheck) parse(executorResult stage.ExecutorResult, conf Conf) (stage
|
|||
stdout := executorResult.Files[conf.Stdout]
|
||||
stderr := executorResult.Files[conf.Stderr]
|
||||
slog.Debug("healthcheck files", "stdout", stdout, "stderr", stderr)
|
||||
if executorResult.Status != stage.Status(envexec.StatusAccepted) {
|
||||
if executorResult.Status != stage.StatusAccepted {
|
||||
return stage.ParserResult{
|
||||
Score: 0,
|
||||
Comment: fmt.Sprintf(
|
||||
|
|
|
@ -3,7 +3,6 @@ package resultstatus
|
|||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/criyle/go-judge/envexec"
|
||||
"github.com/joint-online-judge/JOJ3/internal/stage"
|
||||
)
|
||||
|
||||
|
@ -19,7 +18,7 @@ func (*ResultStatus) Run(results []stage.ExecutorResult, confAny any) (
|
|||
var res []stage.ParserResult
|
||||
for _, result := range results {
|
||||
comment := conf.Comment
|
||||
if result.Status != stage.Status(envexec.StatusAccepted) {
|
||||
if result.Status != stage.StatusAccepted {
|
||||
score = 0
|
||||
comment = fmt.Sprintf(
|
||||
"Unexpected executor status: `%s`.\n", result.Status,
|
||||
|
|
74
internal/stage/file_error.go
Normal file
74
internal/stage/file_error.go
Normal file
|
@ -0,0 +1,74 @@
|
|||
package stage
|
||||
|
||||
import "fmt"
|
||||
|
||||
// copied from https://github.com/criyle/go-judge/blob/master/envexec/cmd.go
|
||||
// FileErrorType defines the location that file operation fails
|
||||
type FileErrorType int
|
||||
|
||||
// FileError enums
|
||||
const (
|
||||
ErrCopyInOpenFile FileErrorType = iota
|
||||
ErrCopyInCreateDir
|
||||
ErrCopyInCreateFile
|
||||
ErrCopyInCopyContent
|
||||
ErrCopyOutOpen
|
||||
ErrCopyOutNotRegularFile
|
||||
ErrCopyOutSizeExceeded
|
||||
ErrCopyOutCreateFile
|
||||
ErrCopyOutCopyContent
|
||||
ErrCollectSizeExceeded
|
||||
ErrSymlink
|
||||
)
|
||||
|
||||
// FileError defines the location, file name and the detailed message for a failed file operation
|
||||
type FileError struct {
|
||||
Name string `json:"name"`
|
||||
Type FileErrorType `json:"type"`
|
||||
Message string `json:"message,omitempty"`
|
||||
}
|
||||
|
||||
var fileErrorString = []string{
|
||||
"CopyInOpenFile",
|
||||
"CopyInCreateDir",
|
||||
"CopyInCreateFile",
|
||||
"CopyInCopyContent",
|
||||
"CopyOutOpen",
|
||||
"CopyOutNotRegularFile",
|
||||
"CopyOutSizeExceeded",
|
||||
"CopyOutCreateFile",
|
||||
"CopyOutCopyContent",
|
||||
"CollectSizeExceeded",
|
||||
}
|
||||
|
||||
var fileErrorStringReverse = make(map[string]FileErrorType)
|
||||
|
||||
func (t FileErrorType) String() string {
|
||||
v := int(t)
|
||||
if v >= 0 && v < len(fileErrorString) {
|
||||
return fileErrorString[v]
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
// MarshalJSON encodes file error into json string
|
||||
func (t FileErrorType) MarshalJSON() ([]byte, error) {
|
||||
return []byte(`"` + t.String() + `"`), nil
|
||||
}
|
||||
|
||||
// UnmarshalJSON decodes file error from json string
|
||||
func (t *FileErrorType) UnmarshalJSON(b []byte) error {
|
||||
str := string(b)
|
||||
v, ok := fileErrorStringReverse[str]
|
||||
if ok {
|
||||
return fmt.Errorf("%s is not file error type", str)
|
||||
}
|
||||
*t = v
|
||||
return nil
|
||||
}
|
||||
|
||||
func init() {
|
||||
for i, v := range fileErrorString {
|
||||
fileErrorStringReverse[`"`+v+`"`] = FileErrorType(i)
|
||||
}
|
||||
}
|
|
@ -4,17 +4,9 @@ import (
|
|||
"encoding/json"
|
||||
"fmt"
|
||||
"strconv"
|
||||
|
||||
"github.com/criyle/go-judge/envexec"
|
||||
)
|
||||
|
||||
// copied from https://github.com/criyle/go-judge/blob/master/cmd/go-judge/model/model.go
|
||||
// FileError defines the location, file name and the detailed message for a failed file operation
|
||||
type FileError = envexec.FileError
|
||||
|
||||
// FileErrorType defines the location that file operation fails
|
||||
type FileErrorType = envexec.FileErrorType
|
||||
|
||||
// CmdFile defines file from multiple source including local / memory / cached or pipe collector
|
||||
type CmdFile struct {
|
||||
Src *string `json:"src"`
|
||||
|
@ -82,30 +74,6 @@ type Request struct {
|
|||
PipeMapping []PipeMap `json:"pipeMapping"`
|
||||
}
|
||||
|
||||
// Status offers JSON marshal for envexec.Status
|
||||
type Status envexec.Status
|
||||
|
||||
// String converts status to string
|
||||
func (s Status) String() string {
|
||||
return envexec.Status(s).String()
|
||||
}
|
||||
|
||||
// MarshalJSON convert status into string
|
||||
func (s Status) MarshalJSON() ([]byte, error) {
|
||||
return []byte("\"" + envexec.Status(s).String() + "\""), nil
|
||||
}
|
||||
|
||||
// UnmarshalJSON convert string into status
|
||||
func (s *Status) UnmarshalJSON(b []byte) error {
|
||||
str := string(b)
|
||||
v, err := envexec.StringToStatus(str)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
*s = Status(v)
|
||||
return nil
|
||||
}
|
||||
|
||||
// ExecutorResult defines single command result
|
||||
type ExecutorResult struct {
|
||||
Status Status `json:"status"`
|
||||
|
@ -171,10 +139,10 @@ func (r ExecutorResult) MarshalJSON() ([]byte, error) {
|
|||
|
||||
func SummarizeExecutorResults(results []ExecutorResult) ExecutorResultSummary {
|
||||
var summary ExecutorResultSummary
|
||||
summary.Status = Status(envexec.StatusAccepted)
|
||||
summary.Status = StatusAccepted
|
||||
for _, result := range results {
|
||||
if result.Status != Status(envexec.StatusAccepted) &&
|
||||
summary.Status == Status(envexec.StatusAccepted) {
|
||||
if result.Status != StatusAccepted &&
|
||||
summary.Status == StatusAccepted {
|
||||
summary.Status = result.Status
|
||||
}
|
||||
if result.ExitStatus != 0 && summary.ExitStatus == 0 {
|
||||
|
|
99
internal/stage/run_status.go
Normal file
99
internal/stage/run_status.go
Normal file
|
@ -0,0 +1,99 @@
|
|||
package stage
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// copied from https://github.com/criyle/go-judge/blob/master/envexec/run_status.go
|
||||
// Status defines run task Status return status
|
||||
type Status int
|
||||
|
||||
// Defines run task Status result status
|
||||
const (
|
||||
// not initialized status (as error)
|
||||
StatusInvalid Status = iota
|
||||
|
||||
// exit normally
|
||||
StatusAccepted
|
||||
StatusWrongAnswer
|
||||
StatusPartiallyCorrect
|
||||
|
||||
// exit with error
|
||||
StatusMemoryLimitExceeded // MLE
|
||||
StatusTimeLimitExceeded // TLE
|
||||
StatusOutputLimitExceeded // OLE
|
||||
StatusFileError // FE
|
||||
StatusNonzeroExitStatus // NZS
|
||||
StatusSignalled // SIG
|
||||
StatusDangerousSyscall // DJS
|
||||
|
||||
// StatusRuntimeError // RE
|
||||
|
||||
// SPJ / interactor error
|
||||
StatusJudgementFailed
|
||||
StatusInvalidInteraction // interactor signals error
|
||||
|
||||
// internal error including: cgroup init failed, container failed, etc
|
||||
StatusInternalError
|
||||
)
|
||||
|
||||
var statusToString = []string{
|
||||
"Invalid",
|
||||
"Accepted",
|
||||
"Wrong Answer",
|
||||
"Partially Correct",
|
||||
"Memory Limit Exceeded",
|
||||
"Time Limit Exceeded",
|
||||
"Output Limit Exceeded",
|
||||
"File Error",
|
||||
"Nonzero Exit Status",
|
||||
"Signalled",
|
||||
"Dangerous Syscall",
|
||||
"Judgement Failed",
|
||||
"Invalid Interaction",
|
||||
"Internal Error",
|
||||
"CGroup Error",
|
||||
"Container Error",
|
||||
}
|
||||
|
||||
// stringToStatus map string to corresponding Status
|
||||
var stringToStatus = make(map[string]Status)
|
||||
|
||||
func (s Status) String() string {
|
||||
si := int(s)
|
||||
if si < 0 || si >= len(statusToString) {
|
||||
return statusToString[0] // invalid
|
||||
}
|
||||
return statusToString[si]
|
||||
}
|
||||
|
||||
// StringToStatus convert string to Status
|
||||
func StringToStatus(s string) (Status, error) {
|
||||
v, ok := stringToStatus[s]
|
||||
if !ok {
|
||||
return 0, fmt.Errorf("invalid string converting: %s", s)
|
||||
}
|
||||
return v, nil
|
||||
}
|
||||
|
||||
// MarshalJSON convert status into string
|
||||
func (s Status) MarshalJSON() ([]byte, error) {
|
||||
return []byte("\"" + Status(s).String() + "\""), nil
|
||||
}
|
||||
|
||||
// UnmarshalJSON convert string into status
|
||||
func (s *Status) UnmarshalJSON(b []byte) error {
|
||||
str := string(b)
|
||||
v, err := StringToStatus(str)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
*s = Status(v)
|
||||
return nil
|
||||
}
|
||||
|
||||
func init() {
|
||||
for i, v := range statusToString {
|
||||
stringToStatus["\""+v+"\""] = Status(i)
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user