fastlane 2.227.0 → 2.232.2

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.
Files changed (132) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +102 -96
  3. data/bin/fastlane +2 -2
  4. data/deliver/lib/assets/summary.html.erb +3 -3
  5. data/deliver/lib/deliver/app_screenshot.rb +215 -347
  6. data/deliver/lib/deliver/app_screenshot_iterator.rb +4 -1
  7. data/deliver/lib/deliver/app_screenshot_validator.rb +5 -21
  8. data/deliver/lib/deliver/loader.rb +2 -9
  9. data/deliver/lib/deliver/runner.rb +1 -1
  10. data/deliver/lib/deliver/upload_metadata.rb +5 -0
  11. data/deliver/lib/deliver/upload_screenshots.rb +4 -2
  12. data/fastlane/lib/assets/completions/completion.bash +1 -1
  13. data/fastlane/lib/assets/completions/completion.sh +2 -2
  14. data/fastlane/lib/fastlane/actions/app_store_build_number.rb +19 -14
  15. data/fastlane/lib/fastlane/actions/appium.rb +1 -1
  16. data/fastlane/lib/fastlane/actions/docs/create_app_online.md +6 -3
  17. data/fastlane/lib/fastlane/actions/docs/sync_code_signing.md +11 -7
  18. data/fastlane/lib/fastlane/actions/docs/upload_to_app_store.md.erb +56 -17
  19. data/fastlane/lib/fastlane/actions/docs/upload_to_testflight.md +13 -1
  20. data/fastlane/lib/fastlane/actions/get_version_number.rb +1 -1
  21. data/fastlane/lib/fastlane/actions/import_certificate.rb +9 -1
  22. data/fastlane/lib/fastlane/actions/increment_build_number.rb +1 -1
  23. data/fastlane/lib/fastlane/actions/install_xcode_plugin.rb +3 -2
  24. data/fastlane/lib/fastlane/actions/latest_testflight_build_number.rb +1 -1
  25. data/fastlane/lib/fastlane/actions/modify_services.rb +1 -0
  26. data/fastlane/lib/fastlane/actions/notarize.rb +1 -1
  27. data/fastlane/lib/fastlane/actions/upload_to_app_store.rb +1 -1
  28. data/fastlane/lib/fastlane/actions/xcov.rb +1 -7
  29. data/fastlane/lib/fastlane/cli_tools_distributor.rb +19 -1
  30. data/fastlane/lib/fastlane/console.rb +2 -2
  31. data/fastlane/lib/fastlane/documentation/markdown_docs_generator.rb +4 -4
  32. data/fastlane/lib/fastlane/erb_template_helper.rb +1 -7
  33. data/fastlane/lib/fastlane/helper/s3_client_helper.rb +4 -0
  34. data/fastlane/lib/fastlane/plugins/template/%gem_name%.gemspec.erb +1 -1
  35. data/fastlane/lib/fastlane/plugins/template/.github/workflows/test.yml +20 -20
  36. data/fastlane/lib/fastlane/plugins/template/.rubocop.yml +1 -1
  37. data/fastlane/lib/fastlane/version.rb +2 -1
  38. data/fastlane/swift/Actions.swift +1 -1
  39. data/fastlane/swift/Appfile.swift +13 -5
  40. data/fastlane/swift/ArgumentProcessor.swift +1 -1
  41. data/fastlane/swift/Atomic.swift +1 -1
  42. data/fastlane/swift/ControlCommand.swift +5 -4
  43. data/fastlane/swift/Deliverfile.swift +2 -2
  44. data/fastlane/swift/DeliverfileProtocol.swift +265 -68
  45. data/fastlane/swift/Fastlane.swift +150 -157
  46. data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.pbxproj +3 -1
  47. data/fastlane/swift/Gymfile.swift +2 -2
  48. data/fastlane/swift/GymfileProtocol.swift +227 -54
  49. data/fastlane/swift/LaneFileProtocol.swift +4 -2
  50. data/fastlane/swift/MainProcess.swift +1 -1
  51. data/fastlane/swift/Matchfile.swift +2 -2
  52. data/fastlane/swift/MatchfileProtocol.swift +226 -59
  53. data/fastlane/swift/OptionalConfigValue.swift +1 -1
  54. data/fastlane/swift/Plugins.swift +1 -1
  55. data/fastlane/swift/Precheckfile.swift +2 -2
  56. data/fastlane/swift/PrecheckfileProtocol.swift +45 -13
  57. data/fastlane/swift/RubyCommand.swift +6 -7
  58. data/fastlane/swift/RubyCommandable.swift +1 -1
  59. data/fastlane/swift/Runner.swift +3 -3
  60. data/fastlane/swift/RunnerArgument.swift +1 -1
  61. data/fastlane/swift/Scanfile.swift +2 -2
  62. data/fastlane/swift/ScanfileProtocol.swift +334 -84
  63. data/fastlane/swift/Screengrabfile.swift +2 -2
  64. data/fastlane/swift/ScreengrabfileProtocol.swift +89 -24
  65. data/fastlane/swift/Snapshotfile.swift +2 -2
  66. data/fastlane/swift/SnapshotfileProtocol.swift +216 -53
  67. data/fastlane/swift/SocketClient.swift +7 -7
  68. data/fastlane/swift/SocketClientDelegateProtocol.swift +1 -1
  69. data/fastlane/swift/SocketResponse.swift +1 -1
  70. data/fastlane/swift/formatting/Rakefile +1 -2
  71. data/fastlane/swift/main.swift +1 -1
  72. data/fastlane_core/lib/assets/XMLTemplate.xml.erb +5 -1
  73. data/fastlane_core/lib/fastlane_core/cert_checker.rb +10 -0
  74. data/fastlane_core/lib/fastlane_core/command_executor.rb +3 -1
  75. data/fastlane_core/lib/fastlane_core/fastlane_pty.rb +5 -1
  76. data/fastlane_core/lib/fastlane_core/ipa_file_analyser.rb +4 -14
  77. data/fastlane_core/lib/fastlane_core/ipa_upload_package_builder.rb +19 -2
  78. data/fastlane_core/lib/fastlane_core/itunes_transporter.rb +143 -106
  79. data/fastlane_core/lib/fastlane_core/keychain_importer.rb +3 -1
  80. data/fastlane_core/lib/fastlane_core/project.rb +8 -0
  81. data/fastlane_core/lib/fastlane_core/provisioning_profile.rb +7 -1
  82. data/frameit/lib/frameit/device.rb +2 -2
  83. data/frameit/lib/frameit/device_types.rb +108 -70
  84. data/frameit/lib/frameit/template_finder.rb +1 -1
  85. data/gym/lib/assets/wrap_xcodebuild/xcbuild-safe.sh +1 -0
  86. data/gym/lib/gym/module.rb +9 -4
  87. data/gym/lib/gym/options.rb +20 -2
  88. data/gym/lib/gym/runner.rb +38 -3
  89. data/match/lib/match/options.rb +1 -0
  90. data/match/lib/match/storage/s3_storage.rb +4 -7
  91. data/pilot/lib/pilot/build_manager.rb +7 -1
  92. data/produce/lib/produce/commands_generator.rb +2 -0
  93. data/produce/lib/produce/developer_center.rb +1 -0
  94. data/produce/lib/produce/service.rb +6 -1
  95. data/scan/lib/scan/error_handler.rb +5 -0
  96. data/scan/lib/scan/options.rb +13 -3
  97. data/scan/lib/scan/test_command_generator.rb +10 -2
  98. data/sigh/lib/assets/resign.sh +6 -3
  99. data/sigh/lib/sigh/local_manage.rb +6 -4
  100. data/sigh/lib/sigh/options.rb +1 -0
  101. data/sigh/lib/sigh/runner.rb +23 -3
  102. data/snapshot/lib/snapshot/detect_values.rb +1 -1
  103. data/snapshot/lib/snapshot/options.rb +13 -1
  104. data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb +4 -2
  105. data/spaceship/lib/spaceship/client.rb +32 -2
  106. data/spaceship/lib/spaceship/connect_api/models/age_rating_declaration.rb +65 -9
  107. data/spaceship/lib/spaceship/connect_api/models/app_info_localization.rb +4 -4
  108. data/spaceship/lib/spaceship/connect_api/models/app_screenshot_set.rb +7 -1
  109. data/spaceship/lib/spaceship/connect_api/models/app_store_version_localization.rb +16 -16
  110. data/spaceship/lib/spaceship/connect_api/models/build_upload.rb +42 -0
  111. data/spaceship/lib/spaceship/connect_api/models/bundle_id_capability.rb +2 -0
  112. data/spaceship/lib/spaceship/connect_api/models/certificate.rb +32 -2
  113. data/spaceship/lib/spaceship/connect_api/models/device.rb +1 -2
  114. data/spaceship/lib/spaceship/connect_api/models/profile.rb +2 -3
  115. data/spaceship/lib/spaceship/connect_api/models/webhook.rb +62 -0
  116. data/spaceship/lib/spaceship/connect_api/provisioning/provisioning.rb +0 -6
  117. data/spaceship/lib/spaceship/connect_api/testflight/testflight.rb +9 -0
  118. data/spaceship/lib/spaceship/connect_api/tunes/tunes.rb +38 -0
  119. data/spaceship/lib/spaceship/connect_api.rb +2 -0
  120. data/spaceship/lib/spaceship/errors.rb +8 -6
  121. data/spaceship/lib/spaceship/portal/key.rb +22 -3
  122. data/spaceship/lib/spaceship/portal/portal_client.rb +29 -2
  123. data/spaceship/lib/spaceship/spaceauth_runner.rb +5 -15
  124. data/supply/lib/supply/client.rb +18 -1
  125. data/trainer/lib/trainer/legacy_xcresult.rb +1 -1
  126. data/trainer/lib/trainer/test_parser.rb +1 -1
  127. data/trainer/lib/trainer/xcresult/helper.rb +11 -1
  128. metadata +153 -37
  129. data/fastlane/lib/fastlane/actions/hipchat.rb +0 -200
  130. data/fastlane/lib/fastlane/core_ext/bundler_monkey_patch.rb +0 -14
  131. data/fastlane/lib/fastlane/plugins/template/.circleci/config.yml +0 -43
  132. data/fastlane/lib/fastlane/plugins/template/.travis.yml +0 -4
