class JenkinsPipelineBuilder::CLI::Helper

This is the helper class that sets up the credentials from the command line parameters given and initializes the Jenkins Pipeline Builder.

Constants

DEFAULT_FILE_FORMATS

Attributes

jenkins_api_creds[RW]

Public Class Methods

process_cli_creds(options) click to toggle source
# File lib/jenkins_pipeline_builder/cli/helper.rb, line 87
def self.process_cli_creds(options)
  self.jenkins_api_creds = {}.with_indifferent_access.merge options
  if jenkins_api_creds[:server] =~ Resolv::AddressRegex
    jenkins_api_creds[:server_ip] = jenkins_api_creds.delete :server
  elsif jenkins_api_creds[:server] =~ URI::DEFAULT_PARSER.make_regexp
    jenkins_api_creds[:server_url] = jenkins_api_creds.delete :server
  else
    msg = "server given (#{jenkins_api_creds[:server]}) is neither a URL nor an IP."
    msg << ' Please pass either a valid IP address or valid URI'
    warn msg
    exit 1
  end
end
process_creds(options) click to toggle source
# File lib/jenkins_pipeline_builder/cli/helper.rb, line 58
def self.process_creds(options)
  default_file = find_default_file
  if options[:debug]
    self.jenkins_api_creds = { username: :foo, password: :bar, server_ip: :baz }
  elsif valid_cli_creds? options
    process_cli_creds(options)
  elsif options[:creds_file]
    process_creds_file options[:creds_file]
  elsif default_file
    process_creds_file default_file
  else
    msg = 'Credentials are not set. Please pass them as parameters or'
    msg << ' set them in the default credentials file'
    warn msg
    exit 1
  end
end
process_creds_file(file) click to toggle source
# File lib/jenkins_pipeline_builder/cli/helper.rb, line 80
def self.process_creds_file(file)
  return load File.expand_path(file) if file.end_with? 'rb'
  return self.jenkins_api_creds = JSON.parse(IO.read(File.expand_path(file))) if file.end_with? 'json'

  self.jenkins_api_creds = YAML.load_file(File.expand_path(file))
end
setup(options) click to toggle source

Sets up the credentials and initializes the Jenkins Pipeline Builder

@param [Hash] options Options obtained from the command line

@return [JenkinsPipelineBuilder::Generator] A new Client object

# File lib/jenkins_pipeline_builder/cli/helper.rb, line 49
def self.setup(options)
  process_creds options

  JenkinsPipelineBuilder.credentials = jenkins_api_creds
  generator = JenkinsPipelineBuilder.generator
  JenkinsPipelineBuilder.debug! if options[:debug]
  generator
end
valid_cli_creds?(options) click to toggle source
# File lib/jenkins_pipeline_builder/cli/helper.rb, line 76
def self.valid_cli_creds?(options)
  options[:username] && options[:server] && (options[:password] || options[:password_base64])
end

Private Class Methods

find_default_file() click to toggle source
# File lib/jenkins_pipeline_builder/cli/helper.rb, line 101
      def self.find_default_file
        default_file_name = "#{ENV['HOME']}/.jenkins_api_client/login"

        found_suffix = nil
        DEFAULT_FILE_FORMATS.each do |suffix|
          next unless File.exist?("#{default_file_name}.#{suffix}")

          if !found_suffix
            found_suffix = suffix
          else
            logger.warn "Multiple default files found! Using '#{default_file_name}.#{found_suffix}' but \
'#{default_file_name}.#{suffix}' found."
          end
        end
        "#{ENV['HOME']}/.jenkins_api_client/login.#{found_suffix}" if found_suffix
      end
logger() click to toggle source
# File lib/jenkins_pipeline_builder/cli/helper.rb, line 118
def self.logger
  JenkinsPipelineBuilder.logger
end