class Fastlane::Actions::RenameAndroidPackageAction

Public Class Methods

authors() click to toggle source
# File lib/fastlane/plugin/rename_android_package/actions/rename_android_package_action.rb, line 34
def self.authors
  ["joshdholtz"]
end
available_options() click to toggle source
# File lib/fastlane/plugin/rename_android_package/actions/rename_android_package_action.rb, line 42
def self.available_options
  [
    FastlaneCore::ConfigItem.new(key: :path,
                                 env_name: "FL_RENAME_ANDROID_PACKAGE_PATH",
                                 description: "Path of root Android project folder",
                                 is_string: true),
    FastlaneCore::ConfigItem.new(key: :package_name,
                                 env_name: "FL_RENAME_ANDROID_PACKAGE_PACKAGE_NAME",
                                 description: "Old package name",
                                 is_string: true),
    FastlaneCore::ConfigItem.new(key: :new_package_name,
                                 env_name: "FL_RENAME_ANDROID_PACKAGE_NEW_PACKAGE_NAME",
                                 description: "New package name",
                                 is_string: true)
  ]
end
description() click to toggle source
# File lib/fastlane/plugin/rename_android_package/actions/rename_android_package_action.rb, line 30
def self.description
  "Renames Android package"
end
details() click to toggle source
# File lib/fastlane/plugin/rename_android_package/actions/rename_android_package_action.rb, line 38
def self.details
  "Renames Android package"
end
is_supported?(platform) click to toggle source
# File lib/fastlane/plugin/rename_android_package/actions/rename_android_package_action.rb, line 59
def self.is_supported?(platform)
  [:android].include?(platform)
end
run(params) click to toggle source
# File lib/fastlane/plugin/rename_android_package/actions/rename_android_package_action.rb, line 7
def self.run(params)
  path = params[:path]
  package_name = params[:package_name]
  new_package_name = params[:new_package_name]

  folder = package_name.gsub('.', '/')
  new_folder = new_package_name.gsub('.', '/')
  new_folder_path = "#{path}/app/src/main/java/#{new_folder}"

  FileUtils::mkdir_p new_folder_path

  java_sources = Dir.glob("#{path}/app/src/main/java/#{folder}/*.java")
  java_sources.each do |file|
    FileUtils.mv file, new_folder_path
  end

  Bundler.with_clean_env do
    sh "find #{path}/app/src -name '*.java' -type f -exec sed -i '' 's/#{package_name}/#{new_package_name}/' {} \\;"
    sh "find #{path}/app/src -name 'AndroidManifest.xml' -type f -exec sed -i '' 's/#{package_name}/#{new_package_name}/' {} \\;"
    sh "find #{path}/app -name 'build.gradle' -type f -exec sed -i '' 's/#{package_name}/#{new_package_name}/' {} \\;"
  end
end