Sha256: bc6ea36902890a187af4429c4f83a7b7301444ac0325b04f74e3cd0be6cc5026

Contents?: true

Size: 1.63 KB

Versions: 1

Compression:

Stored size: 1.63 KB

Contents

namespace :crittercism do

  def platform
    # FIXME: need to be able to fetch this dynamically
    'iPhoneOS'
  end

  def app_dsym
    App.config.app_bundle(platform) + '.dSYM'
  end

  desc 'Zip .dSYM file'
  task :zip_dsym do
    puts 'Zipping dSYM file...'
    raise "Could not find dSYM file at #{app_dsym}" unless File.exist?(app_dsym)

    app_dsym_zip = app_dsym + '.zip'
    if !File.exist?(app_dsym_zip) or File.mtime(app_dsym) > File.mtime(app_dsym_zip)
      Dir.chdir(File.dirname(app_dsym)) do
        sh "/usr/bin/zip -q -r '#{File.basename(app_dsym)}.zip' '#{File.basename(app_dsym)}'"
      end
    end
  end

  desc 'Submit .dSYM to Crittercism'
  task :upload_dsym => :zip_dsym do
    require 'net/http'
    require 'net/http/post/multipart'

    puts 'Submitting dSYM to Crittercism...'

    upload_uri = "https://api.crittercism.com/api_beta/dsym/#{App.config.crittercism_app_id}"
    uri = URI.parse(upload_uri)
    http = Net::HTTP.new(uri.host, uri.port)
    http.use_ssl = true

    request = Net::HTTP::Post::Multipart.new(uri.path,
      'dsym' => UploadIO.new("#{app_dsym}.zip", 'application/zip', 'dsym.zip'),
      'key' => App.config.crittercism_api_key
    )
    response = http.request(request)

    puts "Crittercism Response: #{response.code} #{response.message}"
    p response.body unless /^2\d+/.match("#{response.code}")

    # TODO: use simple curl command once I can figure out how to display a helpful response
    # curl = "/usr/bin/curl #{upload_uri} "\
    #        '--silent --output /dev/null '\
    #        "-F dsym=@'#{app_dsym}.zip' "\
    #        "-F key='#{App.config.crittercism_api_key}' "
    # sh curl
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
crittercism-0.1.0 lib/crittercism/rake_tasks.rb