class Fastlane::Actions::TestmunkAction

def self.author

def self.author
  ["mposchen", "johannesberdin"]
end

def self.available_options

def self.available_options
  [
    FastlaneCore::ConfigItem.new(key: :ipa,
                                 env_name: "TESTMUNK_IPA",
                                 description: "Path to IPA",
                                 default_value: Actions.lane_context[SharedValues::IPA_OUTPUT_PATH],
                                 verify_block: proc do |value|
                                   raise "Please pass to existing ipa" unless File.exist? value
                                 end),
    FastlaneCore::ConfigItem.new(key: :email,
                                 env_name: "TESTMUNK_EMAIL",
                                 description: "Your email address",
                                 verify_block: proc do |value|
                                   raise "Please pass your Testmunk email address using `ENV['TESTMUNK_EMAIL'] = 'value'`" unless value
                                 end),
    FastlaneCore::ConfigItem.new(key: :api,
                                 env_name: "TESTMUNK_API",
                                 description: "Testmunk API Key",
                                 verify_block: proc do |value|
                                   raise "Please pass your Testmunk API Key using `ENV['TESTMUNK_API'] = 'value'`" unless value
                                 end),
    FastlaneCore::ConfigItem.new(key: :app,
                                 env_name: "TESTMUNK_APP",
                                 description: "Testmunk App Name",
                                 verify_block: proc do |value|
                                   raise "Please pass your Testmunk app name using `ENV['TESTMUNK_APP'] = 'value'`" unless value
                                 end)
  ]
end

def self.description

def self.description
  "Run tests on real devices using Testmunk"
end

def self.is_supported?(platform)

def self.is_supported?(platform)
  platform == :ios
end

def self.run(config)

def self.run(config)
  Helper.log.info 'Testmunk: Uploading the .ipa and starting your tests'.green
  Helper.log.info 'Zipping features/ to features.zip'.green
  zipped_features_path = File.expand_path('features.zip')
  Actions.sh(%(zip -r "features" "features/"))
  response = system("curl -H 'Accept: application/vnd.testmunk.v1+json'" \
      " -F 'file=@#{config[:ipa]}' -F 'autoStart=true'" \
      " -F 'testcases=@#{zipped_features_path}'" \
      " -F 'email=#{config[:email]}'" \
      " https://#{config[:api]}@api.testmunk.com/apps/#{config[:app]}/testruns")
  if response
    Helper.log.info 'Your tests are being executed right now. Please wait for the mail with results and decide if you want to continue.'.green
  else
    raise 'Something went wrong while uploading your app to Testmunk'.red
  end
end