diff --git a/README.md b/README.md new file mode 100644 index 0000000..41a6207 --- /dev/null +++ b/README.md @@ -0,0 +1,75 @@ +retryit - The command line retry tool +------------------------------------------ + +Retry any shell command with exponential backoff or constant delay. + +### Instructions + +Install: + +`gem install retryit` + +### Usage + +Help: + +`retry -?` + + Usage: retry [options] -e execute command + -h, -?, --help + -t, --tries=# Set max retries: Default 10 + -s, --sleep=secs Constant sleep amount (seconds) + -m, --min=secs Exponenetial Backoff: minimum sleep amount (seconds): Default 0.3 + -x, --max=secs Exponenetial Backoff: maximum sleep amount (seconds): Default 60 + +### Examples + +Test functionality: + +`retry 'echo "y u no work"; false'` + + y u no work + Before retry #1: sleeping 0.3 seconds + y u no work + Before retry #2: sleeping 0.6 seconds + y u no work + Before retry #3: sleeping 1.2 seconds + y u no work + Before retry #4: sleeping 2.4 seconds + y u no work + Before retry #5: sleeping 4.8 seconds + y u no work + Before retry #6: sleeping 9.6 seconds + y u no work + Before retry #7: sleeping 19.2 seconds + y u no work + Before retry #8: sleeping 38.4 seconds + y u no work + Before retry #9: sleeping 60.0 seconds + y u no work + Before retry #10: sleeping 60.0 seconds + y u no work + +Limit retries: + +`retry -t 4 -e 'echo "y u no work"; false'` + + y u no work + Before retry #1: sleeping 0.3 seconds + y u no work + Before retry #2: sleeping 0.6 seconds + y u no work + Before retry #3: sleeping 1.2 seconds + y u no work + Before retry #4: sleeping 2.4 seconds + y u no work + +Bad command: + +`retry poop` + + Command Failed: poop + +### License + +Apache 2.0 - go nuts diff --git a/lib/retryit.rb b/lib/retryit.rb index fce2ead..468b908 100644 --- a/lib/retryit.rb +++ b/lib/retryit.rb @@ -18,6 +18,11 @@ class RetryIt optparser = OptionParser.new do |opts| opts.banner = "Usage: retry [options] -e execute command" + opts.on("-h", "-?", "--help") do |v| + puts opts + exit + end + opts.on("-t#", "--tries=#", Integer, "Set max retries: Default 10") do |v| @max_tries = v end @@ -26,11 +31,11 @@ class RetryIt @constant_sleep = v end - opts.on("--min=secs", Float, "Exponenetial Backoff: minimum sleep amount (seconds): Default 0.3") do |v| + opts.on("-m#", "--min=secs", Float, "Exponenetial Backoff: minimum sleep amount (seconds): Default 0.3") do |v| @min_sleep = v end - opts.on("--max=secs", Float, "Exponenetial Backoff: maximum sleep amount (seconds): Default 60") do |v| + opts.on("-x#", "--max=secs", Float, "Exponenetial Backoff: maximum sleep amount (seconds): Default 60") do |v| @max_sleep = v end @@ -49,6 +54,10 @@ class RetryIt def run(args) + if (["-h", "-?", "--help"].include? args[0]) + load_options(args) + end + idx = args.find_index("-e") if !idx.nil? load_options(args[0...idx])