fastlane-plugin-stream_actions 0.4.8 → 0.4.10

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
2
  SHA256:
3
- metadata.gz: c541f74e6e0f551a8b1a2b4b19709a52c84a5e73e7dfb2d5b2dd0a4e4be33fa5
4
- data.tar.gz: b3a06af31fbf2f66fee224c99e0c83cf9926fde456a2d4c26d2e71faf0bf9373
3
+ metadata.gz: 2401c759c842685fbbb27e25fba273091eff05627873dc3f245a2692ac729986
4
+ data.tar.gz: 535b9fdb380ecae53c5ca3c39f69ad5f70ee481d0c8c65f088b3992914e53efa
5
5
  SHA512:
6
- metadata.gz: 201aadf11567df58b11f6294bc84575d2f0a13c296ce71d6de46487c9f46cee7304e08ca88982f0b2fcf8758fe0dc4a6a99ea186c897772d9293cd279f1877a9
7
- data.tar.gz: 831a890635a955cc88da0e8d14f1dfc0cc1ca17229a063a90cdfcc5f2053d59c7ccfc645d9e113efcebcf349ae0d08bd5ef2a30178c6d1d980b891422a67e928
6
+ metadata.gz: a2b45995454c839f0451745d3ca98da00f96ac09f862bc20669b96cf2c4ebf87973041bc2fbf4b8f16cd417d3db8b6abbbc61e6d75a88e4440f8b008804bff75
7
+ data.tar.gz: e1a9de8fdf353ff9138031d5ee066004942e86de5da07d6a159496919c4d34592a0b7a0f73d5bfb7b43caabf9971cd6a8428358a2e676c3365fa0af26bc85960
@@ -25,17 +25,17 @@ module Fastlane
25
25
  if body =~ /\brevision:/ || body.include?('.revision(')
26
26
  violations << violation(dependency, 'revision-pinned dependency — pin it with `from:` or `exact:` instead')
27
27
  end
28
- if body.include?('..<') || body =~ /"\s*\.\.\.\s*"/ || body.include?('.upToNextMinor(')
29
- violations << violation(dependency, 'version-range dependency — pin it with `from:` or `exact:` instead')
30
- end
31
28
  if body =~ /\bpath:/
32
29
  violations << violation(dependency, 'local path dependency — it will not resolve for package consumers')
33
30
  end
34
31
  if dependency[:url] && dependency[:url] !~ %r{\Ahttps://}
35
32
  violations << violation(dependency, 'insecure or non-https url — use `https://`')
36
33
  end
37
- if violations.empty? && body !~ /\b(from|exact):/ && !body.include?('.exact(') && !body.include?('.upToNextMajor(')
38
- violations << violation(dependency, 'missing version requirement — pin it with `from:` or `exact:`')
34
+ if violations.empty? && !version_requirement?(body)
35
+ violations << violation(
36
+ dependency,
37
+ 'missing version requirement — pin it with `from:`, `exact:`, or a version range'
38
+ )
39
39
  end
40
40
  violations
41
41
  end
@@ -52,6 +52,15 @@ module Fastlane
52
52
  end
53
53
  end
54
54
 
55
+ def self.version_requirement?(body)
56
+ body =~ /\b(from|exact):/ ||
57
+ body.include?('.exact(') ||
58
+ body.include?('.upToNextMajor(') ||
59
+ body.include?('.upToNextMinor(') ||
60
+ body.include?('..<') ||
61
+ body =~ /"\s*\.\.\.\s*"/
62
+ end
63
+
55
64
  def self.violation(dependency, message)
56
65
  location = dependency[:url] ? "#{dependency[:url]} (line #{dependency[:line]})" : "line #{dependency[:line]}"
57
66
  "- #{location}: #{message}"
@@ -98,8 +107,9 @@ module Fastlane
98
107
  end
99
108
 
100
109
  def self.details
101
- 'Fails if any dependency is declared via branch, revision, version range, local path, ' \
102
- 'insecure url, or is duplicated. All dependencies should be pinned with `from:` or `exact:`.'
110
+ 'Fails if any dependency is declared via branch, revision, local path, ' \
111
+ 'insecure url, or is duplicated. Dependencies should be pinned with `from:`, `exact:`, ' \
112
+ 'or a closed version range.'
103
113
  end
104
114
 
105
115
  def self.available_options
@@ -43,14 +43,12 @@ module Fastlane
43
43
  changelog =
44
44
  if params[:use_changelog]
45
45
  version = params[:is_manual_upload] ? 'Upcoming' : params[:app_version]
46
- # Strip variation selectors and ZWJ: pilot removes emoji from the changelog, but leaves
47
- # these invisible companions behind, and App Store Connect rejects them in whatsNew
48
- other_action.read_changelog(
49
- version: version,
50
- changelog_path: params[:changelog_path]
51
- ).gsub(/^### (.+)$/) { $1.upcase }
52
- .gsub(%r{\[(#\d+)\]\(https?://[^)]+\)}, '(\1)')
53
- .gsub(/[\u{FE0E}\u{FE0F}\u{200D}]/, '')
46
+ sanitize_changelog(
47
+ other_action.read_changelog(
48
+ version: version,
49
+ changelog_path: params[:changelog_path]
50
+ )
51
+ )
54
52
  else
55
53
  testflight_instructions(params)
56
54
  end
@@ -76,6 +74,15 @@ module Fastlane
76
74
  end
77
75
  end
78
76
 
77
+ # Strip all pictographs and their companions (skin tones, flags, variation selectors,
78
+ # ZWJ, keycaps, tag chars): pilot's own emoji stripper misses text-presentation symbols
79
+ # like U+26A0 and leaves companions behind, and App Store Connect rejects them in whatsNew
80
+ def self.sanitize_changelog(changelog)
81
+ changelog.gsub(/^### (.+)$/) { $1.upcase }
82
+ .gsub(%r{\[(#\d+)\]\(https?://[^)]+\)}, '(\1)')
83
+ .gsub(/[\p{Extended_Pictographic}\u{1F3FB}-\u{1F3FF}\u{1F1E6}-\u{1F1FF}\u{FE00}-\u{FE0F}\u{200D}\u{20E3}\u{E0020}-\u{E007F}]/, '')
84
+ end
85
+
79
86
  def self.testflight_instructions(params)
80
87
  return "This is the official #{params[:app_target]} sample app" unless params[:sdk_target]
81
88
 
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
2
  module StreamActions
3
- VERSION = '0.4.8'
3
+ VERSION = '0.4.10'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fastlane-plugin-stream_actions
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.8
4
+ version: 0.4.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - GetStream
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-08-10 00:00:00.000000000 Z
11
+ date: 2026-09-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: xctest_list