diff --git a/.rubocop.yml b/.rubocop.yml index cd2cb0128..5135e9f4b 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -54,6 +54,18 @@ Style/FetchEnvVar: Style/HashSyntax: EnforcedShorthandSyntax: never +########## Naming Rules + +# 76 methods in this gem use `is_`/`has_`/`have_` prefixes. These are part of the public API +# and renaming them would be a breaking change for consumers. +Naming/PredicatePrefix: + Enabled: false + +# Many flagged methods are part of Fastlane's Action API contract (e.g. `self.run`) +# or are public API methods that cannot be renamed without breaking consumers. +Naming/PredicateMethod: + Enabled: false + ########## Gemspec Rules # This was turned on by default after updating Rubocop to `1.50.2`. We want to disable this for now because @@ -62,6 +74,23 @@ Style/HashSyntax: Gemspec/RequireMFA: Enabled: false +# Dev dependencies are defined in the gemspec, which is the standard pattern for this project. +Gemspec/DevelopmentDependencies: + Exclude: + - 'fastlane-plugin-wpmreleasetoolkit.gemspec' + +########## Style Rules + +# No class-level documentation is required — this is a Fastlane plugin, not a library with public docs. +Style/Documentation: + Enabled: false + +# These files intentionally reopen external modules (Nokogiri, Fastlane). +Style/OneClassPerFile: + Exclude: + - 'lib/fastlane/plugin/wpmreleasetoolkit/helper/android/android_localize_helper.rb' + - 'lib/fastlane/plugin/wpmreleasetoolkit/helper/ci_helper.rb' + ########## Metrics / Max Lengths Rules Layout/LineLength: @@ -107,3 +136,15 @@ RSpec/MultipleMemoizedHelpers: RSpec/MultipleExpectations: Enabled: false + +# The project consistently uses `receive` style across 136 usages — this is the preferred style. +RSpec/MessageSpies: + EnforcedStyle: receive + +# Spec structure uses up to 5 levels of nesting, which is acceptable for this project. +RSpec/NestedGroups: + Max: 5 + +# Spec file paths don't follow the default RuboCop convention due to the plugin's namespace structure. +RSpec/SpecFilePathFormat: + Enabled: false diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index a6989a251..5e079b4e5 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -6,14 +6,6 @@ # Note that changes in the inspected code, or installation of new # versions of RuboCop, may require this file to be generated again. -# Offense count: 10 -# Configuration parameters: EnforcedStyle, AllowedGems, Include. -# SupportedStyles: Gemfile, gems.rb, gemspec -# Include: **/*.gemspec, **/Gemfile, **/gems.rb -Gemspec/DevelopmentDependencies: - Exclude: - - 'fastlane-plugin-wpmreleasetoolkit.gemspec' - # Offense count: 3 Lint/NonLocalExitFromIterator: Exclude: @@ -33,15 +25,6 @@ Naming/MethodParameterName: - 'lib/fastlane/plugin/wpmreleasetoolkit/actions/android/an_update_metadata_source_action.rb' - 'lib/fastlane/plugin/wpmreleasetoolkit/actions/common/gp_update_metadata_source.rb' -# Offense count: 76 -# Configuration parameters: NamePrefix, ForbiddenPrefixes, AllowedMethods, MethodDefinitionMacros. -# NamePrefix: is_, has_, have_ -# ForbiddenPrefixes: is_, has_, have_ -# AllowedMethods: is_a? -# MethodDefinitionMacros: define_method, define_singleton_method -Naming/PredicateName: - Enabled: false - # Offense count: 2 # Configuration parameters: EnforcedStyle, CheckMethodNames, CheckSymbols, AllowedIdentifiers, AllowedPatterns. # SupportedStyles: snake_case, normalcase, non_integer @@ -87,12 +70,6 @@ RSpec/InstanceVariable: - 'spec/git_helper_spec.rb' - 'spec/ios_lint_localizations_spec.rb' -# Offense count: 136 -# Configuration parameters: . -# SupportedStyles: have_received, receive -RSpec/MessageSpies: - EnforcedStyle: receive - # Offense count: 46 # Configuration parameters: EnforcedStyle, IgnoreSharedExamples. # SupportedStyles: always, named_only @@ -103,11 +80,6 @@ RSpec/NamedSubject: - 'spec/configuration_spec.rb' - 'spec/file_reference_spec.rb' -# Offense count: 20 -# Configuration parameters: AllowedGroups. -RSpec/NestedGroups: - Max: 5 - # Offense count: 54 # Configuration parameters: AllowedPatterns. # AllowedPatterns: ^expect_, ^assert_ @@ -131,12 +103,6 @@ RSpec/ReceiveMessages: - 'spec/file_reference_spec.rb' - 'spec/firebase_device_spec.rb' -# Offense count: 63 -# Configuration parameters: Include, CustomTransform, IgnoreMethods, IgnoreMetadata. -# Include: **/*_spec.rb -RSpec/SpecFilePathFormat: - Enabled: false - # Offense count: 7 RSpec/StubbedMock: Exclude: @@ -181,11 +147,6 @@ Security/Open: - 'lib/fastlane/plugin/wpmreleasetoolkit/actions/android/an_validate_lib_strings_action.rb' - 'lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_create_xml_release_notes.rb' -# Offense count: 95 -# Configuration parameters: AllowedConstants. -Style/Documentation: - Enabled: false - # Offense count: 1 # This cop supports safe autocorrection (--autocorrect). Style/EmptyLiteral: diff --git a/CHANGELOG.md b/CHANGELOG.md index 882522750..fade2a897 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,7 +18,8 @@ _None_ ### Internal Changes -_None_ +- Remove `activesupport` as a runtime dependency — replace the only production usage (`deep_dup`) with `Marshal` deep copy — and move it to a dev-only dependency for specs. [#709] +- Update RuboCop configuration: fix obsolete `Naming/PredicateName` cop rename, move permanent style choices from `.rubocop_todo.yml` to `.rubocop.yml`, and fix a `Style/FileOpen` violation. [#709] ## 14.3.0 diff --git a/Gemfile.lock b/Gemfile.lock index d1c5e33bc..d1dfe5306 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -2,7 +2,6 @@ PATH remote: . specs: fastlane-plugin-wpmreleasetoolkit (14.3.0) - activesupport (>= 6.1.7.1, < 8) buildkit (~> 1.5) chroma (= 0.2.0) diffy (~> 3.3) @@ -23,34 +22,29 @@ PATH GEM remote: https://rubygems.org/ specs: - CFPropertyList (3.0.7) - base64 - nkf - rexml + CFPropertyList (3.0.8) abbrev (0.1.2) - activesupport (7.2.3.1) + activesupport (8.1.3) base64 - benchmark (>= 0.3) bigdecimal concurrent-ruby (~> 1.0, >= 1.3.1) connection_pool (>= 2.2.5) drb i18n (>= 1.6, < 2) + json logger (>= 1.4.2) - minitest (>= 5.1, < 6) + minitest (>= 5.1) securerandom (>= 0.3) tzinfo (~> 2.0, >= 2.0.5) - addressable (2.8.7) - public_suffix (>= 2.0.2, < 7.0) - algoliasearch (1.27.5) - httpclient (~> 2.8, >= 2.8.3) - json (>= 1.5.1) + uri (>= 0.13.1) + addressable (2.8.9) + public_suffix (>= 2.0.2, < 8.0) artifactory (3.0.17) - ast (2.4.2) + ast (2.4.3) atomos (0.1.3) aws-eventstream (1.4.0) - aws-partitions (1.1196.0) - aws-sdk-core (3.240.0) + aws-partitions (1.1232.0) + aws-sdk-core (3.244.0) aws-eventstream (~> 1, >= 1.3.0) aws-partitions (~> 1, >= 1.992.0) aws-sigv4 (~> 1.9) @@ -58,11 +52,11 @@ GEM bigdecimal jmespath (~> 1, >= 1.6.1) logger - aws-sdk-kms (1.118.0) - aws-sdk-core (~> 3, >= 3.239.1) + aws-sdk-kms (1.123.0) + aws-sdk-core (~> 3, >= 3.244.0) aws-sigv4 (~> 1.5) - aws-sdk-s3 (1.208.0) - aws-sdk-core (~> 3, >= 3.234.0) + aws-sdk-s3 (1.217.1) + aws-sdk-core (~> 3, >= 3.244.0) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.5) aws-sigv4 (1.12.1) @@ -70,53 +64,17 @@ GEM babosa (1.0.4) base64 (0.2.0) benchmark (0.5.0) - bigdecimal (4.0.1) + bigdecimal (4.1.0) buildkit (1.6.1) sawyer (>= 0.6) - buildkite-test_collector (2.9.0) + buildkite-test_collector (2.13.0) + concurrent-ruby chroma (0.2.0) claide (1.1.0) claide-plugins (0.9.2) cork nap open4 (~> 1.3) - cocoapods (1.16.2) - addressable (~> 2.8) - claide (>= 1.0.2, < 2.0) - cocoapods-core (= 1.16.2) - cocoapods-deintegrate (>= 1.0.3, < 2.0) - cocoapods-downloader (>= 2.1, < 3.0) - cocoapods-plugins (>= 1.0.0, < 2.0) - cocoapods-search (>= 1.0.0, < 2.0) - cocoapods-trunk (>= 1.6.0, < 2.0) - cocoapods-try (>= 1.1.0, < 2.0) - colored2 (~> 3.1) - escape (~> 0.0.4) - fourflusher (>= 2.3.0, < 3.0) - gh_inspector (~> 1.0) - molinillo (~> 0.8.0) - nap (~> 1.0) - ruby-macho (>= 2.3.0, < 3.0) - xcodeproj (>= 1.27.0, < 2.0) - cocoapods-core (1.16.2) - activesupport (>= 5.0, < 8) - addressable (~> 2.8) - algoliasearch (~> 1.0) - concurrent-ruby (~> 1.1) - fuzzy_match (~> 2.0.4) - nap (~> 1.0) - netrc (~> 0.11) - public_suffix (~> 4.0) - typhoeus (~> 1.0) - cocoapods-deintegrate (1.0.5) - cocoapods-downloader (2.1) - cocoapods-plugins (1.0.0) - nap - cocoapods-search (1.0.1) - cocoapods-trunk (1.6.0) - nap (>= 0.8, < 2.0) - netrc (~> 0.11) - cocoapods-try (1.2.0) codecov (0.6.0) simplecov (>= 0.15, < 0.22) coderay (1.1.3) @@ -128,25 +86,25 @@ GEM connection_pool (3.0.2) cork (0.3.0) colored2 (~> 3.1) - crack (1.0.0) + crack (1.0.1) bigdecimal rexml csv (3.3.5) - danger (9.5.1) + danger (9.5.3) base64 (~> 0.2) claide (~> 1.0) claide-plugins (>= 0.9.2) - colored2 (~> 3.1) + colored2 (>= 3.1, < 5) cork (~> 0.1) faraday (>= 0.9.0, < 3.0) faraday-http-cache (~> 2.0) - git (~> 1.13) - kramdown (~> 2.3) + git (>= 1.13, < 3.0) + kramdown (>= 2.5.1, < 3.0) kramdown-parser-gfm (~> 1.0) octokit (>= 4.0) pstore (~> 0.1) - terminal-table (>= 1, < 4) - danger-dangermattic (1.2.2) + terminal-table (>= 1, < 5) + danger-dangermattic (1.2.4) danger (~> 9.4) danger-plugin-api (~> 1.0) danger-rubocop (~> 0.13) @@ -157,8 +115,8 @@ GEM danger rubocop (~> 1.0) declarative (0.0.20) - diff-lcs (1.6.0) - diffy (3.4.3) + diff-lcs (1.6.2) + diffy (3.4.4) digest-crc (0.7.0) rake (>= 12.0.0, < 14.0.0) docile (1.4.1) @@ -167,9 +125,6 @@ GEM drb (2.2.3) emoji_regex (3.2.3) erubi (1.13.1) - escape (0.0.4) - ethon (0.16.0) - ffi (>= 1.15.0) excon (0.112.0) faraday (1.10.5) faraday-em_http (~> 1.0) @@ -183,13 +138,13 @@ GEM faraday-rack (~> 1.0) faraday-retry (~> 1.0) ruby2_keywords (>= 0.0.4) - faraday-cookie_jar (0.0.7) + faraday-cookie_jar (0.0.8) faraday (>= 0.8.0) - http-cookie (~> 1.0.0) + http-cookie (>= 1.0.0) faraday-em_http (1.0.0) faraday-em_synchrony (1.0.1) faraday-excon (1.1.0) - faraday-http-cache (2.5.1) + faraday-http-cache (2.6.1) faraday (>= 0.8) faraday-httpclient (1.0.1) faraday-multipart (1.2.0) @@ -198,18 +153,19 @@ GEM faraday-net_http_persistent (1.2.0) faraday-patron (1.0.0) faraday-rack (1.0.0) - faraday-retry (1.0.3) + faraday-retry (1.0.4) faraday_middleware (1.2.1) faraday (~> 1.0) - fastimage (2.4.0) - fastlane (2.231.0) + fastimage (2.4.1) + fastlane (2.232.2) CFPropertyList (>= 2.3, < 4.0.0) abbrev (~> 0.1.2) addressable (>= 2.8, < 3.0.0) artifactory (~> 3.0) - aws-sdk-s3 (~> 1.0) + aws-sdk-s3 (~> 1.197) babosa (>= 1.0.3, < 2.0.0) base64 (~> 0.2.0) + benchmark (>= 0.1.0) bundler (>= 1.17.3, < 5.0.0) colored (~> 1.2) commander (~> 4.6) @@ -225,7 +181,7 @@ GEM gh_inspector (>= 1.1.2, < 2.0.0) google-apis-androidpublisher_v3 (~> 0.3) google-apis-playcustomapp_v1 (~> 0.1) - google-cloud-env (>= 1.6.0, < 2.0.0) + google-cloud-env (>= 1.6.0, <= 2.1.1) google-cloud-storage (~> 1.31) highline (~> 2.0) http-cookie (~> 1.0.5) @@ -238,6 +194,7 @@ GEM naturally (~> 2.2) nkf (~> 0.2.0) optparse (>= 0.1.1, < 1.0.0) + ostruct (>= 0.1.0) plist (>= 3.1.0, < 4.0.0) rubyzip (>= 2.0.0, < 3.0.0) security (= 0.1.5) @@ -252,11 +209,9 @@ GEM xcpretty-travis-formatter (>= 0.0.3, < 2.0.0) fastlane-sirp (1.0.0) sysrandom (~> 1.0) - ffi (1.17.1) - forwardable (1.3.3) - fourflusher (2.3.1) - fuzzy_match (2.0.4) - gettext (3.5.1) + fiddle (1.1.8) + forwardable (1.4.0) + gettext (3.5.2) erubi locale (>= 2.0.5) prime @@ -266,43 +221,45 @@ GEM git (1.19.1) addressable (~> 2.8) rchardet (~> 1.8) - google-apis-androidpublisher_v3 (0.54.0) - google-apis-core (>= 0.11.0, < 2.a) - google-apis-core (0.11.3) + google-apis-androidpublisher_v3 (0.98.0) + google-apis-core (>= 0.15.0, < 2.a) + google-apis-core (0.18.0) addressable (~> 2.5, >= 2.5.1) - googleauth (>= 0.16.2, < 2.a) - httpclient (>= 2.8.1, < 3.a) + googleauth (~> 1.9) + httpclient (>= 2.8.3, < 3.a) mini_mime (~> 1.0) + mutex_m representable (~> 3.0) retriable (>= 2.0, < 4.a) - rexml - google-apis-iamcredentials_v1 (0.17.0) - google-apis-core (>= 0.11.0, < 2.a) - google-apis-playcustomapp_v1 (0.13.0) - google-apis-core (>= 0.11.0, < 2.a) - google-apis-storage_v1 (0.31.0) - google-apis-core (>= 0.11.0, < 2.a) + google-apis-iamcredentials_v1 (0.26.0) + google-apis-core (>= 0.15.0, < 2.a) + google-apis-playcustomapp_v1 (0.17.0) + google-apis-core (>= 0.15.0, < 2.a) + google-apis-storage_v1 (0.61.0) + google-apis-core (>= 0.15.0, < 2.a) google-cloud-core (1.8.0) google-cloud-env (>= 1.0, < 3.a) google-cloud-errors (~> 1.0) - google-cloud-env (1.6.0) - faraday (>= 0.17.3, < 3.0) - google-cloud-errors (1.5.0) - google-cloud-storage (1.47.0) + google-cloud-env (2.1.1) + faraday (>= 1.0, < 3.a) + google-cloud-errors (1.6.0) + google-cloud-storage (1.59.0) addressable (~> 2.8) digest-crc (~> 0.4) - google-apis-iamcredentials_v1 (~> 0.1) - google-apis-storage_v1 (~> 0.31.0) + google-apis-core (>= 0.18, < 2) + google-apis-iamcredentials_v1 (~> 0.18) + google-apis-storage_v1 (>= 0.42) google-cloud-core (~> 1.6) - googleauth (>= 0.16.2, < 2.a) + googleauth (~> 1.9) mini_mime (~> 1.0) - googleauth (1.8.1) - faraday (>= 0.17.3, < 3.a) + googleauth (1.11.2) + faraday (>= 1.0, < 3.a) + google-cloud-env (~> 2.1) jwt (>= 1.4, < 3.0) multi_json (~> 1.11) os (>= 0.9, < 2.0) signet (>= 0.16, < 2.a) - hashdiff (1.1.2) + hashdiff (1.2.1) highline (2.0.3) http-cookie (1.0.8) domain_name (~> 0.5) @@ -312,32 +269,31 @@ GEM concurrent-ruby (~> 1.0) java-properties (0.3.0) jmespath (1.6.2) - json (2.10.2) - jwt (2.10.1) + json (2.19.3) + jwt (2.10.2) base64 - kramdown (2.5.1) - rexml (>= 3.3.9) + kramdown (2.5.2) + rexml (>= 3.4.4) kramdown-parser-gfm (1.1.0) kramdown (~> 2.0) - language_server-protocol (3.17.0.4) + language_server-protocol (3.17.0.5) lint_roller (1.1.0) - locale (2.1.4) + locale (2.1.5) + fiddle logger (1.7.0) method_source (0.9.2) mini_magick (4.13.2) mini_mime (1.1.5) mini_portile2 (2.8.9) minitest (5.27.0) - molinillo (0.8.0) - multi_json (1.15.0) + multi_json (1.19.1) multipart-post (2.4.1) mutex_m (0.3.0) nanaimo (0.4.0) nap (1.1.0) - naturally (2.2.1) - netrc (0.11.0) + naturally (2.3.0) nkf (0.2.0) - nokogiri (1.19.1) + nokogiri (1.19.2) mini_portile2 (~> 2.8.2) racc (~> 1.4) observer (0.1.2) @@ -346,58 +302,60 @@ GEM sawyer (~> 0.9) open4 (1.3.4) options (2.3.2) - optparse (0.6.0) + optparse (0.8.1) os (1.1.4) - parallel (1.26.3) - parser (3.3.7.1) + ostruct (0.6.3) + parallel (1.27.0) + parser (3.3.11.1) ast (~> 2.4.1) racc - pkg-config (1.6.0) + pkg-config (1.6.5) plist (3.7.2) - prime (0.1.3) + prime (0.1.4) forwardable singleton + prism (1.9.0) progress_bar (1.3.4) highline (>= 1.6) options (~> 2.3.0) pry (0.12.2) coderay (~> 1.1.0) method_source (~> 0.9.0) - pstore (0.2.0) + pstore (0.2.1) public_suffix (4.0.7) racc (1.8.1) rainbow (3.1.1) - rake (13.2.1) - rake-compiler (1.2.9) + rake (13.3.1) + rake-compiler (1.3.1) rake - rchardet (1.9.0) - regexp_parser (2.10.0) + rchardet (1.10.0) + regexp_parser (2.11.3) representable (3.2.0) declarative (< 0.1.0) trailblazer-option (>= 0.1.1, < 0.2.0) uber (< 0.2.0) - retriable (3.1.2) - rexml (3.4.2) + retriable (3.4.1) + rexml (3.4.4) rmagick (5.5.0) observer (~> 0.1) pkg-config (~> 1.4) rouge (3.28.0) - rspec (3.13.0) + rspec (3.13.2) rspec-core (~> 3.13.0) rspec-expectations (~> 3.13.0) rspec-mocks (~> 3.13.0) - rspec-core (3.13.3) + rspec-core (3.13.6) rspec-support (~> 3.13.0) - rspec-expectations (3.13.3) + rspec-expectations (3.13.5) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.13.0) - rspec-mocks (3.13.2) + rspec-mocks (3.13.8) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.13.0) - rspec-support (3.13.2) + rspec-support (3.13.7) rspec_junit_formatter (0.4.1) rspec-core (>= 2, < 4, != 2.12.0) - rubocop (1.74.0) + rubocop (1.86.0) json (~> 2.3) language_server-protocol (~> 3.17.0.2) lint_roller (~> 1.1.0) @@ -405,26 +363,26 @@ GEM parser (>= 3.3.0.2) rainbow (>= 2.2.2, < 4.0) regexp_parser (>= 2.9.3, < 3.0) - rubocop-ast (>= 1.38.0, < 2.0) + rubocop-ast (>= 1.49.0, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 2.4.0, < 4.0) - rubocop-ast (1.39.0) - parser (>= 3.3.1.0) + rubocop-ast (1.49.1) + parser (>= 3.3.7.2) + prism (~> 1.7) rubocop-rspec (3.0.0) rubocop (~> 1.40) - ruby-macho (2.5.1) ruby-progressbar (1.13.0) ruby2_keywords (0.0.5) rubyzip (2.4.1) - sawyer (0.9.2) + sawyer (0.9.3) addressable (>= 2.3.5) faraday (>= 0.17.3, < 3) securerandom (0.4.1) security (0.1.5) - signet (0.19.0) + signet (0.21.0) addressable (~> 2.8) faraday (>= 0.17.5, < 3.a) - jwt (>= 1.5, < 3.0) + jwt (>= 1.5, < 4.0) multi_json (~> 1.10) simctl (1.6.10) CFPropertyList @@ -445,13 +403,12 @@ GEM tty-screen (0.8.2) tty-spinner (0.9.3) tty-cursor (~> 0.7) - typhoeus (1.4.1) - ethon (>= 0.9.0) tzinfo (2.0.6) concurrent-ruby (~> 1.0) uber (0.1.0) unicode-display_width (2.6.0) - webmock (3.25.1) + uri (1.1.1) + webmock (3.26.2) addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) @@ -467,15 +424,15 @@ GEM rouge (~> 3.28.0) xcpretty-travis-formatter (1.0.1) xcpretty (~> 0.2, >= 0.0.7) - yard (0.9.37) + yard (0.9.38) PLATFORMS ruby DEPENDENCIES + activesupport (~> 8.1) buildkite-test_collector (~> 2.3) bundler (~> 2.0) - cocoapods (~> 1.10) codecov danger-dangermattic (~> 1.0) faraday (~> 1.10, >= 1.10.5) @@ -492,4 +449,4 @@ DEPENDENCIES yard BUNDLED WITH - 2.6.3 + 2.6.8 diff --git a/fastlane-plugin-wpmreleasetoolkit.gemspec b/fastlane-plugin-wpmreleasetoolkit.gemspec index 3b68211e4..d0f1995a4 100644 --- a/fastlane-plugin-wpmreleasetoolkit.gemspec +++ b/fastlane-plugin-wpmreleasetoolkit.gemspec @@ -26,7 +26,6 @@ Gem::Specification.new do |spec| # since this would cause a circular dependency # spec.add_dependency 'your-dependency', '~> 1.0.0' - spec.add_dependency 'activesupport', '>= 6.1.7.1', '< 8' # Required for fastlane to not crash when importing this plugin spec.add_dependency 'buildkit', '~> 1.5' spec.add_dependency 'chroma', '0.2.0' spec.add_dependency 'diffy', '~> 3.3' @@ -46,8 +45,9 @@ Gem::Specification.new do |spec| # `google-cloud-storage` is required by fastlane, but we pin it in case it's not in the future spec.add_dependency 'google-cloud-storage', '~> 1.31' + # Only needed for specs (Time.use_zone, String#to_time, Hash#slice!) + spec.add_development_dependency 'activesupport', '~> 8.1' spec.add_development_dependency 'bundler', '~> 2.0' - spec.add_development_dependency 'cocoapods', '~> 1.10' # Use at least Fastlane 2.210.0 to ensure compatibility with the Xcode 14 toolchain # See https://github.com/fastlane/fastlane/releases/tag/2.210.0 spec.add_development_dependency 'fastlane', '~> 2.210' diff --git a/lib/fastlane/plugin/wpmreleasetoolkit/actions/common/create_github_release_action.rb b/lib/fastlane/plugin/wpmreleasetoolkit/actions/common/create_github_release_action.rb index 248ca0259..f56856f00 100644 --- a/lib/fastlane/plugin/wpmreleasetoolkit/actions/common/create_github_release_action.rb +++ b/lib/fastlane/plugin/wpmreleasetoolkit/actions/common/create_github_release_action.rb @@ -18,7 +18,7 @@ def self.run(params) prerelease = params[:prerelease] is_draft = params[:is_draft] - UI.message("Creating #{is_draft ? 'draft ' : ''}release #{version} in #{repository}.") + UI.message("Creating #{'draft ' if is_draft}release #{version} in #{repository}.") # Verify assets assets.each do |file_path| UI.user_error!("Can't find file #{file_path}!") unless File.exist?(file_path) diff --git a/lib/fastlane/plugin/wpmreleasetoolkit/actions/common/extract_release_notes_for_version_action.rb b/lib/fastlane/plugin/wpmreleasetoolkit/actions/common/extract_release_notes_for_version_action.rb index ba2c9d496..9e8fe4bff 100644 --- a/lib/fastlane/plugin/wpmreleasetoolkit/actions/common/extract_release_notes_for_version_action.rb +++ b/lib/fastlane/plugin/wpmreleasetoolkit/actions/common/extract_release_notes_for_version_action.rb @@ -26,7 +26,7 @@ def self.run(params) def self.extract_notes(release_notes_file_path, version) state = :discarding - File.open(release_notes_file_path).each do |line| + File.foreach(release_notes_file_path) do |line| case state when :discarding state = :evaluating if line.match(/^(\d+\.)?(\d+\.)?(\*|\d+)$/) && (line.strip == version) diff --git a/lib/fastlane/plugin/wpmreleasetoolkit/actions/common/promo_screenshots_action.rb b/lib/fastlane/plugin/wpmreleasetoolkit/actions/common/promo_screenshots_action.rb index 131222984..3d3f4c0b1 100644 --- a/lib/fastlane/plugin/wpmreleasetoolkit/actions/common/promo_screenshots_action.rb +++ b/lib/fastlane/plugin/wpmreleasetoolkit/actions/common/promo_screenshots_action.rb @@ -2,7 +2,7 @@ require 'fileutils' require 'fastlane/action' -require 'active_support/all' +require 'json' require_relative '../../helper/promo_screenshots_helper' module Fastlane @@ -187,7 +187,7 @@ def self.build_entries(config_entries, languages, output_directory, params) config_entries .flat_map do |entry| languages.map do |language| - new_entry = entry.deep_dup + new_entry = Marshal.load(Marshal.dump(entry)) # trick to do a _deep_ copy (`.dup` would only do shallow one) # Not every output file will have a screenshot, so handle cases where no # screenshot file is defined diff --git a/lib/fastlane/plugin/wpmreleasetoolkit/actions/common/prototype_build_details_comment_action.rb b/lib/fastlane/plugin/wpmreleasetoolkit/actions/common/prototype_build_details_comment_action.rb index 09e4b8ebc..b36043cdd 100644 --- a/lib/fastlane/plugin/wpmreleasetoolkit/actions/common/prototype_build_details_comment_action.rb +++ b/lib/fastlane/plugin/wpmreleasetoolkit/actions/common/prototype_build_details_comment_action.rb @@ -71,7 +71,7 @@ def self.parse_url!(url) # A small model/struct representing values exposed by Firebase App Distribution for a given release # - FirebaseReleaseInfo = Struct.new(:display_version, :build_version, :testing_url, :os, :bundle_id, :release_id, keyword_init: true) do + FirebaseReleaseInfo = Struct.new(:display_version, :build_version, :testing_url, :os, :bundle_id, :release_id) do def self.from_lane_context return nil unless defined?(SharedValues::FIREBASE_APP_DISTRO_RELEASE) diff --git a/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/add_development_certificates_to_provisioning_profiles.rb b/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/add_development_certificates_to_provisioning_profiles.rb index 1e8143d33..665d27efb 100644 --- a/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/add_development_certificates_to_provisioning_profiles.rb +++ b/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/add_development_certificates_to_provisioning_profiles.rb @@ -15,9 +15,7 @@ def self.run(params) params[:app_identifier].each do |identifier| Spaceship.provisioning_profile.find_by_bundle_id(bundle_id: identifier) - .select do |profile| - profile.is_a? Spaceship::Portal::ProvisioningProfile::Development - end + .grep(Spaceship::Portal::ProvisioningProfile::Development) .tap do |profiles| UI.important "Warning: Unable to find any profiles associated with #{identifier}" if profiles.empty? end diff --git a/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/add_devices_to_provisioning_profiles.rb b/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/add_devices_to_provisioning_profiles.rb index aaf90e5ea..385d68d1c 100644 --- a/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/add_devices_to_provisioning_profiles.rb +++ b/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/add_devices_to_provisioning_profiles.rb @@ -13,9 +13,7 @@ def self.run(params) params[:app_identifier].each do |identifier| Spaceship.provisioning_profile.find_by_bundle_id(bundle_id: identifier) - .select do |profile| - profile.is_a? Spaceship::Portal::ProvisioningProfile::Development - end + .grep(Spaceship::Portal::ProvisioningProfile::Development) .tap do |profiles| UI.important "Warning: Unable to find any profiles associated with #{identifier}" if profiles.empty? end diff --git a/lib/fastlane/plugin/wpmreleasetoolkit/helper/ios/ios_strings_file_validation_helper.rb b/lib/fastlane/plugin/wpmreleasetoolkit/helper/ios/ios_strings_file_validation_helper.rb index 9857f6c12..890b8138a 100644 --- a/lib/fastlane/plugin/wpmreleasetoolkit/helper/ios/ios_strings_file_validation_helper.rb +++ b/lib/fastlane/plugin/wpmreleasetoolkit/helper/ios/ios_strings_file_validation_helper.rb @@ -9,7 +9,7 @@ class StringsFileValidationHelper # :maybe_block_comment_end, :in_quoted_key, # :after_quoted_key_before_eq, :after_quoted_key_and_equal, # :in_quoted_value, :after_quoted_value - State = Struct.new(:context, :buffer, :in_escaped_ctx, :found_key, keyword_init: true) + State = Struct.new(:context, :buffer, :in_escaped_ctx, :found_key) TRANSITIONS = { root: { diff --git a/spec/openai_ask_action_spec.rb b/spec/openai_ask_action_spec.rb index d12958dc7..802b8fe3d 100644 --- a/spec/openai_ask_action_spec.rb +++ b/spec/openai_ask_action_spec.rb @@ -63,13 +63,13 @@ def run_test(prompt_param:, question_param:, expected_prompt:, expected_response if expected_prompt.nil? || expected_prompt.empty? expect(messages.length).to eq(1) expect(messages[0]['role']).to eq('user') - expect(messages[0]['content']).to eq(['type' => 'text', 'text' => question_param]) + expect(messages[0]['content']).to eq([{ 'type' => 'text', 'text' => question_param }]) else expect(messages.length).to eq(2) expect(messages[0]['role']).to eq('system') - expect(messages[0]['content']).to eq(['type' => 'text', 'text' => expected_prompt]) + expect(messages[0]['content']).to eq([{ 'type' => 'text', 'text' => expected_prompt }]) expect(messages[1]['role']).to eq('user') - expect(messages[1]['content']).to eq(['type' => 'text', 'text' => question_param]) + expect(messages[1]['content']).to eq([{ 'type' => 'text', 'text' => question_param }]) end # Ensure the request has been made and return the action response for it to be validated in calling test diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index f85026329..8737f62bc 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -23,6 +23,7 @@ module SpecHelper end +require 'active_support/all' # ActiveSupport methods (e.g. Time.use_zone, String#to_time) used by some specs require 'fastlane' # to import the Action super class require 'fastlane/plugin/wpmreleasetoolkit' # import the actual plugin