Index: pydir/if.py |
diff --git a/pydir/if.py b/pydir/if.py |
new file mode 100755 |
index 0000000000000000000000000000000000000000..86923c639b20b802bf2e49c86f09332c4c194e2b |
--- /dev/null |
+++ b/pydir/if.py |
@@ -0,0 +1,48 @@ |
+#!/usr/bin/env python2 |
+ |
+import argparse |
+import os |
+import sys |
+ |
+from utils import shellcmd |
+ |
+def main(): |
+ """Run the specified command only if conditions are met. |
+ |
+ Two conditions are checked. First, the CONDITION must be true. |
+ Secondly, all NEED names must be in the set of HAVE names. |
+ If both conditions are met, the command defined by the remaining |
+ arguments is run in a shell. |
+ """ |
+ argparser = argparse.ArgumentParser( |
+ description=' ' + main.__doc__, |
+ formatter_class=argparse.ArgumentDefaultsHelpFormatter) |
+ argparser.add_argument('--cond', choices={'true', 'false'} , required=False, |
+ default='true', metavar='CONDITION', |
+ help='Condition to test.') |
+ argparser.add_argument('--need', required=False, default=[], |
+ action='append', metavar='NEED', |
+ help='Needed name. May be repeated.') |
+ argparser.add_argument('--have', required=False, default=[], |
+ action='append', metavar='HAVE', |
+ help='Name you have. May be repeated.') |
+ argparser.add_argument('--echo-cmd', required=False, |
+ action='store_true', |
+ help='Trace the command before running.') |
+ argparser.add_argument('--command', nargs=argparse.REMAINDER, |
+ help='Command to run if attributes found.') |
+ |
+ args = argparser.parse_args() |
+ |
+ # Quit early if no command to run. |
+ if not args.command: |
+ raise RuntimeError("No command argument(s) specified for ifatts") |
+ |
+ if args.cond == 'true' and set(args.need) <= set(args.have): |
+ stdout_result = shellcmd(args.command, echo=args.echo_cmd) |
+ if not args.echo_cmd: |
+ sys.stdout.write(stdout_result) |
+ |
+if __name__ == '__main__': |
+ main() |
+ sys.exit(0) |