Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 11 additions & 4 deletions dcs/liveries/livery.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
from zipfile import ZipFile

import dcs.lua
from lupa import LuaRuntime


def _attempt_read_from_filestream(filestream: bytes) -> Optional[str]:
Expand Down Expand Up @@ -80,18 +81,24 @@ def from_lua(code: str, path: str) -> Optional[Livery]:
# liveries to be suddenly unparseable), and so far we aren't interested in the
# values of liveries that rely on undefined variables, just assume those are all
# the empty string and move on.
lua = LuaRuntime()
try:
data = dcs.lua.loads(code, unknown_variable_lookup=lambda _: "")
lua.execute(code)
data = lua.globals()
except SyntaxError:
logging.exception("Could not parse livery definition at %s", path)
return None
livery_name = data.get("name", path_id)
countries_table = data.get("countries")
livery_name = data.name
if livery_name is None:
livery_name = path_id
countries_table = data.countries
if countries_table is None:
countries = None
else:
countries = set(countries_table.values())
order = data.get("order", 0)
order = data.order
if order is None:
order = 0

order = None if path_id == "default" else order
if order is not None and not isinstance(order, int):
Expand Down
1 change: 1 addition & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
lupa
pyproj