58 lines
1.8 KiB
Python
Executable File
58 lines
1.8 KiB
Python
Executable File
#!/usr/bin/env python
|
|
|
|
"""
|
|
Finds all makefile projects in the given directories and allows to exclude
|
|
overlaps.
|
|
|
|
To get help on usage, possible options and their descriptions, use
|
|
the following command:
|
|
|
|
find.py --help
|
|
"""
|
|
|
|
import argparse
|
|
import os
|
|
import sys
|
|
|
|
|
|
def find(args):
|
|
result = []
|
|
for path in args.dirs:
|
|
for root, dirs, files in os.walk(path):
|
|
if args.makefile and 'Makefile' in files:
|
|
if args.no_overlaps and args.make and 'make' in dirs:
|
|
# Skip 'Makefile' because there is the 'make' subdir with
|
|
# more specific '*.make' makefiles.
|
|
continue
|
|
result.append(os.path.join(root, 'Makefile'))
|
|
if args.make and os.path.basename(root) == 'make':
|
|
result.extend(
|
|
os.path.join(root, make)
|
|
for make in files
|
|
if make.endswith('.make')
|
|
)
|
|
return result
|
|
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser(description='Find makefiles')
|
|
parser.add_argument('--makefile', action='store_true',
|
|
help='Search for "Makefile" files.')
|
|
parser.add_argument('--make', action='store_true',
|
|
help='Search for "*.make" files.')
|
|
parser.add_argument('--no-overlaps', action='store_true',
|
|
help=('Exclude "Makefile" if there is the "make" '
|
|
'subdir which includes more specific "*.make" '
|
|
'files'))
|
|
parser.add_argument('dirs', metavar='dir', nargs='+',
|
|
help='Directories in which to search for makefiles.')
|
|
args = parser.parse_args()
|
|
|
|
makefiles = find(args)
|
|
sys.stdout.write('\n'.join(makefiles))
|
|
sys.stdout.write('\n')
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|