class Fastlane::Actions::ChangeDomainAction
Public Class Methods
available_options()
click to toggle source
# File lib/fastlane/plugin/change_domain/actions/change_domain_action.rb, line 84 def self.available_options [ FastlaneCore::ConfigItem.new(key: :package_name, env_name: "", description: "New package name", optional: true, type: String), FastlaneCore::ConfigItem.new(key: :manifest, env_name: "", description: "Location of your project AndroidManifest.xml", optional: false, type: String, default_value: "app/src/main/AndroidManifest.xml"), FastlaneCore::ConfigItem.new(key: :path, env_name: "", description: "Path of root Android project folder", is_string: true, optional: false, default_value: ".") ] end
description()
click to toggle source
# File lib/fastlane/plugin/change_domain/actions/change_domain_action.rb, line 67 def self.description "Change the package identifier in the AndroidManifest.xml file" end
details()
click to toggle source
# File lib/fastlane/plugin/change_domain/actions/change_domain_action.rb, line 79 def self.details # Optional: "It will permits you to change the package name of your project before the build" end
is_supported?(platform)
click to toggle source
# File lib/fastlane/plugin/change_domain/actions/change_domain_action.rb, line 106 def self.is_supported?(platform) platform == :android end
return_value()
click to toggle source
# File lib/fastlane/plugin/change_domain/actions/change_domain_action.rb, line 75 def self.return_value # If your method provides a return value, you can describe here what it does end
run(params)
click to toggle source
# File lib/fastlane/plugin/change_domain/actions/change_domain_action.rb, line 7 def self.run(params) require 'nokogiri' path = params[:path] packageName = params[:package_name] manifest = params[:manifest] doc = File.open(manifest) { |f| @doc = Nokogiri::XML(f) originalPackageName = nil @doc.css("manifest").each do |response_node| originalPackageName = response_node["package"] response_node["package"] = packageName UI.message("Updating package name to: #{packageName}") end if originalPackageName != packageName File.write(manifest, @doc.to_xml) folder = originalPackageName.gsub('.', '/') new_folder = packageName.gsub('.', '/') if File.exist?("#{path}/app/src/main/java/#{folder}") sourcesPath = "/app/src" gradlePath = "/app" new_folder_path = "#{path}#{sourcesPath}/main/java/#{new_folder}" java_sources = Dir.glob("#{path}#{sourcesPath}/main/java/#{folder}/**.java") kotlin_sources = Dir.glob("#{path}#{sourcesPath}/main/java/#{folder}/**.kt") elsif File.exist?("#{path}/src/#{folder}") sourcesPath = "/src" gradlePath = "/." new_folder_path = "#{path}#{sourcesPath}/#{new_folder}" java_sources = Dir.glob("#{path}#{sourcesPath}/#{folder}/**.java") kotlin_sources = Dir.glob("#{path}#{sourcesPath}/#{folder}/**.kt") end FileUtils::mkdir_p new_folder_path java_sources.each do |file| FileUtils.mv file, new_folder_path end kotlin_sources.each do |file| FileUtils.mv file, new_folder_path end Bundler.with_clean_env do sh "find #{path}#{sourcesPath} -name '*.java' -type f -exec sed -i -e 's/#{originalPackageName}/#{packageName}/' {} +;" sh "find #{path}#{sourcesPath} -name '*.kt' -type f -exec sed -i -e 's/#{originalPackageName}/#{packageName}/' {} +;" sh "find #{path}#{gradlePath} -name 'build.gradle' -type f -exec sed -i -e 's/#{originalPackageName}/#{packageName}/' {} +" end end UI.message("#{originalPackageName} successfully updated to #{packageName}") } end