From a4e233a2d2ed6df697c63fe5ae81c4b677161226 Mon Sep 17 00:00:00 2001 From: Douglas Eichelberger Date: Sat, 26 Sep 2026 09:32:20 -0700 Subject: [PATCH] Enable Style/FrozenStringLiteralComment Remove the .rubocop.yml entry that disabled Style/FrozenStringLiteralComment, so the cop now runs with rubocop-gusto's EnforcedStyle: always_true. Add "# frozen_string_literal: true" to the 40 files the cop flagged: everything under lib/, bin/packs, the remaining specs, Gemfile, Rakefile and packs.gemspec. Where a file has a Sorbet "# typed:" sigil, the pragma goes on the line below it, matching the files that already had the pragma (spec_helper.rb, sorbet/tapioca/require.rb, the interactive CLI specs). Gemfile and packs.gemspec also get the blank line that Layout/EmptyLineAfterMagicComment requires. No mutation fixes were needed. A static sweep of every newly frozen literal found none that is mutated in place, either in this repo or by the libraries they are passed to (Thor, tty-prompt/tty-reader, Rainbow, Pastel, CSV, parse_packwerk, packwerk). The spec suite, a run with -W:deprecated (which reported no chilled-string warnings), and smoke runs of every bin/packs command and interactive use case all pass. --- .rubocop.yml | 4 ---- Gemfile | 2 ++ Rakefile | 1 + bin/packs | 1 + lib/packs.rb | 1 + lib/packs/cli.rb | 1 + lib/packs/code_ownership_post_processor.rb | 1 + lib/packs/configuration.rb | 1 + lib/packs/default_user_event_logger.rb | 1 + lib/packs/logging.rb | 1 + lib/packs/per_file_processor_interface.rb | 1 + lib/packs/private.rb | 1 + lib/packs/private/file_move_operation.rb | 1 + lib/packs/private/interactive_cli.rb | 1 + lib/packs/private/interactive_cli/file_selector.rb | 1 + lib/packs/private/interactive_cli/pack_directory_selector.rb | 1 + lib/packs/private/interactive_cli/pack_selector.rb | 1 + lib/packs/private/interactive_cli/team_selector.rb | 1 + lib/packs/private/interactive_cli/use_cases/add_dependency.rb | 1 + lib/packs/private/interactive_cli/use_cases/check.rb | 1 + lib/packs/private/interactive_cli/use_cases/create.rb | 1 + lib/packs/private/interactive_cli/use_cases/get_info.rb | 1 + lib/packs/private/interactive_cli/use_cases/interface.rb | 1 + .../interactive_cli/use_cases/lint_package_todo_yml_files.rb | 1 + .../interactive_cli/use_cases/lint_package_yml_files.rb | 1 + lib/packs/private/interactive_cli/use_cases/make_public.rb | 1 + lib/packs/private/interactive_cli/use_cases/move.rb | 1 + lib/packs/private/interactive_cli/use_cases/move_pack.rb | 1 + lib/packs/private/interactive_cli/use_cases/query.rb | 1 + lib/packs/private/interactive_cli/use_cases/rename.rb | 1 + lib/packs/private/interactive_cli/use_cases/update.rb | 1 + lib/packs/private/interactive_cli/use_cases/validate.rb | 1 + lib/packs/private/pack_relationship_analyzer.rb | 1 + .../private/packwerk_wrapper/offenses_aggregator_formatter.rb | 1 + lib/packs/rubocop_post_processor.rb | 1 + lib/packs/update_references_post_processor.rb | 1 + lib/packs/user_event_logger.rb | 1 + packs.gemspec | 2 ++ spec/packs/private/cli_spec.rb | 1 + spec/packs_spec.rb | 1 + spec/verify_docs_spec.rb | 1 + 41 files changed, 42 insertions(+), 4 deletions(-) diff --git a/.rubocop.yml b/.rubocop.yml index f393790..f03c3a1 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -50,10 +50,6 @@ Lint/DuplicateBranch: Style/NegatedIf: Enabled: false -# Disabling for now until it's clearer why we want this -Style/FrozenStringLiteralComment: - Enabled: false - # It's nice to be able to read the condition first before reading the code within the condition Style/GuardClause: Enabled: false diff --git a/Gemfile b/Gemfile index 13605c8..e3cc818 100644 --- a/Gemfile +++ b/Gemfile @@ -1,3 +1,5 @@ +# frozen_string_literal: true + source 'https://rubygems.org' # Specify your gem's dependencies in packs.gemspec diff --git a/Rakefile b/Rakefile index 806deab..088722c 100644 --- a/Rakefile +++ b/Rakefile @@ -1,4 +1,5 @@ # typed: ignore +# frozen_string_literal: true require 'bundler/gem_tasks' require 'rspec/core/rake_task' diff --git a/bin/packs b/bin/packs index a40ad3f..507a63a 100755 --- a/bin/packs +++ b/bin/packs @@ -1,5 +1,6 @@ #!/usr/bin/env ruby # typed: strict +# frozen_string_literal: true require_relative '../lib/packs' diff --git a/lib/packs.rb b/lib/packs.rb index e35e9bf..d76b555 100644 --- a/lib/packs.rb +++ b/lib/packs.rb @@ -1,4 +1,5 @@ # typed: strict +# frozen_string_literal: true # Ruby internal requires require 'fileutils' diff --git a/lib/packs/cli.rb b/lib/packs/cli.rb index 573ebdc..10d7d13 100644 --- a/lib/packs/cli.rb +++ b/lib/packs/cli.rb @@ -1,4 +1,5 @@ # typed: strict +# frozen_string_literal: true require 'thor' diff --git a/lib/packs/code_ownership_post_processor.rb b/lib/packs/code_ownership_post_processor.rb index 9c93d17..06b0082 100644 --- a/lib/packs/code_ownership_post_processor.rb +++ b/lib/packs/code_ownership_post_processor.rb @@ -1,4 +1,5 @@ # typed: strict +# frozen_string_literal: true module Packs class CodeOwnershipPostProcessor diff --git a/lib/packs/configuration.rb b/lib/packs/configuration.rb index 9e2e854..a77badf 100644 --- a/lib/packs/configuration.rb +++ b/lib/packs/configuration.rb @@ -1,4 +1,5 @@ # typed: strict +# frozen_string_literal: true require_relative 'user_event_logger' require_relative 'default_user_event_logger' diff --git a/lib/packs/default_user_event_logger.rb b/lib/packs/default_user_event_logger.rb index 551cb1c..dd38618 100644 --- a/lib/packs/default_user_event_logger.rb +++ b/lib/packs/default_user_event_logger.rb @@ -1,4 +1,5 @@ # typed: strict +# frozen_string_literal: true module Packs class DefaultUserEventLogger diff --git a/lib/packs/logging.rb b/lib/packs/logging.rb index 15be4d1..5a70baa 100644 --- a/lib/packs/logging.rb +++ b/lib/packs/logging.rb @@ -1,4 +1,5 @@ # typed: strict +# frozen_string_literal: true require 'rainbow' diff --git a/lib/packs/per_file_processor_interface.rb b/lib/packs/per_file_processor_interface.rb index eeece3b..c7fcf72 100644 --- a/lib/packs/per_file_processor_interface.rb +++ b/lib/packs/per_file_processor_interface.rb @@ -1,4 +1,5 @@ # typed: strict +# frozen_string_literal: true module Packs module PerFileProcessorInterface diff --git a/lib/packs/private.rb b/lib/packs/private.rb index 9d02504..453fdc0 100644 --- a/lib/packs/private.rb +++ b/lib/packs/private.rb @@ -1,4 +1,5 @@ # typed: strict +# frozen_string_literal: true require 'pathname' require 'fileutils' diff --git a/lib/packs/private/file_move_operation.rb b/lib/packs/private/file_move_operation.rb index 2a390b6..02b9489 100644 --- a/lib/packs/private/file_move_operation.rb +++ b/lib/packs/private/file_move_operation.rb @@ -1,4 +1,5 @@ # typed: strict +# frozen_string_literal: true module Packs module Private diff --git a/lib/packs/private/interactive_cli.rb b/lib/packs/private/interactive_cli.rb index 1110021..e9faee8 100644 --- a/lib/packs/private/interactive_cli.rb +++ b/lib/packs/private/interactive_cli.rb @@ -1,4 +1,5 @@ # typed: strict +# frozen_string_literal: true # https://github.com/piotrmurach/tty-prompt require 'tty-prompt' diff --git a/lib/packs/private/interactive_cli/file_selector.rb b/lib/packs/private/interactive_cli/file_selector.rb index 9ba6dd7..ba237ca 100644 --- a/lib/packs/private/interactive_cli/file_selector.rb +++ b/lib/packs/private/interactive_cli/file_selector.rb @@ -1,4 +1,5 @@ # typed: strict +# frozen_string_literal: true module Packs module Private diff --git a/lib/packs/private/interactive_cli/pack_directory_selector.rb b/lib/packs/private/interactive_cli/pack_directory_selector.rb index 5335af4..e4411f6 100644 --- a/lib/packs/private/interactive_cli/pack_directory_selector.rb +++ b/lib/packs/private/interactive_cli/pack_directory_selector.rb @@ -1,4 +1,5 @@ # typed: strict +# frozen_string_literal: true module Packs module Private diff --git a/lib/packs/private/interactive_cli/pack_selector.rb b/lib/packs/private/interactive_cli/pack_selector.rb index 045759d..d85c0f4 100644 --- a/lib/packs/private/interactive_cli/pack_selector.rb +++ b/lib/packs/private/interactive_cli/pack_selector.rb @@ -1,4 +1,5 @@ # typed: strict +# frozen_string_literal: true module Packs module Private diff --git a/lib/packs/private/interactive_cli/team_selector.rb b/lib/packs/private/interactive_cli/team_selector.rb index 378d851..a5370d4 100644 --- a/lib/packs/private/interactive_cli/team_selector.rb +++ b/lib/packs/private/interactive_cli/team_selector.rb @@ -1,4 +1,5 @@ # typed: strict +# frozen_string_literal: true module Packs module Private diff --git a/lib/packs/private/interactive_cli/use_cases/add_dependency.rb b/lib/packs/private/interactive_cli/use_cases/add_dependency.rb index f254037..091a30b 100644 --- a/lib/packs/private/interactive_cli/use_cases/add_dependency.rb +++ b/lib/packs/private/interactive_cli/use_cases/add_dependency.rb @@ -1,4 +1,5 @@ # typed: strict +# frozen_string_literal: true module Packs module Private diff --git a/lib/packs/private/interactive_cli/use_cases/check.rb b/lib/packs/private/interactive_cli/use_cases/check.rb index 88d314a..9002c6a 100644 --- a/lib/packs/private/interactive_cli/use_cases/check.rb +++ b/lib/packs/private/interactive_cli/use_cases/check.rb @@ -1,4 +1,5 @@ # typed: strict +# frozen_string_literal: true module Packs module Private diff --git a/lib/packs/private/interactive_cli/use_cases/create.rb b/lib/packs/private/interactive_cli/use_cases/create.rb index 393ed00..9623c4d 100644 --- a/lib/packs/private/interactive_cli/use_cases/create.rb +++ b/lib/packs/private/interactive_cli/use_cases/create.rb @@ -1,4 +1,5 @@ # typed: strict +# frozen_string_literal: true module Packs module Private diff --git a/lib/packs/private/interactive_cli/use_cases/get_info.rb b/lib/packs/private/interactive_cli/use_cases/get_info.rb index c5ff425..635680d 100644 --- a/lib/packs/private/interactive_cli/use_cases/get_info.rb +++ b/lib/packs/private/interactive_cli/use_cases/get_info.rb @@ -1,4 +1,5 @@ # typed: strict +# frozen_string_literal: true module Packs module Private diff --git a/lib/packs/private/interactive_cli/use_cases/interface.rb b/lib/packs/private/interactive_cli/use_cases/interface.rb index 33b4e55..e3323bf 100644 --- a/lib/packs/private/interactive_cli/use_cases/interface.rb +++ b/lib/packs/private/interactive_cli/use_cases/interface.rb @@ -1,4 +1,5 @@ # typed: strict +# frozen_string_literal: true module Packs module Private diff --git a/lib/packs/private/interactive_cli/use_cases/lint_package_todo_yml_files.rb b/lib/packs/private/interactive_cli/use_cases/lint_package_todo_yml_files.rb index b968c8b..02d4ab8 100644 --- a/lib/packs/private/interactive_cli/use_cases/lint_package_todo_yml_files.rb +++ b/lib/packs/private/interactive_cli/use_cases/lint_package_todo_yml_files.rb @@ -1,4 +1,5 @@ # typed: strict +# frozen_string_literal: true module Packs module Private diff --git a/lib/packs/private/interactive_cli/use_cases/lint_package_yml_files.rb b/lib/packs/private/interactive_cli/use_cases/lint_package_yml_files.rb index f85a57e..2a1d426 100644 --- a/lib/packs/private/interactive_cli/use_cases/lint_package_yml_files.rb +++ b/lib/packs/private/interactive_cli/use_cases/lint_package_yml_files.rb @@ -1,4 +1,5 @@ # typed: strict +# frozen_string_literal: true module Packs module Private diff --git a/lib/packs/private/interactive_cli/use_cases/make_public.rb b/lib/packs/private/interactive_cli/use_cases/make_public.rb index c987f1e..d75d639 100644 --- a/lib/packs/private/interactive_cli/use_cases/make_public.rb +++ b/lib/packs/private/interactive_cli/use_cases/make_public.rb @@ -1,4 +1,5 @@ # typed: strict +# frozen_string_literal: true module Packs module Private diff --git a/lib/packs/private/interactive_cli/use_cases/move.rb b/lib/packs/private/interactive_cli/use_cases/move.rb index e4556a9..72a7b0f 100644 --- a/lib/packs/private/interactive_cli/use_cases/move.rb +++ b/lib/packs/private/interactive_cli/use_cases/move.rb @@ -1,4 +1,5 @@ # typed: strict +# frozen_string_literal: true module Packs module Private diff --git a/lib/packs/private/interactive_cli/use_cases/move_pack.rb b/lib/packs/private/interactive_cli/use_cases/move_pack.rb index 2cb6ff9..82a21b7 100644 --- a/lib/packs/private/interactive_cli/use_cases/move_pack.rb +++ b/lib/packs/private/interactive_cli/use_cases/move_pack.rb @@ -1,4 +1,5 @@ # typed: strict +# frozen_string_literal: true module Packs module Private diff --git a/lib/packs/private/interactive_cli/use_cases/query.rb b/lib/packs/private/interactive_cli/use_cases/query.rb index 3c362c9..6cf3143 100644 --- a/lib/packs/private/interactive_cli/use_cases/query.rb +++ b/lib/packs/private/interactive_cli/use_cases/query.rb @@ -1,4 +1,5 @@ # typed: strict +# frozen_string_literal: true module Packs module Private diff --git a/lib/packs/private/interactive_cli/use_cases/rename.rb b/lib/packs/private/interactive_cli/use_cases/rename.rb index 6a9ad0c..ee6a747 100644 --- a/lib/packs/private/interactive_cli/use_cases/rename.rb +++ b/lib/packs/private/interactive_cli/use_cases/rename.rb @@ -1,4 +1,5 @@ # typed: strict +# frozen_string_literal: true module Packs module Private diff --git a/lib/packs/private/interactive_cli/use_cases/update.rb b/lib/packs/private/interactive_cli/use_cases/update.rb index ca92bbe..092335b 100644 --- a/lib/packs/private/interactive_cli/use_cases/update.rb +++ b/lib/packs/private/interactive_cli/use_cases/update.rb @@ -1,4 +1,5 @@ # typed: strict +# frozen_string_literal: true module Packs module Private diff --git a/lib/packs/private/interactive_cli/use_cases/validate.rb b/lib/packs/private/interactive_cli/use_cases/validate.rb index 9528432..98fb60a 100644 --- a/lib/packs/private/interactive_cli/use_cases/validate.rb +++ b/lib/packs/private/interactive_cli/use_cases/validate.rb @@ -1,4 +1,5 @@ # typed: strict +# frozen_string_literal: true module Packs module Private diff --git a/lib/packs/private/pack_relationship_analyzer.rb b/lib/packs/private/pack_relationship_analyzer.rb index f78808f..c21fbbc 100644 --- a/lib/packs/private/pack_relationship_analyzer.rb +++ b/lib/packs/private/pack_relationship_analyzer.rb @@ -1,4 +1,5 @@ # typed: strict +# frozen_string_literal: true module Packs module Private diff --git a/lib/packs/private/packwerk_wrapper/offenses_aggregator_formatter.rb b/lib/packs/private/packwerk_wrapper/offenses_aggregator_formatter.rb index b934c28..358b73e 100644 --- a/lib/packs/private/packwerk_wrapper/offenses_aggregator_formatter.rb +++ b/lib/packs/private/packwerk_wrapper/offenses_aggregator_formatter.rb @@ -1,4 +1,5 @@ # typed: strict +# frozen_string_literal: true module Packs module Private diff --git a/lib/packs/rubocop_post_processor.rb b/lib/packs/rubocop_post_processor.rb index 0814a4a..b00eb59 100644 --- a/lib/packs/rubocop_post_processor.rb +++ b/lib/packs/rubocop_post_processor.rb @@ -1,4 +1,5 @@ # typed: strict +# frozen_string_literal: true module Packs class RubocopPostProcessor diff --git a/lib/packs/update_references_post_processor.rb b/lib/packs/update_references_post_processor.rb index 2187270..c380d8c 100644 --- a/lib/packs/update_references_post_processor.rb +++ b/lib/packs/update_references_post_processor.rb @@ -1,4 +1,5 @@ # typed: strict +# frozen_string_literal: true module Packs class UpdateReferencesPostProcessor diff --git a/lib/packs/user_event_logger.rb b/lib/packs/user_event_logger.rb index 262436a..f44c182 100644 --- a/lib/packs/user_event_logger.rb +++ b/lib/packs/user_event_logger.rb @@ -1,4 +1,5 @@ # typed: strict +# frozen_string_literal: true module Packs module UserEventLogger diff --git a/packs.gemspec b/packs.gemspec index f7f0c3e..4bd39c4 100644 --- a/packs.gemspec +++ b/packs.gemspec @@ -1,3 +1,5 @@ +# frozen_string_literal: true + Gem::Specification.new do |spec| spec.name = 'packs' spec.version = '0.3.0' diff --git a/spec/packs/private/cli_spec.rb b/spec/packs/private/cli_spec.rb index 4a935d0..085e1d4 100644 --- a/spec/packs/private/cli_spec.rb +++ b/spec/packs/private/cli_spec.rb @@ -1,4 +1,5 @@ # typed: false +# frozen_string_literal: true RSpec.describe Packs::CLI do def expect_success diff --git a/spec/packs_spec.rb b/spec/packs_spec.rb index 697bd4b..7033f87 100644 --- a/spec/packs_spec.rb +++ b/spec/packs_spec.rb @@ -1,4 +1,5 @@ # typed: false +# frozen_string_literal: true RSpec.describe Packs do def expect_files_to_exist(files) diff --git a/spec/verify_docs_spec.rb b/spec/verify_docs_spec.rb index 5d551a3..c1b6ea1 100644 --- a/spec/verify_docs_spec.rb +++ b/spec/verify_docs_spec.rb @@ -1,4 +1,5 @@ # typed: false +# frozen_string_literal: true RSpec.describe Packs, :skip_chdir_to_tmpdir do let(:readme) do