cocoapods-bugsnag 1.0.1 → 2.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 12564af5ff7fdcd54d48d736983657d60af39981
4
- data.tar.gz: 3ef6efb5cdabaf4085e289780172cd468c480bd7
2
+ SHA256:
3
+ metadata.gz: e60881092085623bd9218d8c7e08be44e3580d8ee2c11ea0a987d6a3d6853cc5
4
+ data.tar.gz: 12d938efbbeca703eaee0d8116a7494a74a534b2bd321f49e9ecbdd5c5ad6084
5
5
  SHA512:
6
- metadata.gz: 1b4309595c541e450cac9f177f7c1bf6819d9f0ac98056407ab75baf7d9cb4184a1859905d754fa2b6659ec2adca30d64ab9857145ff1cdaef31a3dc9086a9b7
7
- data.tar.gz: ebe3b93e4adb511bd3831160ab18f21e63f05ea08b0cc5613c0b876b947ef47c0df53386c551c45a4d431680ecbb7bb2f4d6ccba2805d381321fd22ce09e9a25
6
+ metadata.gz: c3e2c2541c4d531cc1331c2a923a6f0c8c2b0bce74099fb9454de34247bc5dd01ad5ec605202e339c6a3150497b1934ad3c70d8232d22bdfe2f6aa5ee167c231
7
+ data.tar.gz: bf2af0466ab94413a969861b6e91891bc513b2c349fcc733d8ec5b10bf257f6bbc5384007f39bde4cab4e4e636f3d196874eee188bff2f0813729f2b239d1b0e
@@ -0,0 +1,55 @@
1
+ # Changelog
2
+
3
+ ## 2.2.1 (20 Nov 2020)
4
+
5
+ ### Bug fixes
6
+
7
+ * The Xcode build phase now specifies its dependencies for improved reliability with Xcode's new build system.
8
+ | [#20](https://github.com/bugsnag/cocoapods-bugsnag/pull/20)
9
+
10
+ ## 2.2.0 (30 Sept 2020)
11
+
12
+ ### Enhancements
13
+
14
+ * This plugin now finds `Info.plist` using Xcode environment variables, rather than a `glob` operation for robustness.
15
+ | [#15](https://github.com/bugsnag/cocoapods-bugsnag/pull/15)
16
+
17
+ * This plugin will now only add itself to your Xcode project if it is explicitly added as a plugin in your `Podfile`. Previously it would install if `Bugsnag` was detected in your `Podfile`.
18
+ | [#16](https://github.com/bugsnag/cocoapods-bugsnag/pull/16)
19
+
20
+ ## 2.1.0 (14 Aug 2020)
21
+
22
+ ### Enhancements
23
+
24
+ * Added new location for API key in `Info.plist` from [bugsnag-cocoa v6.x](https://github.com/bugsnag/bugsnag-cocoa/releases/tag/v6.0.0).
25
+ | [#9](https://github.com/bugsnag/cocoapods-bugsnag/pull/9)
26
+
27
+ * Process now fails if no API key can be found before the upload begins
28
+ | [b624b58](https://github.com/bugsnag/cocoapods-bugsnag/commit/b624b58079a45cff55fed297bcf2ebc6073069a5) fixes [#5](https://github.com/bugsnag/cocoapods-bugsnag/issues/5)
29
+
30
+ ### Bug fixes
31
+
32
+ * Added the --http1.1 option to the curl command to force use of HTTP/1.1 to prevent the uploads of larger files from failing.
33
+ | [#8](https://github.com/bugsnag/cocoapods-bugsnag/pull/8)
34
+
35
+ ## 2.0.1 (04 Dec 2018)
36
+
37
+ ### Enhancements
38
+
39
+ * Added API key to generated upload command
40
+ | [#4](https://github.com/bugsnag/cocoapods-bugsnag/pull/4)
41
+
42
+ ## 2.0.0 (30 Jun 2016)
43
+
44
+ Version update to support CocoaPods 1.0
45
+
46
+ ## 1.0.1 (23 Dec 2015)
47
+
48
+ ### Bug Fixes
49
+
50
+ * Fix for missing specification warning during `pod install`
51
+ | [7d70389](https://github.com/bugsnag/cocoapods-bugsnag/commit/7d70389af31b2b8807195aca3dae0e62140ff176)
52
+
53
+ ## 1.0.0 (19 Dec 2015)
54
+
55
+ Initial Release
@@ -0,0 +1,56 @@
1
+ # cocoapods-bugsnag
2
+
3
+ A [CocoaPods](https://cocoapods.org) plugin for integrating Cocoa projects with
4
+ [Bugsnag](https://bugsnag.com), an error tracking and resolution tool. When
5
+ installed, the plugin will add a Run Script build phase to your project workspace
6
+ to upload your
7
+ [dSYM](http://noverse.com/blog/2010/03/how-to-deal-with-an-iphone-crash-report/)
8
+ files so the Bugsnag service can provide you with symbolicated stack traces.
9
+
10
+ ## Installation
11
+
12
+ `cocoapods-bugsnag` is available via [RubyGems](https://rubygems.org). To
13
+ install, run:
14
+
15
+ gem install cocoapods-bugsnag
16
+
17
+ ### Installing from Source
18
+
19
+ 1. Clone this repository
20
+ 2. Run `bundle install` from the root of the repository (installing
21
+ [bundler](http://bundler.io) if needed)
22
+ 3. Build the gem using `gem build cocoapods-bugsnag.gemspec`
23
+ 4. Install the gem using `gem install cocoapods-bugsnag-<version>.gem`
24
+
25
+ ## Usage
26
+
27
+ To add the build phase to your project, add `pod 'Bugsnag'`, and `plugin 'cocoapods-bugsnag'` to your `Podfile`:
28
+
29
+ ```ruby
30
+ pod 'Bugsnag'
31
+ plugin 'cocoapods-bugsnag'
32
+ ```
33
+
34
+ Then, install with:
35
+
36
+ ```bash
37
+ pod install
38
+ ```
39
+
40
+ Once added, uploading your dSYM files to Bugsnag will occur automatically.
41
+
42
+ By default, your Bugsnag API key will either be read from the `BUGSNAG_API_KEY`
43
+ environment variable or from the `:bugsnag:apiKey` (or `BugsnagAPIKey`) value in your
44
+ `Info.plist`. Alternatively edit the script in the new "Upload Bugsnag dSYM" build
45
+ phase in Xcode.
46
+
47
+ ## Support
48
+
49
+ * [Symbolication guide](https://docs.bugsnag.com/platforms/ios/symbolication-guide/)
50
+ * [Search open and closed issues](https://github.com/bugsnag/cocoapods-bugsnag/issues?utf8=✓&q=is%3Aissue)
51
+ for similar problems
52
+ * [Open an issue](https://github.com/bugsnag/cocoapods-bugsnag/issues/new)
53
+
54
+ ## License
55
+
56
+ This module is free software released under the MIT License. See [LICENSE.txt](./LICENSE.txt) for details.
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |spec|
2
2
  spec.name = "cocoapods-bugsnag"
3
- spec.version = "1.0.1"
3
+ spec.version = "2.2.1"
4
4
  spec.homepage = "https://bugsnag.com"
5
5
  spec.description = "Configures the dSYM upload phase of your project when integrated with bugsnag."
6
6
  spec.summary = "To get meaningful stacktraces from your crashes, the Bugsnag service needs your dSYM file for your build. This plugin adds an upload phase to your project where needed."
@@ -11,11 +11,12 @@ Gem::Specification.new do |spec|
11
11
  "lib/cocoapods_plugin.rb",
12
12
  "cocoapods-bugsnag.gemspec"
13
13
  ]
14
+ spec.extra_rdoc_files = [ "README.md", "CHANGELOG.md" ]
14
15
  spec.test_files = [ "spec/cocoapods_bugsnag_spec.rb" ]
15
16
  spec.require_paths = [ "lib" ]
16
17
  spec.license = "MIT"
17
18
 
18
- spec.add_dependency "cocoapods", "~> 0.39.0"
19
- spec.add_development_dependency "rake"
20
- spec.add_development_dependency "bacon"
19
+ spec.add_dependency "cocoapods", "~> 1.0"
20
+ spec.add_development_dependency "rake", ">= 12.3.3"
21
+ spec.add_development_dependency "bacon", "~> 1.0"
21
22
  end
@@ -2,7 +2,28 @@ module Pod
2
2
  class Installer::UserProjectIntegrator::TargetIntegrator
3
3
 
4
4
  BUGSNAG_PHASE_NAME = "Upload Bugsnag dSYM"
5
+ BUGSNAG_PHASE_INPUT_PATHS = [
6
+ "${BUILT_PRODUCTS_DIR}/${INFOPLIST_PATH}",
7
+ "${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${TARGET_NAME}"]
8
+ BUGSNAG_PHASE_SHELL_PATH = "/usr/bin/env ruby"
5
9
  BUGSNAG_PHASE_SCRIPT = <<'RUBY'
10
+ api_key = nil # Insert your key here to use it directly from this script
11
+
12
+ # Attempt to get the API key from an environment variable
13
+ unless api_key
14
+ api_key = ENV["BUGSNAG_API_KEY"]
15
+
16
+ # If not present, attempt to lookup the value from the Info.plist
17
+ unless api_key
18
+ info_plist_path = "#{ENV["BUILT_PRODUCTS_DIR"]}/#{ENV["INFOPLIST_PATH"]}"
19
+ plist_buddy_response = `/usr/libexec/PlistBuddy -c "print :bugsnag:apiKey" "#{info_plist_path}"`
20
+ plist_buddy_response = `/usr/libexec/PlistBuddy -c "print :BugsnagAPIKey" "#{info_plist_path}"` if !$?.success?
21
+ api_key = plist_buddy_response if $?.success?
22
+ end
23
+ end
24
+
25
+ fail("No Bugsnag API key detected - add your key to your Info.plist, BUGSNAG_API_KEY environment variable or this Run Script phase") unless api_key
26
+
6
27
  fork do
7
28
  Process.setsid
8
29
  STDIN.reopen("/dev/null")
@@ -12,7 +33,10 @@ fork do
12
33
  require 'shellwords'
13
34
 
14
35
  Dir["#{ENV["DWARF_DSYM_FOLDER_PATH"]}/*/Contents/Resources/DWARF/*"].each do |dsym|
15
- system("curl -F dsym=@#{Shellwords.escape(dsym)} -F projectRoot=#{Shellwords.escape(ENV["PROJECT_DIR"])} https://upload.bugsnag.com/")
36
+ curl_command = "curl --http1.1 -F dsym=@#{Shellwords.escape(dsym)} -F projectRoot=#{Shellwords.escape(ENV["PROJECT_DIR"])} "
37
+ curl_command += "-F apiKey=#{Shellwords.escape(api_key)} "
38
+ curl_command += "https://upload.bugsnag.com/"
39
+ system(curl_command)
16
40
  end
17
41
  end
18
42
  RUBY
@@ -20,7 +44,7 @@ RUBY
20
44
  alias_method :integrate_without_bugsnag!, :integrate!
21
45
  def integrate!
22
46
  integrate_without_bugsnag!
23
- return unless has_bugsnag_dependency?
47
+ return unless should_add_build_phase?
24
48
  return if bugsnag_native_targets.empty?
25
49
  UI.section("Integrating with Bugsnag") do
26
50
  add_bugsnag_upload_script_phase
@@ -36,23 +60,26 @@ RUBY
36
60
  bp.name == BUGSNAG_PHASE_NAME
37
61
  end.first || native_target.new_shell_script_build_phase(BUGSNAG_PHASE_NAME)
38
62
 
39
- phase.shell_path = "/usr/bin/env ruby"
63
+ phase.input_paths = BUGSNAG_PHASE_INPUT_PATHS
64
+ phase.shell_path = BUGSNAG_PHASE_SHELL_PATH
40
65
  phase.shell_script = BUGSNAG_PHASE_SCRIPT
41
66
  phase.show_env_vars_in_log = '0'
42
67
  end
43
68
  end
44
69
 
45
- def has_bugsnag_dependency?
46
- target.target_definition.dependencies.detect do |dep|
70
+ def should_add_build_phase?
71
+ has_bugsnag_dep = target.target_definition.dependencies.any? do |dep|
47
72
  dep.name.include?('Bugsnag')
48
- end != nil
73
+ end
74
+ uses_bugsnag_plugin = target.target_definition.podfile.plugins.key?('cocoapods-bugsnag')
75
+ return has_bugsnag_dep && uses_bugsnag_plugin
49
76
  end
50
77
 
51
78
  def bugsnag_native_targets
52
79
  @bugsnag_native_targets ||=(
53
80
  native_targets.reject do |native_target|
54
81
  native_target.shell_script_build_phases.any? do |bp|
55
- bp.name == BUGSNAG_PHASE_NAME && bp.shell_script == BUGSNAG_PHASE_SCRIPT
82
+ bp.name == BUGSNAG_PHASE_NAME && bp.input_paths == BUGSNAG_PHASE_INPUT_PATHS && bp.shell_path == BUGSNAG_PHASE_SHELL_PATH && bp.shell_script == BUGSNAG_PHASE_SCRIPT
56
83
  end
57
84
  end
58
85
  )
metadata CHANGED
@@ -1,68 +1,72 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cocoapods-bugsnag
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 2.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Delisa Mason
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-12-23 00:00:00.000000000 Z
11
+ date: 2020-11-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cocoapods
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.39.0
19
+ version: '1.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 0.39.0
26
+ version: '1.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: 12.3.3
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
40
+ version: 12.3.3
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: bacon
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '0'
47
+ version: '1.0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '0'
54
+ version: '1.0'
55
55
  description: Configures the dSYM upload phase of your project when integrated with
56
56
  bugsnag.
57
57
  email:
58
58
  - delisa@bugsnag.com
59
59
  executables: []
60
60
  extensions: []
61
- extra_rdoc_files: []
61
+ extra_rdoc_files:
62
+ - README.md
63
+ - CHANGELOG.md
62
64
  files:
65
+ - CHANGELOG.md
66
+ - README.md
67
+ - cocoapods-bugsnag.gemspec
63
68
  - lib/cocoapods_bugsnag.rb
64
69
  - lib/cocoapods_plugin.rb
65
- - cocoapods-bugsnag.gemspec
66
70
  - spec/cocoapods_bugsnag_spec.rb
67
71
  homepage: https://bugsnag.com
68
72
  licenses:
@@ -74,17 +78,16 @@ require_paths:
74
78
  - lib
75
79
  required_ruby_version: !ruby/object:Gem::Requirement
76
80
  requirements:
77
- - - '>='
81
+ - - ">="
78
82
  - !ruby/object:Gem::Version
79
83
  version: '0'
80
84
  required_rubygems_version: !ruby/object:Gem::Requirement
81
85
  requirements:
82
- - - '>='
86
+ - - ">="
83
87
  - !ruby/object:Gem::Version
84
88
  version: '0'
85
89
  requirements: []
86
- rubyforge_project:
87
- rubygems_version: 2.0.14
90
+ rubygems_version: 3.0.3
88
91
  signing_key:
89
92
  specification_version: 4
90
93
  summary: To get meaningful stacktraces from your crashes, the Bugsnag service needs