Module: Clitopic::Utils

Defined in:
lib/clitopic/utils.rb

Class Method Summary collapse

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

Returns:

  • (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