Mercurial > hg > config
view python/make-targets.py @ 767:35f8751c0930
it is very annoying to have ones overrides overridden; see also http://stackoverflow.com/questions/25381304/why-type-cd-on-mac-os-states-that-cd-is-a-function
author | Jeff Hammel <k0scist@gmail.com> |
---|---|
date | Thu, 28 Jan 2016 14:02:17 -0800 |
parents | 71345f4de3ce |
children |
line wrap: on
line source
#!/usr/bin/python """ list the targets for a makefile """ import argparse import subprocess import sys call = subprocess.check_output def main(args=sys.argv[1:]): ignore = ['%', '.', '(', '/'] parser = argparse.ArgumentParser() parser.add_argument("-a", "--all", action="store_true", help="show all matches") parser.add_argument("--origin", action="store_true", help="show original line") args = parser.parse_args(args) if args.all: ignore = [] line_dict = {} names = [] output = call(["make", "-pn"]).strip() for index, line in enumerate(output.splitlines()): _orig = line line = line.strip() if not line: continue if line.startswith('#'): continue if ':' not in line: continue name, rhs = line.split(':', 1) if rhs and rhs[0] == '=': continue name = name.strip() if '=' in name or not name: continue # ignore thingies if name.startswith(tuple(ignore)): continue names.append(name) line_dict.setdefault(name, (index, _orig)) names = list(set(names)) names.sort() if args.origin: for name in names: index, line = line_dict[name] print '%s: `%s`:%d' % (name, line, index+1) return print '\n'.join(names) if __name__ == '__main__': main()