Module: Clitopic::Utils
- Defined in:
- lib/clitopic/utils.rb
Class Method Summary collapse
- .git(args) ⇒ Object
- .has_git? ⇒ Boolean
- .parse_option(name, *arguments, &blk) ⇒ Object
- .retry_on_exception(*exceptions) ⇒ Object
Class Method Details
.git(args) ⇒ Object
29 30 31 32 33 |
# File 'lib/clitopic/utils.rb', line 29 def git(args) return "" unless has_git? flattened_args = [args].flatten.compact.join(" ") %x{ git #{flattened_args} 2>&1 }.strip end |
.has_git? ⇒ Boolean
24 25 26 27 |
# File 'lib/clitopic/utils.rb', line 24 def has_git? %x{ git --version } $?.success? end |
.parse_option(name, *arguments, &blk) ⇒ Object
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/clitopic/utils.rb', line 47 def parse_option(name, *arguments, &blk) # args.sort.reverse gives -l, --long order default = nil required = false args = [] arguments.each do |a| if a.is_a?(Hash) if a.has_key?(:default) default = a[:default] a.delete(:default) end if a.has_key?(:required) required = a[:required] a.delete(:required) end else args << a end end return { :name => name, :args => args, default: default, required: required, :proc => blk } end |
.retry_on_exception(*exceptions) ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/clitopic/utils.rb', line 35 def retry_on_exception(*exceptions) retry_count = 0 begin yield rescue *exceptions => ex raise ex if retry_count >= 3 sleep 3 retry_count += 1 retry end end |