class ArgumentHandler

rubocop:disable Metrics/ClassLength

Attributes

code_signing_identities[R]
dropbox_destination[R]
dropbox_flatten[R]
dropbox_root[R]
dropbox_sources[R]
keychain[R]
keychain_password[R]
kill_simulators[R]
provisioning_profiles[R]
verbose[R]
version[R]
xcode_archive_plist[R]
xcode_build_configuration[R]
xcode_build_number[R]
xcode_bundle_identifier[R]
xcode_export_plist[R]
xcode_project_path[R]
xcode_set_manual_provisioning_style[R]
xcode_target[R]
zip_archive[R]
zip_destination[R]
zip_sources[R]

Public Class Methods

new() click to toggle source

rubocop:disable Metrics/AbcSize rubocop:disable Metrics/MethodLength

# File lib/jenkins_util/argument_handler.rb, line 37
def initialize
  @keychain = nil
  @keychain_password = nil
  @code_signing_identities = []
  @provisioning_profiles = []
  @dropbox_sources = []
  @dropbox_destination = nil
  @dropbox_flatten = true
  @dropbox_root = Dir.pwd
  @kill_simulators = false
  @xcode_project_path = nil
  @xcode_export_plist = nil
  @xcode_target = nil
  @xcode_build_configuration = nil
  @xcode_bundle_identifier = nil
  @xcode_build_number = nil
  @xcode_set_manual_provisioning_style = nil
  @xcode_archive_plist = nil
  @zip_sources = []
  @zip_archive = nil
  @zip_destination = nil
  @verbose = false
  @version = false

  ARGV.push('-h') if ARGV.empty?

  # rubocop:disable Metrics/BlockLength
  parser = OptionParser.new do |opts|
    opts.banner = 'Usage: jenkins_util'

    # keychain_util
    opts.on('-k', '--keychain [KEYCHAIN_PATH]', 'Path to Keychain to be unlocked') do |keychain|
      @keychain = keychain
    end

    # keychain_util
    opts.on('-p', '--keychain-password [KEYCHAIN_PASSWORD]', 'Password for Keychain to be unlocked') do |password|
      @keychain_password = password
    end

    # keychain_util
    opts.on('-c', '--code-signing-identities c1,c2', Array, 'Provisioning Profiles to check after keychain is unlocked') do |identities|
      @code_signing_identities = identities
    end

    # keychain_util
    opts.on('-P', '--provisioning-profiles p1,p2', Array, 'Provisioning Profiles to check after keychain is unlocked') do |profiles|
      @provisioning_profiles = profiles
    end

    # dropbox_util
    opts.on('-s', '--dropbox-sources s1,s2', Array, 'A set of paths/matchers for uploading to dropbox') do |sources|
      sources.each do |source|
        @dropbox_sources.push(remove_quotes(source))
      end
    end

    # dropbox_util
    opts.on('-d', '--dropbox-destination x', 'The dropbox destination usually /L4Builds/Path') do |destination|
      @dropbox_destination = remove_quotes(destination)
    end

    # dropbox_util
    opts.on('-f', '--dropbox-keep-folders', 'If passed file folders will be preserved') do
      @dropbox_flatten = false
    end

    # dropbox_util
    opts.on('-r', '--dropbox-root x', 'The path to remove when uploading defaults to pwd') do |root|
      @dropbox_root = remove_quotes(root)
    end

    # simulator_util
    opts.on('-K', '--kill-simulators', 'Shutdown and reset all iOS simulators') do
      @kill_simulators = true
    end

    # xcode_util
    opts.on('--xcode-project project', 'Path to an Xcode project file') do |project_path|
      @xcode_project_path = project_path
    end

    opts.on('--xcode-get-team-id plist', 'Path to an Xcode export plist') do |export_plist|
      @xcode_export_plist = export_plist
    end

    opts.on('--xcode-target target', 'Target to update in the Xcode project specified with --xcode-project') do |target|
      @xcode_target = target
    end

    opts.on('--xcode-build-configuration build_configuration',
            'Build configuration to update in the Xcode project specified with --xcode-project') do |build_configuration|
      @xcode_build_configuration = build_configuration
    end

    opts.on('--xcode-bundle-identifier identifer',
            'Bundle identifier to set in the Xcode project specified with --xcode-project') do |bundle_identifier|
      @xcode_bundle_identifier = bundle_identifier
    end

    opts.on('--xcode-append-bundle-version version',
            'the version passed is appended to the build version Xcode project specified with --xcode-project') do |build_number|
      @xcode_build_number = build_number
    end

    opts.on('--xcode-set-manual-provisioning-style', 'Set project to automatically sign if true and Manual if false') do
      @xcode_set_manual_provisioning_style = true
    end

    opts.on('--xcode-get-build-name archive-plist', 'Gets the build name "NAME_v_VERSION_b_BUILD"') do |archive_plist|
      @xcode_archive_plist = archive_plist
    end

    # zip_util
    opts.on('--zip-compress s1,s2,s3', Array, 'Compress files into zip archive') do |sources|
      sources.each do |source|
        @zip_sources.push(remove_quotes(source))
      end
    end

    opts.on('--zip-uncompress zip_archive', 'Uncompress zip archive') do |zip_archive|
      @zip_archive = remove_quotes(zip_archive)
    end

    opts.on('--zip-destination destination',
            'The path to save a new zip archive for a --zip-compress',
            'The path to a directory to uncompress a zip archive for --zip-uncompress') do |destination|
      @zip_destination = remove_quotes(destination)
    end

    # logger_util
    opts.on('--verbose', 'Output more information') do
      @verbose = true
    end

    opts.on_tail('-h', '--help', 'Show this message') do
      puts opts
      abort
    end

    opts.on_tail('-v', '--version', 'Display Current version') do
      @version = true
    end
  end

  parser.parse!
end

Public Instance Methods

remove_quotes(file_path) click to toggle source
# File lib/jenkins_util/argument_handler.rb, line 28
def remove_quotes(file_path)
  file_path = file_path.to_s
  file_path[0] = '' if file_path.to_s.start_with?('\'', '"')
  file_path[file_path.length - 1] = '' if file_path.to_s.end_with?('\'', '"')
  file_path
end