module Fastlane
  module Actions
    class XctoolAction < Action
      def self.run(params)
        UI.important("Have you seen the new 'scan' tool to run tests? https://docs.fastlane.tools/actions/scan/")
        unless Helper.test?
          UI.user_error!("xctool not installed, please install using `brew install xctool`") unless Helper.which('xctool')
        end

        params = [] if params.kind_of?(FastlaneCore::Configuration)

        Actions.sh('xctool ' + params.join(' '))
      end

      def self.description
        "Run tests using xctool"
      end

      def self.details
        [
          "You can run any `xctool` action. This will require having [xctool](https://github.com/facebook/xctool) installed through [Homebrew](http://brew.sh).",
          "It is recommended to store the build configuration in the `.xctool-args` file.",
          "More information: [https://docs.fastlane.tools/actions/xctool/](https://docs.fastlane.tools/actions/xctool/)."
        ].join("\n")
      end

      def self.author
        "KrauseFx"
      end

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

      def self.example_code
        [
          'xctool(:test)',

          '# If you prefer to have the build configuration stored in the `Fastfile`:
          xctool(:test, [
            "--workspace", "\'AwesomeApp.xcworkspace\'",
            "--scheme", "\'Schema Name\'",
            "--configuration", "Debug",
            "--sdk", "iphonesimulator",
            "--arch", "i386"
          ].join(" "))'
        ]
      end

      def self.category
        :testing
      end
    end
  end
end
