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 | toolchain go1.24.1 | ||||||
| 
 | 
 | ||||||
| require ( | require ( | ||||||
| 	github.com/criyle/go-judge v1.9.2 |  | ||||||
| 	github.com/criyle/go-judge/pb v1.0.0 | 	github.com/criyle/go-judge/pb v1.0.0 | ||||||
| 	github.com/go-git/go-git/v5 v5.14.0 | 	github.com/go-git/go-git/v5 v5.14.0 | ||||||
| 	github.com/jinzhu/copier v0.4.0 | 	github.com/jinzhu/copier v0.4.0 | ||||||
|  | @ -23,8 +22,6 @@ require ( | ||||||
| 	github.com/Microsoft/go-winio v0.6.2 // indirect | 	github.com/Microsoft/go-winio v0.6.2 // indirect | ||||||
| 	github.com/ProtonMail/go-crypto v1.1.6 // indirect | 	github.com/ProtonMail/go-crypto v1.1.6 // indirect | ||||||
| 	github.com/cloudflare/circl v1.6.0 // 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/cyphar/filepath-securejoin v0.4.1 // indirect | ||||||
| 	github.com/danwakefield/fnmatch v0.0.0-20160403171240-cbb64ac3d964 // indirect | 	github.com/danwakefield/fnmatch v0.0.0-20160403171240-cbb64ac3d964 // indirect | ||||||
| 	github.com/emirpasic/gods v1.18.1 // indirect | 	github.com/emirpasic/gods v1.18.1 // indirect | ||||||
|  | @ -41,7 +38,6 @@ require ( | ||||||
| 	github.com/xanzy/ssh-agent v0.3.3 // indirect | 	github.com/xanzy/ssh-agent v0.3.3 // indirect | ||||||
| 	golang.org/x/crypto v0.36.0 // indirect | 	golang.org/x/crypto v0.36.0 // indirect | ||||||
| 	golang.org/x/net v0.37.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/sys v0.31.0 // indirect | ||||||
| 	golang.org/x/text v0.23.0 // indirect | 	golang.org/x/text v0.23.0 // indirect | ||||||
| 	google.golang.org/genproto/googleapis/rpc v0.0.0-20250313205543-e70fdf4c4cb4 // 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 h1:Ra4+bf83h2ztPIQYNP99R6m+Y7KfnARDfID+a+vLl4s= | ||||||
| dario.cat/mergo v1.0.1/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= | 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 h1:W5quZX/G/csjUnuI8SUYlsHs9M38FC7znL0lIO+DvMg= | ||||||
| github.com/BurntSushi/toml v1.5.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= | 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.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= | ||||||
| github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= | github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= | ||||||
| github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= | 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 h1:ZcV+Ropw6Qn0AX9brlQLAUXfqLBc7Bl+f/DmNxpLfdw= | ||||||
| github.com/ProtonMail/go-crypto v1.1.6/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE= | 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= | 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/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 h1:cr5JKic4HI+LkINy2lg3W2jF8sHCVTBncJr5gIIq7qk= | ||||||
| github.com/cloudflare/circl v1.6.0/go.mod h1:uddAzsPgqdMAYatqJ0lsjX1oECcQLIlRpzZh3pJrofs= | 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 h1:8A4zHPPCGCDTuFY1GW5Hqpg+8ETIwzgXxiRpYKKb2zA= | ||||||
| github.com/criyle/go-judge/pb v1.0.0/go.mod h1:hjgixgK9NH9ktwc29xbXVdZDOlKfEkRkEbZ4W5bOMmw= | 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 h1:JyxxyPEaktOD+GAnqIqTf9A8tHyAG22rowi7HkoSU1s= | ||||||
| github.com/cyphar/filepath-securejoin v0.4.1/go.mod h1:Sdj7gXlvMcPZsbhwhQ33GguGLDGQL7h7bg04C/+u9jI= | github.com/cyphar/filepath-securejoin v0.4.1/go.mod h1:Sdj7gXlvMcPZsbhwhQ33GguGLDGQL7h7bg04C/+u9jI= | ||||||
| github.com/danwakefield/fnmatch v0.0.0-20160403171240-cbb64ac3d964 h1:y5HC9v93H5EPKqaS1UYVg1uYah5Xf51mBfIoWehClUQ= | 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.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 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= | ||||||
| github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= | 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.7.2 h1:Y2o6urb7Eule09PjlhQRGNsqRfPmYI3KKQLFpCAV3+o= | ||||||
| github.com/elazarl/goproxy v1.4.0/go.mod h1:X/5W/t+gzDyLfHW4DrMdpjqYjpXsURlBt9lpBDxZZZQ= | 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 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= | ||||||
| github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= | github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= | ||||||
| github.com/fatih/camelcase v1.0.0 h1:hxNvNX/xYBp0ovncs8WyWZrOrpBNub/JfaMvbURyft8= | 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-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 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-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 h1:/MD3lCrGjCen5WfEAzKg00MJJffKhC8gzS80ycmCi60= | ||||||
| github.com/go-git/go-git/v5 v5.14.0/go.mod h1:Z5Xhoia5PcWA3NF8vRLURn9E5FRhSl7dGj9ItW3Wk5k= | 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= | 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/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 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= | ||||||
| github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= | 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.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= | ||||||
| github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | 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 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= | ||||||
| github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= | 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= | 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/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 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= | ||||||
| github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= | 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.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= | ||||||
| github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= | 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 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8= | ||||||
| github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= | 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= | 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/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 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= | ||||||
| github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= | 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/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= | ||||||
| go.opentelemetry.io/otel v1.32.0/go.mod h1:00DCVSB0RQcnzlwyTfqtxSm+DRr9hpYrHjNGiBHVQIg= | go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= | ||||||
| go.opentelemetry.io/otel/metric v1.32.0 h1:xV2umtmNcThh2/a/aCP+h64Xx5wsj8qqnkYZktzNa0M= | go.opentelemetry.io/otel v1.34.0 h1:zRLXxLCgL1WyKsPVrgbSdMN4c0FMkDAskSTQP+0hdUY= | ||||||
| go.opentelemetry.io/otel/metric v1.32.0/go.mod h1:jH7CIbbK6SH2V2wE16W05BHCtIDzauciCRLoc/SyMv8= | go.opentelemetry.io/otel v1.34.0/go.mod h1:OWFPOQ+h4G8xpyjgqo4SxJYdDQ/qmRH+wivy7zzx9oI= | ||||||
| go.opentelemetry.io/otel/sdk v1.32.0 h1:RNxepc9vK59A8XsgZQouW8ue8Gkb4jpWtJm9ge5lEG4= | go.opentelemetry.io/otel/metric v1.34.0 h1:+eTR3U0MyfWjRDhmFMxe2SsW64QrZ84AOhvqS7Y+PoQ= | ||||||
| go.opentelemetry.io/otel/sdk v1.32.0/go.mod h1:LqgegDBjKMmb2GC6/PrTnteJG39I8/vJCAP9LlJXEjU= | go.opentelemetry.io/otel/metric v1.34.0/go.mod h1:CEDrp0fy2D0MvkXE+dPV7cMi8tWZwX3dmaIhwPOaqHE= | ||||||
| go.opentelemetry.io/otel/sdk/metric v1.32.0 h1:rZvFnvmvawYb0alrYkjraqJq0Z4ZUJAiyYCU9snn1CU= | go.opentelemetry.io/otel/sdk v1.34.0 h1:95zS4k/2GOy069d321O8jWgYsW3MzVV+KuSPKp7Wr1A= | ||||||
| go.opentelemetry.io/otel/sdk/metric v1.32.0/go.mod h1:PWeZlq0zt9YkYAp3gjKZ0eicRYvOh1Gd+X99x6GHpCQ= | go.opentelemetry.io/otel/sdk v1.34.0/go.mod h1:0e/pNiaMAqaykJGKbi+tSjWfNNHMTxoC9qANsCzbyxU= | ||||||
| go.opentelemetry.io/otel/trace v1.32.0 h1:WIC9mYrXf8TmY/EXuULKc8hR17vE+Hjv2cssQDe03fM= | go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce1EK0Gyvahk= | ||||||
| go.opentelemetry.io/otel/trace v1.32.0/go.mod h1:+i4rkvCraA+tG6AzwloGaCtkx53Fa+L+V8e9a7YvhT8= | 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.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 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34= | ||||||
| golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc= | 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 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8= | ||||||
| golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY= | 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.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 h1:1zLorHbz+LYj7MQlSf1+2tPIIgibq2eL5xkrGk6f+2c= | ||||||
| golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= | 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-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-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-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-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-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.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 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= | ||||||
| golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= | 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.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= | ||||||
| golang.org/x/term v0.29.0 h1:L6pJp37ocefwRRtYPKSWOWzOtWSxVajvz2ldH/xi3iU= | golang.org/x/term v0.30.0 h1:PQ39fJZ+mfadBm0y5WlL4vlM7Sx1Hgf13sMIY2+QS9Y= | ||||||
| golang.org/x/term v0.29.0/go.mod h1:6bl4lRlvVuDgSf3179VpIxBF0o10JUpXWOnI7nErv7s= | 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.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 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= | ||||||
| golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= | 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= | 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 h1:iK2jbkWL86DXjEx0qiHcRE9dE4/Ahua5k6V8OWFb//c= | ||||||
| google.golang.org/genproto/googleapis/rpc v0.0.0-20250313205543-e70fdf4c4cb4/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I= | 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 h1:kF77BGdPTQ4/JZWMlb9VpJ5pa25aqvVqogsxNHHdeBg= | ||||||
| google.golang.org/grpc v1.71.0/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= | 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= | google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= | ||||||
|  |  | ||||||
|  | @ -1,7 +1,6 @@ | ||||||
| package dummy | package dummy | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"github.com/criyle/go-judge/envexec" |  | ||||||
| 	"github.com/joint-online-judge/JOJ3/internal/stage" | 	"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 | 	var res []stage.ExecutorResult | ||||||
| 	for range cmds { | 	for range cmds { | ||||||
| 		res = append(res, stage.ExecutorResult{ | 		res = append(res, stage.ExecutorResult{ | ||||||
| 			Status:     stage.Status(envexec.StatusAccepted), | 			Status:     stage.StatusAccepted, | ||||||
| 			ExitStatus: 0, | 			ExitStatus: 0, | ||||||
| 			Error:      "", | 			Error:      "", | ||||||
| 			Time:       0, | 			Time:       0, | ||||||
|  |  | ||||||
|  | @ -11,7 +11,6 @@ import ( | ||||||
| 	"syscall" | 	"syscall" | ||||||
| 	"time" | 	"time" | ||||||
| 
 | 
 | ||||||
| 	"github.com/criyle/go-judge/envexec" |  | ||||||
| 	"github.com/joint-online-judge/JOJ3/internal/stage" | 	"github.com/joint-online-judge/JOJ3/internal/stage" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
|  | @ -23,7 +22,7 @@ func (e *Local) generateResult( | ||||||
| 	stdoutBuffer, stderrBuffer bytes.Buffer, | 	stdoutBuffer, stderrBuffer bytes.Buffer, | ||||||
| ) stage.ExecutorResult { | ) stage.ExecutorResult { | ||||||
| 	result := stage.ExecutorResult{ | 	result := stage.ExecutorResult{ | ||||||
| 		Status:     stage.Status(envexec.StatusAccepted), | 		Status:     stage.StatusAccepted, | ||||||
| 		ExitStatus: processState.ExitCode(), | 		ExitStatus: processState.ExitCode(), | ||||||
| 		Error:      "", | 		Error:      "", | ||||||
| 		Time: func() uint64 { | 		Time: func() uint64 { | ||||||
|  | @ -59,10 +58,10 @@ func (e *Local) generateResult( | ||||||
| 
 | 
 | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		if exitErr, ok := err.(*exec.ExitError); ok { | 		if exitErr, ok := err.(*exec.ExitError); ok { | ||||||
| 			result.Status = stage.Status(envexec.StatusNonzeroExitStatus) | 			result.Status = stage.StatusNonzeroExitStatus | ||||||
| 			result.Error = exitErr.Error() | 			result.Error = exitErr.Error() | ||||||
| 		} else { | 		} else { | ||||||
| 			result.Status = stage.Status(envexec.StatusInternalError) | 			result.Status = stage.StatusInternalError | ||||||
| 			result.Error = err.Error() | 			result.Error = err.Error() | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  | @ -75,7 +74,7 @@ func (e *Local) generateResult( | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	if err := handleCopyOut(&result, cmd); err != nil { | 	if err := handleCopyOut(&result, cmd); err != nil { | ||||||
| 		result.Status = stage.Status(envexec.StatusFileError) | 		result.Status = stage.StatusFileError | ||||||
| 		result.Error = err.Error() | 		result.Error = err.Error() | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | @ -146,7 +145,7 @@ func (e *Local) Run(cmds []stage.Cmd) ([]stage.ExecutorResult, error) { | ||||||
| 			case <-time.After(duration): | 			case <-time.After(duration): | ||||||
| 				_ = execCmd.Process.Kill() | 				_ = execCmd.Process.Kill() | ||||||
| 				result := stage.ExecutorResult{ | 				result := stage.ExecutorResult{ | ||||||
| 					Status:  stage.Status(envexec.StatusTimeLimitExceeded), | 					Status:  stage.StatusTimeLimitExceeded, | ||||||
| 					Error:   "", | 					Error:   "", | ||||||
| 					Files:   map[string]string{}, | 					Files:   map[string]string{}, | ||||||
| 					FileIDs: map[string]string{}, | 					FileIDs: map[string]string{}, | ||||||
|  |  | ||||||
|  | @ -6,7 +6,6 @@ import ( | ||||||
| 	"os" | 	"os" | ||||||
| 	"strings" | 	"strings" | ||||||
| 
 | 
 | ||||||
| 	"github.com/criyle/go-judge/envexec" |  | ||||||
| 	"github.com/joint-online-judge/JOJ3/internal/stage" | 	"github.com/joint-online-judge/JOJ3/internal/stage" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
|  | @ -37,7 +36,7 @@ func (*Diff) Run(results []stage.ExecutorResult, confAny any) ( | ||||||
| 		score := 0 | 		score := 0 | ||||||
| 		comment := "" | 		comment := "" | ||||||
| 		if conf.FailOnNotAccepted && | 		if conf.FailOnNotAccepted && | ||||||
| 			result.Status != stage.Status(envexec.StatusAccepted) { | 			result.Status != stage.StatusAccepted { | ||||||
| 			if conf.ForceQuitOnFailed { | 			if conf.ForceQuitOnFailed { | ||||||
| 				forceQuit = true | 				forceQuit = true | ||||||
| 			} | 			} | ||||||
|  |  | ||||||
|  | @ -5,7 +5,6 @@ import ( | ||||||
| 	"fmt" | 	"fmt" | ||||||
| 	"log/slog" | 	"log/slog" | ||||||
| 
 | 
 | ||||||
| 	"github.com/criyle/go-judge/envexec" |  | ||||||
| 	"github.com/joint-online-judge/JOJ3/internal/stage" | 	"github.com/joint-online-judge/JOJ3/internal/stage" | ||||||
| 	"github.com/joint-online-judge/JOJ3/pkg/healthcheck" | 	"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] | 	stdout := executorResult.Files[conf.Stdout] | ||||||
| 	stderr := executorResult.Files[conf.Stderr] | 	stderr := executorResult.Files[conf.Stderr] | ||||||
| 	slog.Debug("healthcheck files", "stdout", stdout, "stderr", stderr) | 	slog.Debug("healthcheck files", "stdout", stdout, "stderr", stderr) | ||||||
| 	if executorResult.Status != stage.Status(envexec.StatusAccepted) { | 	if executorResult.Status != stage.StatusAccepted { | ||||||
| 		return stage.ParserResult{ | 		return stage.ParserResult{ | ||||||
| 			Score: 0, | 			Score: 0, | ||||||
| 			Comment: fmt.Sprintf( | 			Comment: fmt.Sprintf( | ||||||
|  |  | ||||||
|  | @ -3,7 +3,6 @@ package resultstatus | ||||||
| import ( | import ( | ||||||
| 	"fmt" | 	"fmt" | ||||||
| 
 | 
 | ||||||
| 	"github.com/criyle/go-judge/envexec" |  | ||||||
| 	"github.com/joint-online-judge/JOJ3/internal/stage" | 	"github.com/joint-online-judge/JOJ3/internal/stage" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
|  | @ -19,7 +18,7 @@ func (*ResultStatus) Run(results []stage.ExecutorResult, confAny any) ( | ||||||
| 	var res []stage.ParserResult | 	var res []stage.ParserResult | ||||||
| 	for _, result := range results { | 	for _, result := range results { | ||||||
| 		comment := conf.Comment | 		comment := conf.Comment | ||||||
| 		if result.Status != stage.Status(envexec.StatusAccepted) { | 		if result.Status != stage.StatusAccepted { | ||||||
| 			score = 0 | 			score = 0 | ||||||
| 			comment = fmt.Sprintf( | 			comment = fmt.Sprintf( | ||||||
| 				"Unexpected executor status: `%s`.\n", result.Status, | 				"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" | 	"encoding/json" | ||||||
| 	"fmt" | 	"fmt" | ||||||
| 	"strconv" | 	"strconv" | ||||||
| 
 |  | ||||||
| 	"github.com/criyle/go-judge/envexec" |  | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| // copied from https://github.com/criyle/go-judge/blob/master/cmd/go-judge/model/model.go
 | // 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
 | // CmdFile defines file from multiple source including local / memory / cached or pipe collector
 | ||||||
| type CmdFile struct { | type CmdFile struct { | ||||||
| 	Src       *string `json:"src"` | 	Src       *string `json:"src"` | ||||||
|  | @ -82,30 +74,6 @@ type Request struct { | ||||||
| 	PipeMapping []PipeMap `json:"pipeMapping"` | 	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
 | // ExecutorResult defines single command result
 | ||||||
| type ExecutorResult struct { | type ExecutorResult struct { | ||||||
| 	Status     Status            `json:"status"` | 	Status     Status            `json:"status"` | ||||||
|  | @ -171,10 +139,10 @@ func (r ExecutorResult) MarshalJSON() ([]byte, error) { | ||||||
| 
 | 
 | ||||||
| func SummarizeExecutorResults(results []ExecutorResult) ExecutorResultSummary { | func SummarizeExecutorResults(results []ExecutorResult) ExecutorResultSummary { | ||||||
| 	var summary ExecutorResultSummary | 	var summary ExecutorResultSummary | ||||||
| 	summary.Status = Status(envexec.StatusAccepted) | 	summary.Status = StatusAccepted | ||||||
| 	for _, result := range results { | 	for _, result := range results { | ||||||
| 		if result.Status != Status(envexec.StatusAccepted) && | 		if result.Status != StatusAccepted && | ||||||
| 			summary.Status == Status(envexec.StatusAccepted) { | 			summary.Status == StatusAccepted { | ||||||
| 			summary.Status = result.Status | 			summary.Status = result.Status | ||||||
| 		} | 		} | ||||||
| 		if result.ExitStatus != 0 && summary.ExitStatus == 0 { | 		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