Make evennia doc-build not require gamedir
This commit is contained in:
parent
76d087ffb0
commit
2227f16e17
4 changed files with 46 additions and 28 deletions
|
|
@ -176,28 +176,18 @@ ansi_clean = None
|
||||||
if not _no_autodoc:
|
if not _no_autodoc:
|
||||||
# we must set up Evennia and its paths for autodocs to work
|
# we must set up Evennia and its paths for autodocs to work
|
||||||
|
|
||||||
EV_ROOT = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) # os.environ.get("EVDIR")
|
EV_ROOT = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
||||||
GAME_DIR = os.environ.get("EVGAMEDIR")
|
|
||||||
|
|
||||||
if not (EV_ROOT and GAME_DIR):
|
print(f"Evennia root: {EV_ROOT}, branch:")
|
||||||
err = (
|
|
||||||
"The EVDIR and EVGAMEDIR environment variables must be set to "
|
|
||||||
"the absolute paths to the evennia/ repo and an initialized "
|
|
||||||
"evennia gamedir respectively."
|
|
||||||
)
|
|
||||||
raise RuntimeError(err)
|
|
||||||
|
|
||||||
print("Evennia root: {}, Game dir: {}, branch:".format(EV_ROOT, GAME_DIR)),
|
|
||||||
import subprocess
|
import subprocess
|
||||||
subprocess.call(["git", "rev-parse", "--abbrev-ref", "HEAD"])
|
subprocess.call(["git", "rev-parse", "--abbrev-ref", "HEAD"])
|
||||||
subprocess.call("pwd")
|
subprocess.call("pwd")
|
||||||
|
|
||||||
sys.path.insert(1, EV_ROOT)
|
sys.path.insert(1, EV_ROOT)
|
||||||
sys.path.insert(1, GAME_DIR)
|
|
||||||
|
|
||||||
with cd(GAME_DIR):
|
with cd(EV_ROOT):
|
||||||
# set up Evennia so its sources can be parsed
|
# set up Evennia so its sources can be parsed
|
||||||
os.environ["DJANGO_SETTINGS_MODULE"] = "server.conf.settings"
|
os.environ["DJANGO_SETTINGS_MODULE"] = "evennia.settings_default"
|
||||||
|
|
||||||
import django # noqa
|
import django # noqa
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,7 @@ import importlib
|
||||||
evennia._init()
|
evennia._init()
|
||||||
|
|
||||||
from django.db import connection
|
from django.db import connection
|
||||||
|
from django.db.utils import OperationalError
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
|
||||||
from evennia.accounts.models import AccountDB
|
from evennia.accounts.models import AccountDB
|
||||||
|
|
@ -174,7 +175,7 @@ def _server_maintenance():
|
||||||
# ------------------------------------------------------------
|
# ------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
class Evennia(object):
|
class Evennia:
|
||||||
|
|
||||||
"""
|
"""
|
||||||
The main Evennia server handler. This object sets up the database and
|
The main Evennia server handler. This object sets up the database and
|
||||||
|
|
@ -205,7 +206,10 @@ class Evennia(object):
|
||||||
self.start_time = time.time()
|
self.start_time = time.time()
|
||||||
|
|
||||||
# initialize channelhandler
|
# initialize channelhandler
|
||||||
|
try:
|
||||||
channelhandler.CHANNELHANDLER.update()
|
channelhandler.CHANNELHANDLER.update()
|
||||||
|
except OperationalError:
|
||||||
|
print("channelhandler couldn't update - db not set up")
|
||||||
|
|
||||||
# wrap the SIGINT handler to make sure we empty the threadpool
|
# wrap the SIGINT handler to make sure we empty the threadpool
|
||||||
# even when we reload and we have long-running requests in queue.
|
# even when we reload and we have long-running requests in queue.
|
||||||
|
|
@ -616,7 +620,11 @@ class Evennia(object):
|
||||||
|
|
||||||
|
|
||||||
# Tell the system the server is starting up; some things are not available yet
|
# Tell the system the server is starting up; some things are not available yet
|
||||||
|
try:
|
||||||
ServerConfig.objects.conf("server_starting_mode", True)
|
ServerConfig.objects.conf("server_starting_mode", True)
|
||||||
|
except OperationalError:
|
||||||
|
print("Server server_starting_mode couldn't be set - database not set up.")
|
||||||
|
|
||||||
|
|
||||||
# twistd requires us to define the variable 'application' so it knows
|
# twistd requires us to define the variable 'application' so it knows
|
||||||
# what to execute from.
|
# what to execute from.
|
||||||
|
|
@ -728,4 +736,7 @@ for plugin_module in SERVER_SERVICES_PLUGIN_MODULES:
|
||||||
print(f"Could not load plugin module {plugin_module}")
|
print(f"Could not load plugin module {plugin_module}")
|
||||||
|
|
||||||
# clear server startup mode
|
# clear server startup mode
|
||||||
|
try:
|
||||||
ServerConfig.objects.conf("server_starting_mode", delete=True)
|
ServerConfig.objects.conf("server_starting_mode", delete=True)
|
||||||
|
except OperationalError:
|
||||||
|
print("Server server_starting_mode couldn't unset - db not set up.")
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@ import time
|
||||||
from calendar import monthrange
|
from calendar import monthrange
|
||||||
from datetime import datetime, timedelta
|
from datetime import datetime, timedelta
|
||||||
|
|
||||||
|
from django.db.utils import OperationalError
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from evennia import DefaultScript
|
from evennia import DefaultScript
|
||||||
from evennia.server.models import ServerConfig
|
from evennia.server.models import ServerConfig
|
||||||
|
|
@ -23,7 +24,12 @@ IGNORE_DOWNTIMES = settings.TIME_IGNORE_DOWNTIMES
|
||||||
|
|
||||||
|
|
||||||
# Only set if gametime_reset was called at some point.
|
# Only set if gametime_reset was called at some point.
|
||||||
|
try:
|
||||||
GAME_TIME_OFFSET = ServerConfig.objects.conf("gametime_offset", default=0)
|
GAME_TIME_OFFSET = ServerConfig.objects.conf("gametime_offset", default=0)
|
||||||
|
except OperationalError:
|
||||||
|
# the db is not initialized
|
||||||
|
print("Gametime offset could not load - db not set up.")
|
||||||
|
GAME_TIME_OFFSET = 0
|
||||||
|
|
||||||
# Common real-life time measure, in seconds.
|
# Common real-life time measure, in seconds.
|
||||||
# You should not change this.
|
# You should not change this.
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,7 @@ Example: To reach the search method 'get_object_with_account'
|
||||||
|
|
||||||
# Import the manager methods to be wrapped
|
# Import the manager methods to be wrapped
|
||||||
|
|
||||||
|
from django.db.utils import OperationalError
|
||||||
from django.contrib.contenttypes.models import ContentType
|
from django.contrib.contenttypes.models import ContentType
|
||||||
|
|
||||||
# limit symbol import from API
|
# limit symbol import from API
|
||||||
|
|
@ -44,13 +45,23 @@ __all__ = (
|
||||||
|
|
||||||
|
|
||||||
# import objects this way to avoid circular import problems
|
# import objects this way to avoid circular import problems
|
||||||
|
try:
|
||||||
ObjectDB = ContentType.objects.get(app_label="objects", model="objectdb").model_class()
|
ObjectDB = ContentType.objects.get(app_label="objects", model="objectdb").model_class()
|
||||||
AccountDB = ContentType.objects.get(app_label="accounts", model="accountdb").model_class()
|
AccountDB = ContentType.objects.get(app_label="accounts", model="accountdb").model_class()
|
||||||
ScriptDB = ContentType.objects.get(app_label="scripts", model="scriptdb").model_class()
|
ScriptDB = ContentType.objects.get(app_label="scripts", model="scriptdb").model_class()
|
||||||
Msg = ContentType.objects.get(app_label="comms", model="msg").model_class()
|
Msg = ContentType.objects.get(app_label="comms", model="msg").model_class()
|
||||||
Channel = ContentType.objects.get(app_label="comms", model="channeldb").model_class()
|
ChannelDB = ContentType.objects.get(app_label="comms", model="channeldb").model_class()
|
||||||
HelpEntry = ContentType.objects.get(app_label="help", model="helpentry").model_class()
|
HelpEntry = ContentType.objects.get(app_label="help", model="helpentry").model_class()
|
||||||
Tag = ContentType.objects.get(app_label="typeclasses", model="tag").model_class()
|
Tag = ContentType.objects.get(app_label="typeclasses", model="tag").model_class()
|
||||||
|
except OperationalError:
|
||||||
|
# this is a fallback used during tests/doc building
|
||||||
|
print("Couldn't initialize search managers - db not set up.")
|
||||||
|
from evennia.objects.models import ObjectDB
|
||||||
|
from evennia.accounts.models import AccountDB
|
||||||
|
from evennia.scripts.models import ScriptDB
|
||||||
|
from evennia.comms.models import Msg, ChannelDB
|
||||||
|
from evennia.help.models import HelpEntry
|
||||||
|
from evennia.typeclasses.tags import Tag
|
||||||
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------
|
# -------------------------------------------------------------------
|
||||||
|
|
@ -171,7 +182,7 @@ messages = search_messages
|
||||||
# exact - requires an exact ostring match (not case sensitive)
|
# exact - requires an exact ostring match (not case sensitive)
|
||||||
#
|
#
|
||||||
|
|
||||||
search_channel = Channel.objects.channel_search
|
search_channel = ChannelDB.objects.channel_search
|
||||||
search_channels = search_channel
|
search_channels = search_channel
|
||||||
channel_search = search_channel
|
channel_search = search_channel
|
||||||
channels = search_channels
|
channels = search_channels
|
||||||
|
|
@ -347,7 +358,7 @@ def search_channel_tag(key=None, category=None, tagtype=None, **kwargs):
|
||||||
matches were found.
|
matches were found.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
return Channel.objects.get_by_tag(key=key, category=category, tagtype=tagtype, **kwargs)
|
return ChannelDB.objects.get_by_tag(key=key, category=category, tagtype=tagtype, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
# search for tag objects (not the objects they are attached to
|
# search for tag objects (not the objects they are attached to
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue