class Fastlane::Actions::IncrementVersionCodeAction

Public Class Methods

authors() click to toggle source
# File lib/fastlane/plugin/increment_version_code/actions/increment_version_code_action.rb, line 85
def self.authors
  ["Jems"]
end
available_options() click to toggle source
# File lib/fastlane/plugin/increment_version_code/actions/increment_version_code_action.rb, line 89
def self.available_options
    [
        FastlaneCore::ConfigItem.new(key: :app_folder_name,
                                env_name: "INCREMENTVERSIONCODE_APP_FOLDER_NAME",
                             description: "The name of the application source folder in the Android project (default: app)",
                                optional: true,
                                    type: String,
                           default_value:"app"),
       FastlaneCore::ConfigItem.new(key: :gradle_file_path,
                               env_name: "INCREMENTVERSIONCODE_GRADLE_FILE_PATH",
                            description: "The relative path to the gradle file containing the version code parameter (default:app/build.gradle)",
                               optional: true,
                                   type: String,
                          default_value: nil),
        FastlaneCore::ConfigItem.new(key: :version_code,
                                env_name: "INCREMENTVERSIONCODE_VERSION_CODE",
                             description: "Change to a specific version (optional)",
                                optional: true,
                                    type: Integer,
                           default_value: 0),
        FastlaneCore::ConfigItem.new(key: :ext_constant_name,
                                env_name: "INCREMENTVERSIONCODE_EXT_CONSTANT_NAME",
                             description: "If the version code is set in an ext constant, specify the constant name (optional)",
                                optional: true,
                                    type: String,
                           default_value: "versionCode")
    ]
end
description() click to toggle source
# File lib/fastlane/plugin/increment_version_code/actions/increment_version_code_action.rb, line 81
def self.description
  "Increment the version code of your android project."
end
incrementVersion(path, new_version_code, constant_name) click to toggle source
# File lib/fastlane/plugin/increment_version_code/actions/increment_version_code_action.rb, line 42
def self.incrementVersion(path, new_version_code, constant_name)
    if !File.file?(path)
        UI.message(" -> No file exist at path: (#{path})!")
        return -1
    end
    begin
        foundVersionCode = "false"
        temp_file = Tempfile.new('fastlaneIncrementVersionCode')
        File.open(path, 'r') do |file|
            file.each_line do |line|
                if line.include? constant_name and foundVersionCode=="false"
                    UI.message(" -> line: (#{line})!")
                  versionComponents = line.strip.split(' ')
                  version_code = versionComponents[versionComponents.length-1].tr("\"","")
                  if new_version_code <= 0
                      new_version_code = version_code.to_i + 1
                  end
                  if !!(version_code =~ /\A[-+]?[0-9]+\z/)
                      line.replace line.sub(version_code, new_version_code.to_s)
                      foundVersionCode = "true"
                  end
                  temp_file.puts line
                else
                temp_file.puts line
             end
        end
        file.close
      end
      temp_file.rewind
      temp_file.close
      FileUtils.mv(temp_file.path, path)
      temp_file.unlink
    end
    if foundVersionCode == "true"
        return new_version_code
    end
    return -1
end
is_supported?(platform) click to toggle source
# File lib/fastlane/plugin/increment_version_code/actions/increment_version_code_action.rb, line 124
def self.is_supported?(platform)
  [:android].include?(platform)
end
output() click to toggle source
# File lib/fastlane/plugin/increment_version_code/actions/increment_version_code_action.rb, line 118
def self.output
  [
    ['VERSION_CODE', 'The new version code of the project']
  ]
end
run(params) click to toggle source
# File lib/fastlane/plugin/increment_version_code/actions/increment_version_code_action.rb, line 7
def self.run(params)

  version_code = "0"
  new_version_code ||= params[:version_code]

  constant_name ||= params[:ext_constant_name]

  gradle_file_path ||= params[:gradle_file_path]
  if gradle_file_path != nil
      UI.message("The increment_version_code plugin will use gradle file at (#{gradle_file_path})!")
      new_version_code = incrementVersion(gradle_file_path, new_version_code, constant_name)
  else
      app_folder_name ||= params[:app_folder_name]
      UI.message("The get_version_code plugin is looking inside your project folder (#{app_folder_name})!")

      #temp_file = Tempfile.new('fastlaneIncrementVersionCode')
      #foundVersionCode = "false"
      Dir.glob("**/#{app_folder_name}/build.gradle") do |path|
          UI.message(" -> Found a build.gradle file at path: (#{path})!")
          new_version_code = incrementVersion(path, new_version_code, constant_name)
      end

  end

  if new_version_code == -1
      UI.user_error!("Impossible to find the version code with the specified properties 😭")
  else
      # Store the version name in the shared hash
      Actions.lane_context["VERSION_CODE"]=new_version_code
      UI.success("☝️ Version code has been changed to #{new_version_code}")
  end

  return new_version_code
end