Class: Fastlane::Actions::SetAppVersionBySchemeAndBuildConfigurationAction

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

Documentation collapse

Class Method Summary collapse

Class Method Details

.authorsObject



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

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

.available_optionsObject



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/fastlane/plugin/xcode_build_configuration/actions/set_app_version_by_scheme_and_build_configuration.rb', line 38

def self.available_options
  [
      FastlaneCore::ConfigItem.new(key: :build_number,
                                   description: "Change to a specific build number",
                                   optional: false),
      FastlaneCore::ConfigItem.new(key: :marketing_version,
                                   description: "Change to a specific marketing version",
                                   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



30
31
32
# File 'lib/fastlane/plugin/xcode_build_configuration/actions/set_app_version_by_scheme_and_build_configuration.rb', line 30

def self.description
  "Set the app version with using marketing version and build number input for relevant scheme and build configuration"
end

.detailsObject



34
35
36
# File 'lib/fastlane/plugin/xcode_build_configuration/actions/set_app_version_by_scheme_and_build_configuration.rb', line 34

def self.details
  'Set the app version with using marketing version and build number input for relevant scheme and build configuration'
end

.is_supported?(platform) ⇒ Boolean

Returns:

  • (Boolean)


59
60
61
# File 'lib/fastlane/plugin/xcode_build_configuration/actions/set_app_version_by_scheme_and_build_configuration.rb', line 59

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

.run(params) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
# File 'lib/fastlane/plugin/xcode_build_configuration/actions/set_app_version_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]
    config.build_settings["MARKETING_VERSION"] = params[:marketing_version]
  end
  project.save
  UI.success("app version has been updated to #{ params[:marketing_version]}(#{ params[:build_number]})")
end

.select_build_configuration_predicate(name, configuration) ⇒ Object



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

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