diff options
author | Marc-André Lureau <marcandre.lureau@redhat.com> | 2019-10-17 12:47:37 +0200 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2019-10-22 20:48:24 +0300 |
commit | 1ed70e22b9e42b5710e52252ce76212d79737186 (patch) | |
tree | bf5fd6b1b69a33ce26b3bcdbc38c8e80a45933ff /mesonbuild/scripts | |
parent | cce172432be30233e9876264c259342d2a2006ad (diff) | |
download | meson-1ed70e22b9e42b5710e52252ce76212d79737186.zip meson-1ed70e22b9e42b5710e52252ce76212d79737186.tar.gz meson-1ed70e22b9e42b5710e52252ce76212d79737186.tar.bz2 |
Add source tags targets
Diffstat (limited to 'mesonbuild/scripts')
-rw-r--r-- | mesonbuild/scripts/tags.py | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/mesonbuild/scripts/tags.py b/mesonbuild/scripts/tags.py new file mode 100644 index 0000000..431bb5f --- /dev/null +++ b/mesonbuild/scripts/tags.py @@ -0,0 +1,51 @@ +# Copyright 2019 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. + +import os +import subprocess +from pathlib import Path + + +def ls_as_bytestream(): + if os.path.exists('.git'): + return subprocess.run(['git', 'ls-tree', '-r', '--name-only', 'HEAD'], + stdout=subprocess.PIPE).stdout + + files = [str(p) for p in Path('.').glob('**/*') + if not p.is_dir() and + not next((x for x in p.parts if x.startswith('.')), None)] + return '\n'.join(files).encode() + + +def cscope(): + ls = b'\n'.join([b'"%s"' % f for f in ls_as_bytestream().split()]) + return subprocess.run(['cscope', '-v', '-b', '-i-'], input=ls).returncode + + +def ctags(): + ls = ls_as_bytestream() + return subprocess.run(['ctags', '-L-'], input=ls).returncode + + +def etags(): + ls = ls_as_bytestream() + return subprocess.run(['etags', '-'], input=ls).returncode + + +def run(args): + tool_name = args[0] + srcdir_name = args[1] + os.chdir(srcdir_name) + assert tool_name in ['cscope', 'ctags', 'etags'] + return globals()[tool_name]() |