Skip to content

DEPRECATED Xamarin.iOS Action (Integration)

Voydz edited this page Feb 20, 2017 · 1 revision

THIS IS DEPRECATED SINCE SOUYUZ IS DISTRIBUTED AS A FASTLANE PLUGIN

This is just a simple reference how souyuz could be integrated with the Xamarin.iOS platform as an fastlane action. It integrates as an replacement of gym so the lane context is prepared to be used with i.e. pilot or deliver.

Example Souyuz iOS Action

module Fastlane
  module Actions
    module SharedValues
      APP_BUNDLE_PATH = :APP_BUNDLE_PATH # for calabash
      APP_OUTPUT_PATH = :APP_OUTPUT_PATH
    end

    class SouyuzIosAction < Action
      def self.run(values)
        require 'souyuz'

        values[:platform] = Souyuz::Platform::IOS # this should be done automatically in the future

        absolute_ipa_path = File.expand_path(Souyuz::Manager.new.work(values))
        absolute_app_path = File.join(values[:output_path], "#{values[:assembly_name]}.app")
        absolute_dsym_path = absolute_ipa_path.gsub(".ipa", ".app.dSYM.zip")
        
        Actions.lane_context[SharedValues::APP_OUTPUT_PATH] = absolute_app_path
        Actions.lane_context[SharedValues::IPA_OUTPUT_PATH] = absolute_ipa_path
        Actions.lane_context[SharedValues::DSYM_OUTPUT_PATH] = absolute_dsym_path if File.exist?(absolute_dsym_path)
        ENV[SharedValues::APP_OUTPUT_PATH.to_s] = absolute_app_path
        ENV[SharedValues::APP_BUNDLE_PATH.to_s] = absolute_app_path # for calabash
        ENV[SharedValues::IPA_OUTPUT_PATH.to_s] = absolute_ipa_path # for deliver
        ENV[SharedValues::DSYM_OUTPUT_PATH.to_s] = absolute_dsym_path if File.exist?(absolute_dsym_path)

        return absolute_ipa_path
      end

      def self.description
        "Easily build and sign your app using `souyuz_ios`"
      end

      def self.return_value
        "The absolute path to the generated ipa file"
      end

      def self.author
        "Felix Rudat"
      end

      def self.available_options
        require 'souyuz'
        Souyuz::Options.available_options
      end

      def self.is_supported?(platform)
        [ :ios ].include? platform
      end
    end
  end
end