metadata CHANGED
@@ -1,39 +1,40 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fastlane
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.227.0
4
+ version: 2.232.2
5
5
  platform: ruby
6
6
  authors:
7
- - Maksym Grebenets
8
- - Felix Krause
9
- - Matthew Ellis
10
- - Stefan Natchev
11
- - Iulian Onofrei
12
- - Aaron Brager
13
- - Helmut Januschka
14
- - Jimmy Dee
15
7
  - Jorge Revuelta H
16
8
  - Danielle Tomlinson
17
- - Olivier Halligon
18
- - Luka Mirosevic
9
+ - Fumiya Nakamura
10
+ - Jérôme Lacoste
11
+ - Roger Oba
12
+ - Aaron Brager
13
+ - Maksym Grebenets
14
+ - Helmut Januschka
19
15
  - Manu Wallner
16
+ - Olivier Halligon
17
+ - Daniel Jankowski
18
+ - Satoshi Namai
19
+ - Connor Tumbleson
20
+ - Felix Krause
21
+ - Iulian Onofrei
22
+ - Josh Holtz
20
23
  - Jan Piotrowski
21
24
  - Joshua Liebowitz
22
- - Fumiya Nakamura
23
25
  - Kohki Miki
24
26
  - Łukasz Grabowski
25
27
  - Andrew McBurney
