class Deliver::Setup

Attributes

is_swift[RW]

Public Instance Methods

deliverfile_path() click to toggle source
# File deliver/lib/deliver/setup.rb, line 54
def deliverfile_path
  if self.is_swift
    return "#{Deliver::ROOT}/lib/assets/DeliverfileDefault.swift"
  else
    return "#{Deliver::ROOT}/lib/assets/DeliverfileDefault"
  end
end
download_screenshots(path, options) click to toggle source
# File deliver/lib/deliver/setup.rb, line 198
def download_screenshots(path, options)
  FileUtils.mkdir_p(path)
  Deliver::DownloadScreenshots.run(options, path)
end
generate_deliver_file(deliver_path, options) click to toggle source

This method takes care of creating a new 'deliver' folder, containing the app metadata and screenshots folders

# File deliver/lib/deliver/setup.rb, line 41
def generate_deliver_file(deliver_path, options)
  app = Deliver.cache[:app]

  platform = Spaceship::ConnectAPI::Platform.map(options[:platform])
  v = app.get_latest_app_store_version(platform: platform)

  metadata_path = options[:metadata_path] || File.join(deliver_path, 'metadata')
  generate_metadata_files(app, v, metadata_path, options)

  # Generate the final Deliverfile here
  return File.read(deliverfile_path)
end
generate_metadata_files(app, version, path, options) click to toggle source
# File deliver/lib/deliver/setup.rb, line 62
def generate_metadata_files(app, version, path, options)
  # App info localizations
  if options[:use_live_version]
    app_info = app.fetch_live_app_info
    UI.user_error!("The option `use_live_version` was set to `true`, however no live app was found on App Store Connect.") unless app_info
  else
    app_info = app.fetch_edit_app_info || app.fetch_live_app_info
  end
  app_info_localizations = app_info.get_app_info_localizations
  app_info_localizations.each do |localization|
    language = localization.locale

    UploadMetadata::LOCALISED_APP_VALUES.each do |file_key, attribute_name|
      content = localization.send(attribute_name.to_slug) || ""
      content += "\n"

      resulting_path = File.join(path, language, "#{file_key}.txt")
      FileUtils.mkdir_p(File.expand_path('..', resulting_path))
      File.write(resulting_path, content)

      UI.message("Writing to '#{resulting_path}'")
    end
  end

  # Version localizations
  version_localizations = version.get_app_store_version_localizations
  version_localizations.each do |localization|
    language = localization.locale

    UploadMetadata::LOCALISED_VERSION_VALUES.each do |file_key, attribute_name|
      content = localization.send(attribute_name) || ""
      content += "\n"

      resulting_path = File.join(path, language, "#{file_key}.txt")
      FileUtils.mkdir_p(File.expand_path('..', resulting_path))
      File.write(resulting_path, content)

      UI.message("Writing to '#{resulting_path}'")
    end
  end

  # App info (categories)
  UploadMetadata::NON_LOCALISED_APP_VALUES.each do |file_key, attribute_name|
    category = app_info.send(attribute_name)

    content = category ? category.id.to_s : ""
    content += "\n"

    resulting_path = File.join(path, "#{file_key}.txt")
    FileUtils.mkdir_p(File.expand_path('..', resulting_path))
    File.write(resulting_path, content)

    UI.message("Writing to '#{resulting_path}'")
  end

  # Version
  UploadMetadata::NON_LOCALISED_VERSION_VALUES.each do |file_key, attribute_name|
    content = version.send(attribute_name) || ""
    content += "\n"

    resulting_path = File.join(path, "#{file_key}.txt")
    FileUtils.mkdir_p(File.expand_path('..', resulting_path))
    File.write(resulting_path, content)

    UI.message("Writing to '#{resulting_path}'")
  end

  # Review information
  app_store_review_detail = begin
                              version.fetch_app_store_review_detail
                            rescue
                              nil
                            end # errors if doesn't exist
  UploadMetadata::REVIEW_INFORMATION_VALUES.each do |file_key, attribute_name|
    if app_store_review_detail
      content = app_store_review_detail.send(attribute_name) || ""
    else
      content = ""
    end
    content += "\n"

    base_dir = File.join(path, UploadMetadata::REVIEW_INFORMATION_DIR)
    resulting_path = File.join(base_dir, "#{file_key}.txt")
    FileUtils.mkdir_p(File.expand_path('..', resulting_path))
    File.write(resulting_path, content)

    UI.message("Writing to '#{resulting_path}'")
  end
end
generate_metadata_files_old(v, path) click to toggle source
# File deliver/lib/deliver/setup.rb, line 152
def generate_metadata_files_old(v, path)
  app_details = v.application.details

  # All the localised metadata
  (UploadMetadata::LOCALISED_VERSION_VALUES.keys + UploadMetadata::LOCALISED_APP_VALUES.keys).each do |key|
    v.description.languages.each do |language|
      if UploadMetadata::LOCALISED_VERSION_VALUES.keys.include?(key)
        content = v.send(key)[language].to_s
      else
        content = app_details.send(key)[language].to_s
      end
      content += "\n"
      resulting_path = File.join(path, language, "#{key}.txt")
      FileUtils.mkdir_p(File.expand_path('..', resulting_path))
      File.write(resulting_path, content)
      UI.message("Writing to '#{resulting_path}'")
    end
  end

  # All non-localised metadata
  (UploadMetadata::NON_LOCALISED_VERSION_VALUES.keys + UploadMetadata::NON_LOCALISED_APP_VALUES).each do |key|
    if UploadMetadata::NON_LOCALISED_VERSION_VALUES.keys.include?(key)
      content = v.send(key).to_s
    else
      content = app_details.send(key).to_s
    end
    content += "\n"
    resulting_path = File.join(path, "#{key}.txt")
    File.write(resulting_path, content)
    UI.message("Writing to '#{resulting_path}'")
  end

  # Review information
  UploadMetadata::REVIEW_INFORMATION_VALUES_LEGACY.each do |key, option_name|
    content = v.send(key).to_s
    content += "\n"
    base_dir = File.join(path, UploadMetadata::REVIEW_INFORMATION_DIR)
    FileUtils.mkdir_p(base_dir)
    resulting_path = File.join(base_dir, "#{option_name}.txt")
    File.write(resulting_path, content)
    UI.message("Writing to '#{resulting_path}'")
  end

  UI.success("Successfully created new configuration files.")
end
run(options, is_swift: false) click to toggle source
# File deliver/lib/deliver/setup.rb, line 11
def run(options, is_swift: false)
  containing = Helper.fastlane_enabled_folder_path
  self.is_swift = is_swift

  if is_swift
    file_path = File.join(containing, 'Deliverfile.swift')
  else
    file_path = File.join(containing, 'Deliverfile')
  end
  data = generate_deliver_file(containing, options)
  setup_deliver(file_path, data, containing, options)
end
setup_deliver(file_path, data, deliver_path, options) click to toggle source
# File deliver/lib/deliver/setup.rb, line 24
def setup_deliver(file_path, data, deliver_path, options)
  File.write(file_path, data)

  screenshots_path = options[:screenshots_path] || File.join(deliver_path, 'screenshots')
  unless options[:skip_screenshots]
    download_screenshots(screenshots_path, options)

    # Add a README to the screenshots folder
    FileUtils.mkdir_p(screenshots_path) # just in case the fetching didn't work
    File.write(File.join(screenshots_path, 'README.txt'), File.read("#{Deliver::ROOT}/lib/assets/ScreenshotsHelp"))
  end

  UI.success("Successfully created new Deliverfile at path '#{file_path}'")
end