Class: Fastlane::Actions::SetBuildNumberBySchemeAndBuildConfigurationAction

Inherits:
Action
  • Object
show all
Defined in:
lib/fastlane/plugin/xcode_build_configuration/actions/set_build_number_by_scheme_and_build_configuration.rb

Documentation collapse

Class Method Summary collapse

Class Method Details

.authorsObject



51
52
53
# File 'lib/fastlane/plugin/xcode_build_configuration/actions/set_build_number_by_scheme_and_build_configuration.rb', line 51

def self.authors
  ["Dileepa Sisila Chandrasekara"]
end

.available_optionsObject



37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/fastlane/plugin/xcode_build_configuration/actions/set_build_number_by_scheme_and_build_configuration.rb', line 37

def self.available_options
  [
      FastlaneCore::ConfigItem.new(key: :build_number,
                                   description: "Change to a specific build number",
                                   optional: false),
      FastlaneCore::ConfigItem.new(key: :scheme,
                                   optional: false,
                                   description: "Specify a specific scheme if you have multiple per project"),
      FastlaneCore::ConfigItem.new(key: :build_configuration_name,
                                   optional: false,
                                   description: "Specify a specific build configuration if you have different build settings for each configuration")
  ]
end

.descriptionObject



29
30
31
# File 'lib/fastlane/plugin/xcode_build_configuration/actions/set_build_number_by_scheme_and_build_configuration.rb', line 29

def self.description
  "Set the build number using scheme and build configuration"
end

.detailsObject



33
34
35
# File 'lib/fastlane/plugin/xcode_build_configuration/actions/set_build_number_by_scheme_and_build_configuration.rb', line 33

def self.details
  'Set the $(CURRENT_PROJECT_VERSION) build setting using scheme and  build configuration'
end

.is_supported?(platform) ⇒ Boolean

Returns:

  • (Boolean)


55
56
57
# File 'lib/fastlane/plugin/xcode_build_configuration/actions/set_build_number_by_scheme_and_build_configuration.rb', line 55

def self.is_supported?(platform)
  %i[ios mac].include? platform
end

.run(params) ⇒ Object



7
8
9
10
11
12
13
14
15
16
# File 'lib/fastlane/plugin/xcode_build_configuration/actions/set_build_number_by_scheme_and_build_configuration.rb', line 7

def self.run(params)
  xcodeProject = Dir["*.xcodeproj"][0]
  project = Xcodeproj::Project.open(xcodeProject)
  configs = project.objects.select { |obj| select_build_configuration_predicate(params[:build_configuration_name], obj) }
  configs.each do |config|
    config.build_settings["CURRENT_PROJECT_VERSION"] = params[:build_number]
  end
  project.save
  UI.success("build number has been updated to #{ params[:build_number]}")
end

.select_build_configuration_predicate(name, configuration) ⇒ Object



19
20
21
22
23
# File 'lib/fastlane/plugin/xcode_build_configuration/actions/set_build_number_by_scheme_and_build_configuration.rb', line 19

def self.select_build_configuration_predicate(name, configuration)
  is_build_valid_configuration = configuration.isa == "XCBuildConfiguration" && !configuration.build_settings["PRODUCT_BUNDLE_IDENTIFIER"].nil?
  is_build_valid_configuration &&= configuration.name == name unless name.nil?
  return is_build_valid_configuration
end