summaryrefslogtreecommitdiff
path: root/lib/gitlab/storage_check/option_parser.rb
blob: 66ed7906f97619cbead492f0a9bc70230ccb2286 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
module Gitlab
  module StorageCheck
    class OptionParser
      def self.parse!(args)
        # Start out with some defaults
        options = Gitlab::StorageCheck::Options.new(nil, nil, 1, false)

        parser = ::OptionParser.new do |opts|
          opts.banner = "Usage: bin/storage_check [options]"

          opts.on('-t=string', '--target string', 'URL or socket to trigger storage check') do |value|
            options.target = value
          end

          opts.on('-T=string', '--token string', 'Health token to use') { |value| options.token = value }

          opts.on('-i=n', '--interval n', ::OptionParser::DecimalInteger, 'Seconds between checks') do |value|
            options.interval = value
          end

          opts.on('-d', '--dryrun', "Output what will be performed, but don't start the process") do |value|
            options.dryrun = value
          end
        end
        parser.parse!(args)

        unless options.target
          raise ::OptionParser::InvalidArgument.new('Provide a URI to provide checks')
        end

        if URI.parse(options.target).scheme.nil?
          raise ::OptionParser::InvalidArgument.new('Add the scheme to the target, `unix://`, `https://` or `http://` are supported')
        end

        options
      end
    end
  end
end