class Fastlane::Helper::AndroidFileHelper
Constants
- ANDROID_APK_INFO_DIR
- ANDROID_APK_INFO_FILENAME
- ANDROID_CHANGELOG_DIR
- ANDROID_FULL_DESCRIPTION_DIR
ANDROID_CHANGELOG_FILENAME -> changes depending on apk version code
- ANDROID_FULL_DESCRIPTION_FILENAME
- ANDROID_METADATA_LOC
Public Class Methods
prepareFiles(params, country_MetaData)
click to toggle source
# File lib/fastlane/plugin/deploy_file_provider/helper/android_file_helper.rb, line 26 def self.prepareFiles(params, country_MetaData) UI.message("Preparing files for ANDROID PlayStore release.".yellow) # MetaData root metadata_root_dir = "#{params[:metaDataRoot]}" UI.message(["Step: Location where metadata will be downloaded:", metadata_root_dir].join(" ").blue) # Android PlayStore credentials store_credentials_dir = "#{params[:json_key]}" unless params[:json_key].nil? UI.message(["Step: Location of credentials for Android PlayStore:", store_credentials_dir].join(" ").blue) # Get current metadata from Android PlayStore UI.message("Preparing location for metadata download.".yellow) clearMetaDataDir(metadata_root_dir) UI.message("Step: Fetching current metadata from Android PlayStore".blue) fetchCurrentMetaData(metadata_root_dir, store_credentials_dir) # Get current *.apk version UI.message("Checking version of *.apk which is about to be pushed.".yellow) versionCode = fetchVersionCode(params) android_changelog_filename = [versionCode, ".txt"].join("") # Prepare files for release UI.message("Applying changes to fetched metadata.".yellow) num_of_languages = ANDROID_METADATA_LOC.size num_of_processed_languages = 0 for i in 0...country_MetaData.size language_MetaData = country_MetaData[i] language_Key = language_MetaData.language.downcase unless ANDROID_METADATA_LOC.key?(language_Key) next end UI.message(["Step: ---- Attempting to create files for language -", language_Key].join(" ").blue) create_description(metadata_root_dir, language_Key, language_MetaData) create_changelog(metadata_root_dir, language_Key, language_MetaData, android_changelog_filename) num_of_processed_languages += 1 UI.message("Step: ---- Files updated".blue) end # Check if all languages were processed if num_of_processed_languages != num_of_languages UI.message("Error: expected to receive metadata for: #{num_of_languages} languages, but received for: #{num_of_processed_languages}!".red) raise Exception, "Lane was stopped by script" end end
Private Class Methods
clearMetaDataDir(metadata_root_dir)
click to toggle source
# File lib/fastlane/plugin/deploy_file_provider/helper/android_file_helper.rb, line 78 def self.clearMetaDataDir(metadata_root_dir) if (File.directory?(metadata_root_dir)) UI.message(["Step: Removed old metadata folder in location:", metadata_root_dir].join(" ").blue) FileUtils.rm_rf(metadata_root_dir) end end
create_changelog(metadata_root_dir, language_Key, language_MetaData, filename)
click to toggle source
# File lib/fastlane/plugin/deploy_file_provider/helper/android_file_helper.rb, line 126 def self.create_changelog(metadata_root_dir, language_Key, language_MetaData, filename) changelog_metaDataDir = [ metadata_root_dir, ANDROID_METADATA_LOC[language_Key], ANDROID_CHANGELOG_DIR].join UI.message(["Step: Attempting to prepare changelog file with name:", filename, "for language:", language_Key, "- in location:", changelog_metaDataDir].join(" ").blue) unless File.directory?(changelog_metaDataDir) UI.message(["Error: Could not find location'", changelog_metaDataDir, "'."].join(" ").red) raise Exception, "Lane was stopped by script" end file = changelog_metaDataDir + filename if File.exists?(file) File.delete(file) end new_File = File.new(file, "w") begin new_File.puts(language_MetaData.releaseNotesAndroid) ensure new_File.close end new_File = File.open(file, "r") begin content = new_File.read UI.message(["Step:", filename, "- length: #{content.length}"].join(" ").blue) ensure new_File.close end end
create_description(metadata_root_dir, language_Key, language_MetaData)
click to toggle source
# File lib/fastlane/plugin/deploy_file_provider/helper/android_file_helper.rb, line 161 def self.create_description(metadata_root_dir, language_Key, language_MetaData) fulldescription_metaDataDir = [ metadata_root_dir, ANDROID_METADATA_LOC[language_Key], ANDROID_FULL_DESCRIPTION_DIR].join UI.message(["Step: Attempting to prepare", ANDROID_FULL_DESCRIPTION_FILENAME, "for language:", language_Key, "- in location:",fulldescription_metaDataDir].join(" ").blue) unless File.directory?(fulldescription_metaDataDir) UI.message(["Error: Could not find location'", fulldescription_metaDataDir, "'."].join(" ").red) raise Exception, "Lane was stopped by script" end file = fulldescription_metaDataDir + ANDROID_FULL_DESCRIPTION_FILENAME if File.exists?(file) File.delete(file) end new_File = File.new(file, "w") begin new_File.puts(language_MetaData.description_android) ensure new_File.close end new_File = File.open(file, "r") begin content = new_File.read UI.message(["Step:", ANDROID_FULL_DESCRIPTION_FILENAME, "- length: #{content.length}"].join(" ").blue) ensure new_File.close end end
fetchCurrentMetaData(metadata_root_dir, store_credentials_dir)
click to toggle source
# File lib/fastlane/plugin/deploy_file_provider/helper/android_file_helper.rb, line 86 def self.fetchCurrentMetaData(metadata_root_dir, store_credentials_dir) fetch_command = "fastlane supply init --metadata_path #{metadata_root_dir} --json_key #{store_credentials_dir}" Action.sh(fetch_command) unless File.directory?(metadata_root_dir) UI.message(["Error: Could not find location'", metadata_root_dir, "'."].join(" ").red) raise Exception, "Lane was stopped by script" end end
fetchVersionCode(params)
click to toggle source
# File lib/fastlane/plugin/deploy_file_provider/helper/android_file_helper.rb, line 97 def self.fetchVersionCode(params) UI.message("Note: Android changelog filename is created from .apk version code.".green) UI.message(["Step: Attempting to get Android .apk versionCode from", ANDROID_APK_INFO_FILENAME, "located in:", ANDROID_APK_INFO_DIR].join(" ").blue) file = ANDROID_APK_INFO_DIR + ANDROID_APK_INFO_FILENAME version_code_header = "Version code: " android_apk_version_code = nil if File.exists?(file) File.open(file) do |f| f.each_line do |line| if line.include?(version_code_header) android_apk_version_code = line.gsub(/\D/, '') end end end end if android_apk_version_code.empty? || android_apk_version_code == nil UI.message("Error: Unable to fetch Android versionCode. No #{ANDROID_APK_INFO_FILENAME} was found.".red) raise Exception, "Lane was stopped by script" else UI.message("Step: Fetch successfull! Version code: #{android_apk_version_code}".blue) end return android_apk_version_code end