Mercurial > hg > config
changeset 343:71345f4de3ce
programs to list make targets
author | Jeff Hammel <jhammel@mozilla.com> |
---|---|
date | Sun, 23 Jun 2013 12:54:11 -0700 |
parents | 481b55fc4b96 |
children | f833aef163c6 |
files | bin/make-targets.sh bin/swapscreens.sh python/make-targets.py |
diffstat | 3 files changed, 73 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bin/make-targets.sh Sun Jun 23 12:54:11 2013 -0700 @@ -0,0 +1,3 @@ +#!/bin/bash +# list makefile targets +make -pn | grep '^ *[^#].*:.*' | sed 's/\([^:]+\):.*/\1/' | sort | uniq \ No newline at end of file
--- a/bin/swapscreens.sh Sat Jun 22 15:58:21 2013 -0700 +++ b/bin/swapscreens.sh Sun Jun 23 12:54:11 2013 -0700 @@ -1,6 +1,13 @@ #!/bin/bash # swap screens between internal laptop monitor and external monitor +# XXX sensitive to the individual laptop :( + +# See also `unxrandr`: +# unxrandr - inverse tool of xrandr +# unxrandr is a tool that queries the XRandR state using ARandR's +# libraries and outputs an xrandr command line that reproduces the state + INTERNAL="LVDS1" EXTERNAL="VGA1"
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/python/make-targets.py Sun Jun 23 12:54:11 2013 -0700 @@ -0,0 +1,63 @@ +#!/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()