26
- - Josh Holtz
27
- - Roger Oba
28
- - Max Ott
29
- - Daniel Jankowski
28
+ - Stefan Natchev
30
29
  - Manish Rathi
31
- - Jérôme Lacoste
32
- - Satoshi Namai
30
+ - Jimmy Dee
31
+ - Max Ott
32
+ - Matthew Ellis
33
+ - Luka Mirosevic
33
34
  autorequire:
34
35
  bindir: bin
35
36
  cert_chain: []
36
- date: 2025-03-13 00:00:00.000000000 Z
37
+ date: 2026-02-27 00:00:00.000000000 Z
37
38
  dependencies:
38
39
  - !ruby/object:Gem::Dependency
39
40
  name: addressable
@@ -75,14 +76,14 @@ dependencies:
75
76
  requirements:
76
77
  - - "~>"
77
78
  - !ruby/object:Gem::Version
78
- version: '1.0'
79
+ version: '1.197'
79
80
  type: :runtime
80
81
  prerelease: false
81
82
  version_requirements: !ruby/object:Gem::Requirement
82
83
  requirements:
83
84
  - - "~>"
84
85
  - !ruby/object:Gem::Version
85
- version: '1.0'
86
+ version: '1.197'
86
87
  - !ruby/object:Gem::Dependency
