aboutsummaryrefslogtreecommitdiff
path: root/mesonrewriter.py
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2016-12-04 01:08:13 +0200
committerJussi Pakkanen <jpakkane@gmail.com>2016-12-04 01:08:13 +0200
commit90b038383dd33bdef6f1ee03350b16e2b8c8a20e (patch)
treee311ba0afcf7bb31b5d955b92bee4ced6728cd05 /mesonrewriter.py
parent2168860a1ed9bb6744622d9d097c347e0193fee0 (diff)
downloadmeson-90b038383dd33bdef6f1ee03350b16e2b8c8a20e.zip
meson-90b038383dd33bdef6f1ee03350b16e2b8c8a20e.tar.gz
meson-90b038383dd33bdef6f1ee03350b16e2b8c8a20e.tar.bz2
Renamed rewriter.
Diffstat (limited to 'mesonrewriter.py')
-rwxr-xr-xmesonrewriter.py63
1 files changed, 63 insertions, 0 deletions
diff --git a/mesonrewriter.py b/mesonrewriter.py
new file mode 100755
index 0000000..b7aaadb
--- /dev/null
+++ b/mesonrewriter.py
@@ -0,0 +1,63 @@
+#!/usr/bin/env python3
+# Copyright 2016 The Meson development team
+
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+
+# http://www.apache.org/licenses/LICENSE-2.0
+
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# This class contains the basic functionality needed to run any interpreter
+# or an interpreter-based tool.
+
+# This tool is used to manipulate an existing Meson build definition.
+#
+# - add a file to a target
+# - remove files from a target
+# - move targets
+# - reindent?
+
+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__':
+ 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:
+ 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'):
+ mlog.log(mlog.red('\nMeson encountered an error in file %s, line %d, column %d:' % (e.file, e.lineno, e.colno)))
+ else:
+ mlog.log(mlog.red('\nMeson encountered an error:'))
+ mlog.log(e)
+ else:
+ traceback.print_exc()
+ sys.exit(1)