41 lines
1,002 B
Python
41 lines
1,002 B
Python
#!/usr/bin/env python2
|
|
#
|
|
# Extract unique DUK_USE_xxx flags from current code base:
|
|
#
|
|
# $ python extract_unique_options.py ../src-input/*.c ../src-input/*.h ../src-input/*.h.in
|
|
#
|
|
|
|
import os, sys, re
|
|
|
|
# DUK_USE_xxx/DUK_OPT_xxx are used as placeholders and not matched
|
|
# (only uppercase allowed)
|
|
re_use = re.compile(r'DUK_USE_[A-Z0-9_]+')
|
|
re_opt = re.compile(r'DUK_OPT_[A-Z0-9_]+') # removed in Duktape 2.x; match anyway just in case
|
|
|
|
def main():
|
|
uses = {}
|
|
opts = {}
|
|
|
|
for fn in sys.argv[1:]:
|
|
f = open(fn, 'rb')
|
|
for line in f:
|
|
for t in re.findall(re_use, line):
|
|
if t[-1] != '_': # skip e.g. 'DUK_USE_'
|
|
uses[t] = True
|
|
for t in re.findall(re_opt, line):
|
|
if t[-1] != '_':
|
|
opts[t] = True
|
|
f.close()
|
|
|
|
k = opts.keys()
|
|
k.sort()
|
|
for i in k:
|
|
print(i)
|
|
|
|
k = uses.keys()
|
|
k.sort()
|
|
for i in k:
|
|
print(i)
|
|
|
|
if __name__ == '__main__':
|
|
main()
|