87
88
  name: babosa
88
89
  requirement: !ruby/object:Gem::Requirement
@@ -109,20 +110,20 @@ dependencies:
109
110
  requirements:
110
111
  - - ">="
111
112
  - !ruby/object:Gem::Version
112
- version: 1.12.0
113
+ version: 1.17.3
113
114
  - - "<"
114
115
  - !ruby/object:Gem::Version
115
- version: 3.0.0
116
+ version: 5.0.0
116
117
  type: :runtime
117
118
  prerelease: false
118
119
  version_requirements: !ruby/object:Gem::Requirement
119
120
  requirements:
120
121
  - - ">="
121
122
  - !ruby/object:Gem::Version
122
- version: 1.12.0
123
+ version: 1.17.3
123
124
  - - "<"
124
125
  - !ruby/object:Gem::Version
125
- version: 3.0.0
126
+ version: 5.0.0
126
127
  - !ruby/object:Gem::Dependency
127
128
  name: CFPropertyList
128
129
  requirement: !ruby/object:Gem::Requirement
@@ -362,9 +363,9 @@ dependencies:
362
363
  - - ">="
363
364
  - !ruby/object:Gem::Version
364
365
  version: 1.6.0
365
- - - "<"
366
+ - - "<="
366
367
  - !ruby/object:Gem::Version
367
- version: 2.0.0
368
+ version: 2.1.1
368
369
  type: :runtime
369
370
  prerelease: false
370
371
  version_requirements: !ruby/object:Gem::Requirement
@@ -372,9 +373,9 @@ dependencies:
372
373
  - - ">="
373
374
  - !ruby/object:Gem::Version
374
375
  version: 1.6.0
375
- - - "<"
376
+ - - "<="
376
377
  - !ruby/object:Gem::Version
377
- version: 2.0.0
378
+ version: 2.1.1
378
379
  - !ruby/object:Gem::Dependency
379
380
  name: google-cloud-storage
380
381
  requirement: !ruby/object:Gem::Requirement
@@ -727,21 +728,138 @@ dependencies:
727
728
  requirements:
728
729
  - - "~>"
729
730
  - !ruby/object:Gem::Version
730
- version: 0.4.0
731
+ version: 0.4.1
732
+ type: :runtime
733
+ prerelease: false
734
+ version_requirements: !ruby/object:Gem::Requirement
735
+ requirements:
736
+ - - "~>"
737
+ - !ruby/object:Gem::Version
738
+ version: 0.4.1
739
+ - !ruby/object:Gem::Dependency
740
+ name: abbrev
741
+ requirement: !ruby/object:Gem::Requirement
742
+ requirements:
743
+ - - "~>"
744
+ - !ruby/object:Gem::Version
745
+ version: 0.1.2
746
+ type: :runtime
747
+ prerelease: false
748
+ version_requirements: !ruby/object:Gem::Requirement
749
+ requirements:
750
+ - - "~>"
751
+ - !ruby/object:Gem::Version
752
+ version: 0.1.2
753
+ - !ruby/object:Gem::Dependency
754
+ name: base64
755
+ requirement: !ruby/object:Gem::Requirement
756
+ requirements:
757
+ - - "~>"
758
+ - !ruby/object:Gem::Version
759
+ version: 0.2.0
760
+ type: :runtime
761
+ prerelease: false
762
+ version_requirements: !ruby/object:Gem::Requirement
763
+ requirements:
764
+ - - "~>"
765
+ - !ruby/object:Gem::Version
766
+ version: 0.2.0
767
+ - !ruby/object:Gem::Dependency
768
+ name: csv
769
+ requirement: !ruby/object:Gem::Requirement
770
+ requirements:
771
+ - - "~>"
772
+ - !ruby/object:Gem::Version
773
+ version: '3.3'
731
774
  type: :runtime
732
775
  prerelease: false
733
776
  version_requirements: !ruby/object:Gem::Requirement
734
777
  requirements:
735
778
  - - "~>"
736
779
  - !ruby/object:Gem::Version
