Class: Gym::DetectValues

Inherits:
Object
  • Object
show all
Defined in:
lib/gym/detect_values.rb

Overview

This class detects all kinds of default values

Class Method Summary collapse

Class Method Details

.detect_configurationObject

Detects the available configurations (e.g. Debug, Release)



78
79
80
81
82
83
84
85
86
87
88
89
90
# File 'lib/gym/detect_values.rb', line 78

def self.detect_configuration
  config = Gym.config
  configurations = Gym.project.configurations
  return if configurations.count == 0 # this is an optional value anyway

  if config[:configuration]
    # Verify the configuration is available
    unless configurations.include?(config[:configuration])
      UI.error "Couldn't find specified configuration '#{config[:configuration]}'."
      config[:configuration] = nil
    end
  end
end

.detect_platformObject

Is it an iOS device or a Mac?



64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/gym/detect_values.rb', line 64

def self.detect_platform
  return if Gym.config[:destination]
  platform = if Gym.project.mac?
               min_xcode8? ? "macOS" : "OS X"
             elsif Gym.project.tvos?
               "tvOS"
             else
               "iOS"
             end

  Gym.config[:destination] = "generic/platform=#{platform}"
end

.detect_provisioning_profileObject

Helper Methods



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/gym/detect_values.rb', line 35

def self.detect_provisioning_profile
  unless Gym.config[:provisioning_profile_path]
    Dir.chdir(File.expand_path("..", Gym.project.path)) do
      profiles = Dir["*.mobileprovision"]
      if profiles.count == 1
        profile = File.expand_path(profiles.last)
      elsif profiles.count > 1
        UI.message "Found more than one provisioning profile in the project directory:"
        profile = choose(*profiles)
      end

      Gym.config[:provisioning_profile_path] = profile
    end
  end

  if Gym.config[:provisioning_profile_path]
    FastlaneCore::ProvisioningProfile.install(Gym.config[:provisioning_profile_path])
  end
end

.detect_schemeObject



55
56
57
# File 'lib/gym/detect_values.rb', line 55

def self.detect_scheme
  Gym.project.select_scheme
end

.min_xcode8?Boolean

Returns:

  • (Boolean)


59
60
61
# File 'lib/gym/detect_values.rb', line 59

def self.min_xcode8?
  Helper.xcode_version.split(".").first.to_i >= 8
end

.set_additional_default_valuesObject

This is needed as these are more complex default values Returns the finished config object



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
# File 'lib/gym/detect_values.rb', line 6

def self.set_additional_default_values
  config = Gym.config

  # First, try loading the Gymfile from the current directory
  config.load_configuration_file(Gym.gymfile_name)

  # Detect the project
  FastlaneCore::Project.detect_projects(config)
  Gym.project = FastlaneCore::Project.new(config)
  detect_provisioning_profile

  # Go into the project's folder, as there might be a Gymfile there
  Dir.chdir(File.expand_path("..", Gym.project.path)) do
    config.load_configuration_file(Gym.gymfile_name)
  end

  config[:use_legacy_build_api] = true if Xcode.pre_7?

  detect_scheme
  detect_platform # we can only do that *after* we have the scheme
  detect_configuration

  config[:output_name] ||= Gym.project.app_name

  return config
end