AVsitter/AVsitter2/build-aux.py
Sei Lisa d23699fbe6 Change the strategy for the U+FFFD separator handling.
Use a global variable instead. In SL, the optimizer does the replacement automatically, therefore no memory penalty is incurred. In OpenSim, the variable is assigned at run time with llUnescapeURL. The OpenSim separator is also changed from U+001F to U+007F, because most control characters under U+0020 cause problems with exporting when present in script memory.

Fixes #41.
2017-09-15 17:43:48 +02:00

83 lines
1.9 KiB
Python

#!/usr/bin/env python
# coding: utf8
import sys
def prterr(s):
sys.stderr.write(s + "\n")
def usage():
"""Show usage help."""
prterr(u"""Usage:
python build-aux.py <command> [<args>]
Where command can be:
oss-process <file>:
Processes the given file for OpenSim and outputs the result to
standard output. If <file> is not given, read from standard input.
rm <file> [<file>...]
Deletes the given list of files.
""")
def rm(filelist):
"""Delete the given list of files, ignoring 'file not found' errors."""
import os
for i in filelist:
try:
os.unlink(i)
except OSError as e:
if e.errno != 2:
raise
return 0
def oss_process(filename):
"""Process a file for OpenSim Scripting."""
import re
# Regex that replaces a line with its OSS version when one's specified.
os_re = re.compile(r'^( *)(.*?)// ?OSS::(.*)$', re.MULTILINE)
if filename is not None:
f = open(filename, "r");
else:
f = sys.stdin
try:
s = f.read()
finally:
if filename is not None:
f.close()
# UUIDs in OpenSim
s = s.replace('f2e0ed5e-6592-4199-901d-a659c324ca94',
'206fcbe2-47b3-41e8-98e6-8909595b8605')
s = s.replace('b30c9262-9abf-4cd1-9476-adcf5723c029',
'b88526b7-3966-43fd-ae76-1e39881c86aa')
# TODO: Replace LockGuard texture UUIDs
s = os_re.sub(r'\1\3', s)
sys.stdout.write(s)
return 0
def main(argc, argv):
if argc < 2:
usage()
return 0
cmd = argv[1]
if cmd == 'rm':
return rm(argv[2:])
if cmd == 'oss-process':
if argc > 3:
usage()
return 1
filename = argv[2] if argc == 3 else None
return oss_process(filename)
usage()
return 1
ret = main(len(sys.argv), sys.argv)
if ret is not None and ret > 0:
sys.exit(ret)