737
- version: 0.4.0
780
+ version: '3.3'
781
+ - !ruby/object:Gem::Dependency
782
+ name: mutex_m
783
+ requirement: !ruby/object:Gem::Requirement
784
+ requirements:
785
+ - - "~>"
786
+ - !ruby/object:Gem::Version
787
+ version: 0.3.0
788
+ type: :runtime
789
+ prerelease: false
790
+ version_requirements: !ruby/object:Gem::Requirement
791
+ requirements:
792
+ - - "~>"
793
+ - !ruby/object:Gem::Version
794
+ version: 0.3.0
795
+ - !ruby/object:Gem::Dependency
796
+ name: nkf
797
+ requirement: !ruby/object:Gem::Requirement
798
+ requirements:
799
+ - - "~>"
800
+ - !ruby/object:Gem::Version
801
+ version: 0.2.0
802
+ type: :runtime
803
+ prerelease: false
804
+ version_requirements: !ruby/object:Gem::Requirement
805
+ requirements:
806
+ - - "~>"
807
+ - !ruby/object:Gem::Version
808
+ version: 0.2.0
809
+ - !ruby/object:Gem::Dependency
810
+ name: logger
811
+ requirement: !ruby/object:Gem::Requirement
812
+ requirements:
813
+ - - ">="
814
+ - !ruby/object:Gem::Version
815
+ version: '1.6'
816
+ - - "<"
817
+ - !ruby/object:Gem::Version
818
+ version: '2.0'
819
+ type: :runtime
820
+ prerelease: false
821
+ version_requirements: !ruby/object:Gem::Requirement
822
+ requirements:
823
+ - - ">="
824
+ - !ruby/object:Gem::Version
825
+ version: '1.6'
826
+ - - "<"
827
+ - !ruby/object:Gem::Version
828
+ version: '2.0'
829
+ - !ruby/object:Gem::Dependency
830
+ name: benchmark
831
+ requirement: !ruby/object:Gem::Requirement
832
+ requirements:
833
+ - - ">="
834
+ - !ruby/object:Gem::Version
835
+ version: 0.1.0
836
+ type: :runtime
837
+ prerelease: false
838
+ version_requirements: !ruby/object:Gem::Requirement
839
+ requirements:
840
+ - - ">="
841
+ - !ruby/object:Gem::Version
842
+ version: 0.1.0
843
+ - !ruby/object:Gem::Dependency
844
+ name: ostruct
845
+ requirement: !ruby/object:Gem::Requirement
846
+ requirements:
847
+ - - ">="
848
+ - !ruby/object:Gem::Version
849
+ version: 0.1.0
850
+ type: :runtime
851
+ prerelease: false
852
+ version_requirements: !ruby/object:Gem::Requirement
853
+ requirements:
854
+ - - ">="
855
+ - !ruby/object:Gem::Version
856
+ version: 0.1.0
738
857
  description: The easiest way to automate beta deployments and releases for your iOS
739
858
  and Android apps
740
859
  email:
741
860
  - fastlane@krausefx.com
742
861
  executables:
743
862
  - bin-proxy
744
- - console
745
863
  - fastlane
746
864
  - match_file
747
865
  extensions: []
@@ -928,7 +1046,6 @@ files:
928
1046
  - fastlane/lib/fastlane/actions/hg_commit_version_bump.rb
929
1047
  - fastlane/lib/fastlane/actions/hg_ensure_clean_status.rb
930
1048
  - fastlane/lib/fastlane/actions/hg_push.rb
931
- - fastlane/lib/fastlane/actions/hipchat.rb
932
1049
  - fastlane/lib/fastlane/actions/hockey.rb
933
1050
  - fastlane/lib/fastlane/actions/ifttt.rb
934
1051
  - fastlane/lib/fastlane/actions/import.rb
@@ -1069,7 +1186,6 @@ files:
1069
1186
  - fastlane/lib/fastlane/commands_generator.rb
1070
1187
  - fastlane/lib/fastlane/configuration_helper.rb
1071
1188
  - fastlane/lib/fastlane/console.rb
1072
- - fastlane/lib/fastlane/core_ext/bundler_monkey_patch.rb
1073
1189
  - fastlane/lib/fastlane/documentation/actions_list.rb
1074
1190
  - fastlane/lib/fastlane/documentation/docs_generator.rb
1075
1191
  - fastlane/lib/fastlane/documentation/markdown_docs_generator.rb
@@ -1112,12 +1228,10 @@ files:
1112
1228
  - fastlane/lib/fastlane/plugins/plugin_update_manager.rb
