Move gen-kotlin-build-file.sh to python
Kotlin common multiplatform sources support will require more complexity in gen-kotlin-build-file.sh, move it to python instead. Test: m checkbuild Change-Id: I02312160ad781877f1fec971168331c0dcecf136
This commit is contained in:
@@ -19,6 +19,8 @@
|
||||
|
||||
import argparse
|
||||
|
||||
from ninja_rsp import NinjaRspFileReader
|
||||
|
||||
|
||||
def check_action(check_type):
|
||||
"""
|
||||
@@ -91,74 +93,6 @@ def parse_args():
|
||||
return parser.parse_args()
|
||||
|
||||
|
||||
class NinjaRspFileReader:
|
||||
"""
|
||||
Reads entries from a Ninja rsp file. Ninja escapes any entries in the file that contain a
|
||||
non-standard character by surrounding the whole entry with single quotes, and then replacing
|
||||
any single quotes in the entry with the escape sequence '\''.
|
||||
"""
|
||||
|
||||
def __init__(self, filename):
|
||||
self.f = open(filename, 'r')
|
||||
self.r = self.character_reader(self.f)
|
||||
|
||||
def __iter__(self):
|
||||
return self
|
||||
|
||||
def character_reader(self, f):
|
||||
"""Turns a file into a generator that returns one character at a time."""
|
||||
while True:
|
||||
c = f.read(1)
|
||||
if c:
|
||||
yield c
|
||||
else:
|
||||
return
|
||||
|
||||
def __next__(self):
|
||||
entry = self.read_entry()
|
||||
if entry:
|
||||
return entry
|
||||
else:
|
||||
raise StopIteration
|
||||
|
||||
def read_entry(self):
|
||||
c = next(self.r, "")
|
||||
if not c:
|
||||
return ""
|
||||
elif c == "'":
|
||||
return self.read_quoted_entry()
|
||||
else:
|
||||
entry = c
|
||||
for c in self.r:
|
||||
if c == " " or c == "\n":
|
||||
break
|
||||
entry += c
|
||||
return entry
|
||||
|
||||
def read_quoted_entry(self):
|
||||
entry = ""
|
||||
for c in self.r:
|
||||
if c == "'":
|
||||
# Either the end of the quoted entry, or the beginning of an escape sequence, read the next
|
||||
# character to find out.
|
||||
c = next(self.r)
|
||||
if not c or c == " " or c == "\n":
|
||||
# End of the item
|
||||
return entry
|
||||
elif c == "\\":
|
||||
# Escape sequence, expect a '
|
||||
c = next(self.r)
|
||||
if c != "'":
|
||||
# Malformed escape sequence
|
||||
raise "malformed escape sequence %s'\\%s" % (entry, c)
|
||||
entry += "'"
|
||||
else:
|
||||
raise "malformed escape sequence %s'%s" % (entry, c)
|
||||
else:
|
||||
entry += c
|
||||
raise "unterminated quoted entry %s" % entry
|
||||
|
||||
|
||||
def write_project_xml(f, args):
|
||||
test_attr = "test='true' " if args.test else ""
|
||||
|
||||
|
Reference in New Issue
Block a user