summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xdo-until45
1 files changed, 33 insertions, 12 deletions
diff --git a/do-until b/do-until
index d9dc863..4aea815 100755
--- a/do-until
+++ b/do-until
@@ -1,12 +1,33 @@
-#!/bin/sh
-#
-# do-until - run a command until it succeeds
-#
-# Lars Wirzenius <liw@liw.fi>
-
-cmdline="$@"
-while ! $cmdline
-do
- echo "Command failed, trying again in 1 second"
- sleep 1
-done
+#!/usr/bin/python
+
+
+"""Run a command until it succeeds.
+
+Lars Wirzenius <liw@liw.fi>
+"""
+
+
+import subprocess
+import sys
+import time
+
+
+def do_until(argv):
+ while True:
+ p = subprocess.Popen(argv)
+ p.communicate()
+ if p.returncode == 0:
+ break
+ sys.stderr.write("do-until: command failed, "
+ "trying again in 1 second\n")
+ time.sleep(1)
+
+
+def main():
+ argv = sys.argv[1:]
+ if argv:
+ do_until(argv)
+
+
+if __name__ == "__main__":
+ main()