class Fastlane::Helper::IOSFileHelper

Constants

IOS_DESCRIPTION_DIR
IOS_DESCRIPTION_FILENAME
IOS_METADATA_LOC
IOS_RELEASE_NOTES_DIR
IOS_RELEASE_NOTES_FILENAME

Public Class Methods

prepareFiles(params, country_MetaData) click to toggle source
# File lib/fastlane/plugin/deploy_file_provider/helper/ios_file_helper.rb, line 22
def self.prepareFiles(params, country_MetaData)
  UI.message("Preparing files for IOS AppStore release.".yellow)

  # MetaData root
  metadata_root_dir = "#{params[:metaDataRoot]}"
  UI.message(["Step: Location where metadata will be downloaded:", metadata_root_dir].join(" ").blue)

  # Get current metadata from iOS AppStore
  UI.message("Preparing location for metadata download.".yellow)
  clearMetaDataDir(metadata_root_dir)

  #Get info about version from Info.plist
  app_version = "#{params[:appVersion]}"

  UI.message("Step: Fetching current metadata from IOS AppStore".blue)
  fetchCurrentMetaData(metadata_root_dir, app_version)

  # Prepare files for release
  UI.message("Applying changes to fetched metadata.".yellow)
  num_of_languages = IOS_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 IOS_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_releaseNotes(metadata_root_dir, language_Key, language_MetaData)
    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/ios_file_helper.rb, line 68
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_description(metadata_root_dir, language_Key, language_MetaData) click to toggle source
# File lib/fastlane/plugin/deploy_file_provider/helper/ios_file_helper.rb, line 120
def self.create_description(metadata_root_dir, language_Key, language_MetaData) 
  fulldescription_metaDataDir = [
    metadata_root_dir,
    IOS_METADATA_LOC[language_Key], 
    IOS_DESCRIPTION_DIR].join
  
  UI.message(["Step: Attempting to prepare", IOS_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 + IOS_DESCRIPTION_FILENAME
  if File.exists?(file) 
    File.delete(file)
  end

  new_File = File.new(file, "w")
  begin
    new_File.puts(language_MetaData.description_ios)
  ensure
    new_File.close
  end

  new_File = File.open(file, "r")
  begin
    content = new_File.read
    UI.message(["Step:", IOS_DESCRIPTION_FILENAME, "- length: #{content.length}"].join(" ").blue)
  ensure
    new_File.close
  end
end
create_releaseNotes(metadata_root_dir, language_Key, language_MetaData) click to toggle source
# File lib/fastlane/plugin/deploy_file_provider/helper/ios_file_helper.rb, line 86
def self.create_releaseNotes(metadata_root_dir, language_Key, language_MetaData)
  releaseNotes_metaDataDir = [
    metadata_root_dir,
    IOS_METADATA_LOC[language_Key],
    IOS_RELEASE_NOTES_DIR].join

  UI.message(["Step: Attempting to prepare", IOS_RELEASE_NOTES_FILENAME, "file for language:", language_Key, "- in location:", releaseNotes_metaDataDir].join(" ").blue)

  unless File.directory?(releaseNotes_metaDataDir)
    UI.message(["Error: Could not find location'", releaseNotes_metaDataDir, "'."].join(" ").red)
    raise Exception, "Lane was stopped by script"
  end

  file = releaseNotes_metaDataDir + IOS_RELEASE_NOTES_FILENAME
  if File.exists?(file) 
    File.delete(file)
  end

  new_File = File.new(file, "w")
  begin
    new_File.puts(language_MetaData.releaseNotesiOS)
  ensure
    new_File.close
  end

  new_File = File.open(file, "r")
  begin
    content = new_File.read
    UI.message(["Step:", IOS_RELEASE_NOTES_FILENAME, "- length: #{content.length}"].join(" ").blue)
  ensure
    new_File.close
  end
end
fetchCurrentMetaData(metadata_root_dir, app_version) click to toggle source
# File lib/fastlane/plugin/deploy_file_provider/helper/ios_file_helper.rb, line 76
def self.fetchCurrentMetaData(metadata_root_dir, app_version)
  fetch_command = "fastlane deliver download_metadata --force -m #{metadata_root_dir} --overwrite_screenshots --app_version #{app_version} --skip_binary_upload true"
  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