Skip to content

Commit a8b6581

Browse files
committed
Fix imports, host and port cmdline parameters
1 parent 84913f2 commit a8b6581

File tree

6 files changed

+50
-29
lines changed

6 files changed

+50
-29
lines changed

README.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
# Pythonized ComputerCraft API
22

3+
```
4+
python -m computercraft.server
5+
```
6+
37
TODO:
4-
- add host and port cmdline parameters for server
58
- use current dir for programs

computercraft/errors.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
class TurtleException(Exception):
1+
class CommandException(Exception):
22
pass
33

44

computercraft/server.py

Lines changed: 40 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -6,27 +6,29 @@
66
from os.path import getmtime, join, dirname, abspath
77
from os import listdir
88
import importlib
9-
from subapis.root import RootAPIMixin
10-
from common import LuaException
11-
12-
from subapis.colors import ColorsAPI
13-
from subapis.commands import CommandsAPI
14-
from subapis.disk import DiskAPI
15-
from subapis.fs import FSAPI
16-
from subapis.gps import GpsAPI
17-
from subapis.help import HelpAPI
18-
from subapis.keys import KeysAPI
19-
from subapis.multishell import MultishellAPI
20-
from subapis.os import OSAPI
21-
from subapis.peripheral import PeripheralAPI
22-
from subapis.rednet import RednetAPI
23-
from subapis.redstone import RedstoneAPI
24-
from subapis.settings import SettingsAPI
25-
from subapis.shell import ShellAPI
26-
from subapis.term import TermAPI
27-
from subapis.textutils import TextutilsAPI
28-
from subapis.turtle import TurtleAPI
29-
from subapis.window import WindowAPI
9+
import argparse
10+
11+
from .subapis.root import RootAPIMixin
12+
from .errors import LuaException
13+
14+
from .subapis.colors import ColorsAPI
15+
from .subapis.commands import CommandsAPI
16+
from .subapis.disk import DiskAPI
17+
from .subapis.fs import FSAPI
18+
from .subapis.gps import GpsAPI
19+
from .subapis.help import HelpAPI
20+
from .subapis.keys import KeysAPI
21+
from .subapis.multishell import MultishellAPI
22+
from .subapis.os import OSAPI
23+
from .subapis.peripheral import PeripheralAPI
24+
from .subapis.rednet import RednetAPI
25+
from .subapis.redstone import RedstoneAPI
26+
from .subapis.settings import SettingsAPI
27+
from .subapis.shell import ShellAPI
28+
from .subapis.term import TermAPI
29+
from .subapis.textutils import TextutilsAPI
30+
from .subapis.turtle import TurtleAPI
31+
from .subapis.window import WindowAPI
3032

3133

3234
THIS_DIR = dirname(abspath(__file__))
@@ -202,6 +204,10 @@ async def taskresult(request):
202204
def backdoor(request):
203205
with open(LUA_FILE, 'r') as f:
204206
fcont = f.read()
207+
fcont = fcont.replace(
208+
"local url = 'http://127.0.0.1:4343/'",
209+
"local url = '{}://{}/'".format(request.scheme, request.host)
210+
)
205211
return web.Response(text=fcont)
206212

207213

@@ -236,13 +242,25 @@ def enable_request_logging():
236242

237243
def main():
238244
# enable_request_logging()
245+
246+
parser = argparse.ArgumentParser()
247+
parser.add_argument('--host')
248+
parser.add_argument('--port', type=int)
249+
args = parser.parse_args()
250+
251+
app_kw = {}
252+
if args.host is not None:
253+
app_kw['host'] = args.host
254+
if args.port is not None:
255+
app_kw['port'] = args.port
256+
239257
asyncio.ensure_future(module_reloader())
240258
app = web.Application()
241259
app.router.add_get('/', backdoor)
242260
app.router.add_post('/start/{turtle}/{program}/', start)
243261
app.router.add_post('/gettask/{turtle}/', gettask)
244262
app.router.add_post('/taskresult/{turtle}/{task_id}/', taskresult)
245-
web.run_app(app, port=4343)
263+
web.run_app(app, **app_kw)
246264

247265

248266
if __name__ == '__main__':

computercraft/subapis/base.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from common import TurtleException, ApiException
1+
from ..errors import CommandException, ApiException
22
from typing import Union
33

44

@@ -68,7 +68,7 @@ def bool_success(v):
6868
return
6969
if len(v) == 2 and v[0] is False:
7070
assert isinstance(v[1], str)
71-
raise TurtleException(v[1])
71+
raise CommandException(v[1])
7272
raise ApiException('Bad return value: {}'.format(v))
7373

7474

computercraft/subapis/root.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from subapis.base import nil_return, bool_return, lua_args, str_return
1+
from .base import nil_return, bool_return, lua_args, str_return
22

33

44
class RootAPIMixin:

computercraft/subapis/turtle.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from typing import Optional
22
from .base import BaseSubAPI, bool_success, number_return, LuaNum, int_return, bool_return, opt_dict_return
3-
from common import TurtleException
3+
from ..errors import CommandException
44

55

66
class TurtleAPI(BaseSubAPI):
@@ -89,7 +89,7 @@ async def _inspect_result(self, v):
8989
if not r and data == 'No block to inspect':
9090
return None
9191
if not r:
92-
raise TurtleException(data)
92+
raise CommandException(data)
9393
return data
9494

9595
async def inspect(self) -> Optional[dict]:

0 commit comments

Comments
 (0)