mirror of
https://github.com/evennia/evennia.git
synced 2026-04-07 00:45:22 +02:00
55 lines
1.8 KiB
Python
55 lines
1.8 KiB
Python
"""
|
|
Entrypoint for calling Evennia as a module, with
|
|
|
|
python -m evennia (linux/unix)
|
|
py -m evennia (windows)
|
|
|
|
Notably, this should work also if evennia is installed with pip but
|
|
the executable is not on the path (so the plain `evennia` command
|
|
doesn't work).
|
|
|
|
For Windows, this will try to inject the evennia launcher into the executable path
|
|
to make the `evennia` command available.
|
|
|
|
"""
|
|
|
|
import os
|
|
import sys
|
|
|
|
from .server.evennia_launcher import main
|
|
|
|
if os.name == "nt":
|
|
# we are on windows; we aim to place the executable in the
|
|
# same place as the python file (for a virtualenv, this
|
|
# would be the virtualenv's Scripts\ folder).
|
|
binpath = os.path.join(sys.prefix, os.path.dirname(sys.executable))
|
|
pyscript = """# auto-generated by py -m evennia (__main__.py)
|
|
import os
|
|
import sys
|
|
from evennia.server.evennia_launcher import main
|
|
sys.path.insert(0, os.path.abspath(os.getcwd()))
|
|
sys.path.insert(0, os.path.join(sys.prefix, "Lib", "site-packages"))
|
|
main()
|
|
"""
|
|
pyscript_path = os.path.join(binpath, "evennia_launcher.py")
|
|
|
|
batfile = f'@"{sys.executable}" "{pyscript_path}" %*'
|
|
batfile_path = os.path.join(binpath, "evennia.bat")
|
|
|
|
if not os.path.exists(pyscript_path):
|
|
try:
|
|
with open(pyscript_path, "w") as fil:
|
|
fil.write(pyscript)
|
|
print(f"... Created launcher {pyscript_path}.")
|
|
except FileNotFoundError:
|
|
print("Failed to add evennia_launcher.py to {pyscript_path}.")
|
|
if not os.path.exists(batfile_path):
|
|
try:
|
|
with open(batfile_path, "w") as fil:
|
|
fil.write(batfile)
|
|
print(f"... Created batfile {batfile_path}.")
|
|
except FileNotFoundError:
|
|
print("Failed to add evennia.bat to {batfile_path}.")
|
|
|
|
# forward to the evennia launcher itself
|
|
main()
|