aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/rewriter.py
diff options
context:
space:
mode:
authorDaniel Mensinger <daniel@mensinger-ka.de>2019-01-15 18:45:25 +0100
committerDaniel Mensinger <daniel@mensinger-ka.de>2019-01-22 16:09:34 +0100
commitccad493e85e46bf0e78cfac8b77b03b7be75a396 (patch)
tree255ebb2995f3db3a24bdc71bc327bb2f03f106f9 /mesonbuild/rewriter.py
parent72486afd08d66d6323c2113739dcfff74813058b (diff)
downloadmeson-ccad493e85e46bf0e78cfac8b77b03b7be75a396.zip
meson-ccad493e85e46bf0e78cfac8b77b03b7be75a396.tar.gz
meson-ccad493e85e46bf0e78cfac8b77b03b7be75a396.tar.bz2
Basic AST visitor pattern
Diffstat (limited to 'mesonbuild/rewriter.py')
-rw-r--r--mesonbuild/rewriter.py26
1 files changed, 11 insertions, 15 deletions
diff --git a/mesonbuild/rewriter.py b/mesonbuild/rewriter.py
index 37ed7ef..1495d23 100644
--- a/mesonbuild/rewriter.py
+++ b/mesonbuild/rewriter.py
@@ -23,7 +23,7 @@
# - move targets
# - reindent?
-import mesonbuild.astinterpreter
+from .ast import (AstInterpreter, AstVisitor)
from mesonbuild.mesonlib import MesonException
from mesonbuild import mlog
import sys, traceback
@@ -31,24 +31,20 @@ import sys, traceback
def add_arguments(parser):
parser.add_argument('--sourcedir', default='.',
help='Path to source directory.')
- parser.add_argument('--target', default=None,
- help='Name of target to edit.')
- parser.add_argument('--filename', default=None,
- help='Name of source file to add or remove to target.')
- parser.add_argument('commands', nargs='+')
+ parser.add_argument('-p', '--print', action='store_true', default=False, dest='print',
+ help='Print the parsed AST.')
def run(options):
- if options.target is None or options.filename is None:
- sys.exit("Must specify both target and filename.")
print('This tool is highly experimental, use with care.')
- rewriter = mesonbuild.astinterpreter.RewriterInterpreter(options.sourcedir, '')
+ rewriter = AstInterpreter(options.sourcedir, '')
try:
- if options.commands[0] == 'add':
- rewriter.add_source(options.target, options.filename)
- elif options.commands[0] == 'remove':
- rewriter.remove_source(options.target, options.filename)
- else:
- sys.exit('Unknown command: ' + options.commands[0])
+ rewriter.load_root_meson_file()
+ rewriter.sanity_check_ast()
+ rewriter.parse_project()
+ rewriter.run()
+
+ visitor = AstVisitor()
+ rewriter.ast.accept(visitor)
except Exception as e:
if isinstance(e, MesonException):
mlog.exception(e)