1113
1229
  - fastlane/lib/fastlane/plugins/plugins.rb
1114
1230
  - fastlane/lib/fastlane/plugins/template/%gem_name%.gemspec.erb
1115
- - fastlane/lib/fastlane/plugins/template/.circleci/config.yml
1116
1231
  - fastlane/lib/fastlane/plugins/template/.github/workflows/test.yml
1117
1232
  - fastlane/lib/fastlane/plugins/template/.gitignore
1118
1233
  - fastlane/lib/fastlane/plugins/template/.rspec
1119
1234
  - fastlane/lib/fastlane/plugins/template/.rubocop.yml
1120
- - fastlane/lib/fastlane/plugins/template/.travis.yml
1121
1235
  - fastlane/lib/fastlane/plugins/template/Gemfile.erb
1122
1236
  - fastlane/lib/fastlane/plugins/template/LICENSE.erb
1123
1237
  - fastlane/lib/fastlane/plugins/template/README.md.erb
@@ -1509,6 +1623,7 @@ files:
1509
1623
  - spaceship/lib/spaceship/connect_api/models/build_bundle.rb
1510
1624
  - spaceship/lib/spaceship/connect_api/models/build_bundle_file_sizes.rb
1511
1625
  - spaceship/lib/spaceship/connect_api/models/build_delivery.rb
1626
+ - spaceship/lib/spaceship/connect_api/models/build_upload.rb
1512
1627
  - spaceship/lib/spaceship/connect_api/models/bundle_id.rb
1513
1628
  - spaceship/lib/spaceship/connect_api/models/bundle_id_capability.rb
1514
1629
  - spaceship/lib/spaceship/connect_api/models/capabilities.rb
@@ -1529,6 +1644,7 @@ files:
1529
1644
  - spaceship/lib/spaceship/connect_api/models/territory_availability.rb
1530
1645
  - spaceship/lib/spaceship/connect_api/models/user.rb
1531
1646
  - spaceship/lib/spaceship/connect_api/models/user_invitation.rb
1647
+ - spaceship/lib/spaceship/connect_api/models/webhook.rb
1532
1648
  - spaceship/lib/spaceship/connect_api/provisioning/client.rb
1533
1649
  - spaceship/lib/spaceship/connect_api/provisioning/provisioning.rb
1534
1650
  - spaceship/lib/spaceship/connect_api/response.rb
@@ -1709,7 +1825,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
1709
1825
  requirements:
1710
1826
  - - ">="
1711
1827
  - !ruby/object:Gem::Version
1712
- version: '2.6'
1828
+ version: '2.7'
1713
1829
  required_rubygems_version: !ruby/object:Gem::Requirement
1714
1830
  requirements:
1715
1831
  - - ">="
