class Gitlab::Lint::Client::Args

Constants

API_PATH

Attributes

baseUrl[R]
pathToYamlFile[R]
timeout[R]
url[R]

Public Class Methods

new() click to toggle source
# File lib/gitlab/lint/client/args.rb, line 18
def initialize()
    @version = Gitlab::Lint::Client::VERSION
end

Public Instance Methods

get(args) click to toggle source
# File lib/gitlab/lint/client/args.rb, line 22
def get(args)
    options = {}
    optparse = OptionParser.new do|opt|
        opt.banner = 'Usage: validate-gitlab-ci [options]'
    
        opt.on('-f', '--yaml=YAML-PATH', 'Path to .gitlab-ci.yml') { |o| options[:yamlFile] = o }
        opt.on('-u', '--base-url=BASE_URL', 'GitLab API url') { |o| options[:baseUrl] = o }

        options[:timeout] = 10
        opt.on('-t', '--timeout[=TIMEOUT]', Integer, 'Api timeout in seconds') { |o| options[:timeout] = o }
    
        opt.on('-v', '--version', 'Program version') { |o| options[:version] = version() }
    end
    
    begin
        optparse.parse!(args)
        
        if options[:version].nil?
            mandatory = [:yamlFile, :baseUrl]
            missing = mandatory.select{ |param| options[param].nil? }
            if not missing.empty?
                STDERR.puts "Required options #{missing[0]} are missing: #{missing.join(", ")}"
                puts optparse.help
                abort("Exiting due to error encountered while parsing arguments")
            end
        end

    rescue OptionParser::InvalidOption, OptionParser::MissingArgument => error
        STDERR.puts error
        puts optparse
        abort("Exiting due to error encountered while parsing arguments...")
    end

    self.validateUrl!(options[:baseUrl])
    self.validateYamlFile!(options[:yamlFile])

    @baseUrl = options[:baseUrl]
    @url = options[:baseUrl] + API_PATH
    @pathToYamlFile = options[:yamlFile]
    @timeout = options[:timeout]
end
validateUrl!(url) click to toggle source
# File lib/gitlab/lint/client/args.rb, line 64
def validateUrl!(url)
    uri = URI.parse(url)
    valid = uri.is_a?(URI::HTTPS) && !uri.host.nil?
  
    raise URI::InvalidURIError unless valid
end
validateYamlFile!(path) click to toggle source
# File lib/gitlab/lint/client/args.rb, line 71
def validateYamlFile!(path)
    raise ArgumentError unless path.chars.last(4).join == ".yml" or path.chars.last(5).join == ".yaml"
    raise IOError unless ::File.exist?(path)
    raise RuntimeError unless ::File.readable?(path)
end
version() click to toggle source
# File lib/gitlab/lint/client/args.rb, line 77
def version()
    string = "GitLab Lint Client Version: #{@version}"
    puts string
    exit 0
end