aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xmesonast.py28
1 files changed, 21 insertions, 7 deletions
diff --git a/mesonast.py b/mesonast.py
index e269b0c..b7aaadb 100755
--- a/mesonast.py
+++ b/mesonast.py
@@ -27,16 +27,30 @@ import mesonbuild.astinterpreter
from mesonbuild.mesonlib import MesonException
from mesonbuild import mlog
import sys, traceback
+import argparse
+
+parser = argparse.ArgumentParser()
+
+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='+')
if __name__ == '__main__':
- if len(sys.argv) == 1:
- source_root = 'test cases/common/1 trivial'
- else:
- source_root = sys.argv[1]
- ast = mesonbuild.astinterpreter.AstInterpreter(source_root, '')
+ options = parser.parse_args()
+ if options.target is None or options.filename is None:
+ sys.exit("Must specify both target and filename.")
+ ast = mesonbuild.astinterpreter.AstInterpreter(options.sourcedir, '')
try:
-# ast.add_source('trivialprog', 'newfile.c')
- ast.remove_source('trivialprog', 'newfile.c')
+ if options.commands[0] == 'add':
+ ast.add_source(options.target, options.filename)
+ elif options.commands[0] == 'remove':
+ ast.remove_source(options.target, options.filename)
+ else:
+ sys.exit('Unknown command: ' + options.commands[0])
except Exception as e:
if isinstance(e, MesonException):
if hasattr(e, 'file') and hasattr(e, 'lineno') and hasattr(e, 'colno'):