Skip to content

Commit 9e946e1

Browse files
authored
Merge pull request #20 from alokdangre/cli
Added cli feature for rustcoder
2 parents 0e6c505 + 653f5f1 commit 9e946e1

File tree

6 files changed

+771
-39
lines changed

6 files changed

+771
-39
lines changed

.github/mock_server.py

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
#!/usr/bin/env python3
2+
"""
3+
Mock server for testing CLI commands in CI
4+
"""
5+
6+
import http.server
7+
import socketserver
8+
import json
9+
import threading
10+
import time
11+
import sys
12+
13+
class MockHandler(http.server.BaseHTTPRequestHandler):
14+
def do_GET(self):
15+
if self.path == '/project/test-123':
16+
self.send_response(200)
17+
self.send_header('Content-Type', 'application/json')
18+
self.end_headers()
19+
response = {
20+
'project_id': 'test-123',
21+
'status': 'completed',
22+
'message': 'Test project',
23+
'files': ['Cargo.toml', 'src/main.rs']
24+
}
25+
self.wfile.write(json.dumps(response).encode())
26+
elif self.path == '/project/test-123/files/Cargo.toml':
27+
self.send_response(200)
28+
self.send_header('Content-Type', 'text/plain')
29+
self.end_headers()
30+
self.wfile.write(b'[package]\nname = "test"\nversion = "0.1.0"')
31+
elif self.path == '/project/test-123/files/src/main.rs':
32+
self.send_response(200)
33+
self.send_header('Content-Type', 'text/plain')
34+
self.end_headers()
35+
self.wfile.write(b'fn main() { println!("Hello"); }')
36+
else:
37+
self.send_response(404)
38+
self.end_headers()
39+
40+
def do_POST(self):
41+
if self.path == '/compile':
42+
self.send_response(200)
43+
self.send_header('Content-Type', 'application/json')
44+
self.end_headers()
45+
response = {'success': True, 'run_output': 'Hello'}
46+
self.wfile.write(json.dumps(response).encode())
47+
elif self.path == '/compile-and-fix':
48+
self.send_response(200)
49+
self.send_header('Content-Type', 'application/json')
50+
self.end_headers()
51+
response = {'success': True, 'combined_text': '[filename: src/main.rs]\nfn main() { println!("Fixed!"); }'}
52+
self.wfile.write(json.dumps(response).encode())
53+
else:
54+
self.send_response(404)
55+
self.end_headers()
56+
57+
def log_message(self, format, *args):
58+
pass
59+
60+
def main():
61+
port = 8001
62+
if len(sys.argv) > 1:
63+
port = int(sys.argv[1])
64+
65+
with socketserver.TCPServer(('', port), MockHandler) as httpd:
66+
print(f'Mock server running on port {port}')
67+
server_thread = threading.Thread(target=httpd.serve_forever)
68+
server_thread.daemon = True
69+
server_thread.start()
70+
71+
try:
72+
while True:
73+
time.sleep(1)
74+
except KeyboardInterrupt:
75+
print("Shutting down mock server...")
76+
77+
if __name__ == '__main__':
78+
main()

0 commit comments

Comments
 (0)