* `build` is an alias which on first use invokes `build-dir --build` to select a build directory, reconfigure the `build` alias, and invoke the `build` alias on the selected build directory. * `debug` is an alias to the installed system native debugger. * `build-dir` is a function to select a build directory by reconfiguring the `build` alias, it detects `build.ninja` or `Makefile` in the build directory and selects the appropriate `ninja` or `make` command. Depends on the `build-dir.py` Python script which uses the `pick` package to interactively select the build directory. * `build-run` is a function which builds the specified target then attempts to run it, making the assumption it resides in the `bin` subdirectory of the build directory. * `build-debug` is a function which build the specified tared then attempts to debug it using the system native debugger, making the assumption it resides in the `bin` subdirectory of the build directory.
47 lines
1.3 KiB
Python
Executable File
47 lines
1.3 KiB
Python
Executable File
#!/usr/bin/env python
|
||
"""The pick_build_dir command selects a build directory
|
||
|
||
The pick_build_dir command scans the current directory for directories starting
|
||
with ``build`` and prompts the user to select one from the list.
|
||
"""
|
||
|
||
from __future__ import print_function
|
||
|
||
from argparse import ArgumentParser
|
||
from os import listdir
|
||
from os.path import curdir, isdir
|
||
from sys import stderr
|
||
|
||
from pick import Picker
|
||
|
||
|
||
def main():
|
||
"""Main entry point to build-dir.py script."""
|
||
parser = ArgumentParser()
|
||
parser.add_argument('output')
|
||
parser.add_argument('--default', action='store_true')
|
||
args = parser.parse_args()
|
||
directories = []
|
||
for directory in listdir(curdir):
|
||
if isdir(directory) and directory.startswith('build'):
|
||
directories.append(directory)
|
||
if len(directories) == 0:
|
||
print('no build directories found', file=stderr)
|
||
exit(1)
|
||
build_dirs = sorted(directories)
|
||
if args.default:
|
||
build_dir = build_dirs[0]
|
||
else:
|
||
picker = Picker(build_dirs, 'Select a build directory:')
|
||
picker.register_custom_handler(ord(''), lambda _: exit(1))
|
||
build_dir, _ = picker.start()
|
||
with open(args.output, 'w') as output:
|
||
output.write(build_dir)
|
||
|
||
|
||
if __name__ == '__main__':
|
||
try:
|
||
main()
|
||
except KeyboardInterrupt:
|
||
exit(130)
|