@@ -1,200 +0,0 @@
1
- module Fastlane
2
- module Actions
3
- module SharedValues
4
- end
5
-
6
- class HipchatAction < Action
7
- def self.run(options)
8
- require 'net/http'
9
- require 'uri'
10
-
11
- api_token = options[:api_token]
12
- api_version = options[:version]
13
- api_host = options[:api_host]
14
-
15
- message_format = options[:message_format]
16
-
17
- channel = options[:channel]
18
- if ['yellow', 'red', 'green', 'purple', 'gray', 'random'].include?(options[:custom_color]) == true
19
- color = options[:custom_color]
20
- else
21
- color = (options[:success] ? 'green' : 'red')
22
- end
23
-
24
- from = options[:from]
25
-
26
- message = options[:message]
27
- if (message_format == "html") && (options[:include_html_header] == true)
28
- message = "<table><tr><td><img src='https://fastlane.tools/assets/img/fastlane_icon.png' width='50' height='50'></td><td>#{message[0..9999]}</td></tr></table>"
29
- end
30
-
31
- if api_version.to_i == 1
32
- ########## running on V1 ##########
33
- if user?(channel)
34
- UI.user_error!("HipChat private message not working with API V1 please use API V2 instead")
35
- else
36
- uri = URI.parse("https://#{api_host}/v1/rooms/message")
37
- response = Net::HTTP.post_form(uri, { 'from' => from,
38
- 'auth_token' => api_token,
39
- 'color' => color,
40
- 'message_format' => message_format,
41
- 'room_id' => channel,
42
- 'message' => message,
43
- 'notify' => options[:notify_room] ? '1' : '0' })
44
-
45
- check_response_code(response, channel)
46
- end
47
- else
48
- ########## running on V2 ##########
49
- # Escape channel's name to guarantee it is a valid URL resource.
50
- # First of all we verify that the value is not already escaped,
51
- # escaping an escaped value will produce a wrong channel name.
52
- require 'addressable/uri'
53
- escaped_channel = Addressable::URI.encode(channel) == channel ? Addressable::URI.encode(channel) : channel
54
- if user?(channel)
55
- params = { 'message' => message, 'message_format' => message_format }
56
- json_headers = { 'Content-Type' => 'application/json',
57
- 'Accept' => 'application/json', 'Authorization' => "Bearer #{api_token}" }
58
-
59
- uri = URI.parse("https://#{api_host}/v2/user/#{escaped_channel}/message")
60
- http = Net::HTTP.new(uri.host, uri.port)
61
- http.use_ssl = true
62
-
63
- response = http.post(uri.path, params.to_json, json_headers)
64
- else
65
- uri = URI.parse("https://#{api_host}/v2/room/#{escaped_channel}/notification")
66
- response = Net::HTTP.post_form(uri, { 'from' => from,
67
- 'auth_token' => api_token,
68
- 'color' => color,
69
- 'message_format' => message_format,
70
- 'message' => message,
71
- 'notify' => options[:notify_room] ? 'true' : 'false' })
72
- end
73
- check_response_code(response, channel)
74
- end
75
- end
76
-
77
- def self.user?(channel)
78
- channel.to_s.start_with?('@')
79
- end
80
-
81
- def self.check_response_code(response, channel)
82
- case response.code.to_i
83
- when 200, 204
84
- true
85
- when 404
86
- UI.user_error!("Channel `#{channel}` not found")
87
- when 401
88
- UI.user_error!("Access denied for channel `#{channel}`")
89
- else
90
- UI.user_error!("Unexpected #{response.code} for `#{channel}` with response: #{response.body}")
91
- end
92
- end
93
-
94
- def self.description
95
- "Send a error/success message to [HipChat](https://www.hipchat.com/)"
96
- end
97
-
98
- def self.available_options
99
- [
100
- FastlaneCore::ConfigItem.new(key: :message,
101
- env_name: "FL_HIPCHAT_MESSAGE",
102
- description: "The message to post on HipChat",
103
- default_value: ''),
104
- FastlaneCore::ConfigItem.new(key: :channel,
105
- env_name: "FL_HIPCHAT_CHANNEL",
106
- description: "The room or @username"),
107
- FastlaneCore::ConfigItem.new(key: :api_token,
108
- env_name: "HIPCHAT_API_TOKEN",
109
- sensitive: true,
110
- description: "Hipchat API Token",
111
- verify_block: proc do |value|
112
- unless value.to_s.length > 0
113
- UI.error("Please add 'ENV[\"HIPCHAT_API_TOKEN\"] = \"your token\"' to your Fastfile's `before_all` section.")
114
- UI.user_error!("No HIPCHAT_API_TOKEN given.")
115
- end
116
- end),
117
- FastlaneCore::ConfigItem.new(key: :custom_color,
118
- env_name: "FL_HIPCHAT_CUSTOM_COLOR",
119
- description: "Specify a custom color, this overrides the success boolean. Can be one of 'yellow', 'red', 'green', 'purple', 'gray', or 'random'",
120
- optional: true),
121
- FastlaneCore::ConfigItem.new(key: :success,
122
- env_name: "FL_HIPCHAT_SUCCESS",
123
- description: "Was this build successful? (true/false)",
124
- optional: true,
125
- default_value: true,
126
- type: Boolean),
127
- FastlaneCore::ConfigItem.new(key: :version,
128
- env_name: "HIPCHAT_API_VERSION",
129
- description: "Version of the Hipchat API. Must be 1 or 2",
130
- verify_block: proc do |value|
131
- if value.nil? || ![1, 2].include?(value.to_i)
132
- UI.error("Please add 'ENV[\"HIPCHAT_API_VERSION\"] = \"1 or 2\"' to your Fastfile's `before_all` section.")
133
- UI.user_error!("No HIPCHAT_API_VERSION given.")
134
- end
135
- end),
136
- FastlaneCore::ConfigItem.new(key: :notify_room,
137
- env_name: "HIPCHAT_NOTIFY_ROOM",
138
- description: "Should the people in the room be notified? (true/false)",
139
- default_value: false,
140
- optional: true,
141
- type: Boolean),
142
- FastlaneCore::ConfigItem.new(key: :api_host,
143
- env_name: "HIPCHAT_API_HOST",
144
- description: "The host of the HipChat-Server API",
145
- default_value: "api.hipchat.com",
146
- optional: true),
147
- FastlaneCore::ConfigItem.new(key: :message_format,
148
- env_name: "FL_HIPCHAT_MESSAGE_FORMAT",
149
- description: "Format of the message to post. Must be either 'html' or 'text'",
150
- default_value: "html",
151
- optional: true,
152
- verify_block: proc do |value|
153
- unless ["html", "text"].include?(value.to_s)
154
- UI.error("Please specify the message format as either 'html' or 'text'.")
155
- UI.user_error!("Unrecognized message_format.")
156
- end
157
- end),
158
- FastlaneCore::ConfigItem.new(key: :include_html_header,
159
- env_name: "FL_HIPCHAT_INCLUDE_HTML_HEADER",
160
- description: "Should html formatted messages include a preformatted header? (true/false)",
161
- default_value: true,
162
- optional: true,
163
- type: Boolean),
164
- FastlaneCore::ConfigItem.new(key: :from,
165
- env_name: "FL_HIPCHAT_FROM",
166
- description: "Name the message will appear to be sent from",
167
- default_value: "fastlane",
168
- optional: true)
169
- ]
170
- end
171
-
172
- def self.author
173
- "jingx23"
174
- end
175
-
176
- def self.is_supported?(platform)
177
- true
178
- end
179
-
180
- def self.details
181
- "Send a message to **room** (by default) or a direct message to **@username** with success (green) or failure (red) status."
182
- end
183
-
184
- def self.example_code
185
- [
186
- 'hipchat(
187
- message: "App successfully released!",
188
- message_format: "html", # or "text", defaults to "html"
189
- channel: "Room or @username",
190
- success: true
191
- )'
192
- ]
193
- end
194
-
195
- def self.category
196
- :notifications
197
- end
198
- end
199
- end
200
- end
@@ -1,14 +0,0 @@
1
- # https://github.com/bundler/bundler/issues/4368
2
- #
3
- # There is an issue with RubyGems 2.6.2 where it attempts to call Bundler::SpecSet#size, which doesn't exist.
4
- # If a gem is not installed, a `Gem::Specification.find_by_name` call will trigger this problem.
5
- if Object.const_defined?(:Bundler) &&
6
- Bundler.const_defined?(:SpecSet) &&
7
- Bundler::SpecSet.instance_methods.include?(:length) &&
8
- !Bundler::SpecSet.instance_methods.include?(:size)
9
- module Bundler
10
- class SpecSet
11
- alias size length
12
- end
13
- end
14
- end
@@ -1,43 +0,0 @@
1
- # Ruby CircleCI 2.0 configuration file
2
- #
3
- # Check https://circleci.com/docs/2.0/language-ruby/ for more details
4
- #
5
- version: 2
6
- jobs:
7
- build:
8
- docker:
9
- # specify the version you desire here
10
- - image: circleci/ruby:2.5
11
-
12
- working_directory: ~/repo
13
-
14
- steps:
15
- - checkout
16
-
17
- # Download and cache dependencies
18
- - restore_cache:
19
- keys:
20
- - v1-dependencies-{{ checksum "Gemfile" }}
21
- # fallback to using the latest cache if no exact match is found
22
- - v1-dependencies-
23
-
24
- - run:
25
- name: install dependencies
26
- command: bundle check || bundle install --jobs=4 --retry=3 --path vendor/bundle
27
-
28
- - save_cache:
29
- paths:
30
- - ./vendor
31
- key: v1-dependencies-{{ checksum "Gemfile" }}
32
-
33
- # run tests!
34
- - run:
35
- name: run tests
36
- command: bundle exec rake
37
-
38
- # collect reports
39
- - store_test_results:
40
- path: ~/repo/test-results
41
- - store_artifacts:
42
- path: ~/repo/test-results
43
- destination: test-results
@@ -1,4 +0,0 @@
1
- # os: osx # enable this if you need macOS support
2
- language: ruby
3
- rvm:
4
- - 2.2.4