Browse Source

Maintenance: Bring back a relaxed form of the catalog check for CI

Martin Gruner 5 months ago
parent
commit
5d8c8c2f78

+ 2 - 0
.github/workflows/ci/lint.sh

@@ -10,6 +10,8 @@ source .gitlab/environment.env
 
 echo "Checking .po file syntax…"
 for FILE in i18n/*.pot i18n/*.po; do echo "Checking $FILE"; msgfmt -o /dev/null -c "$FILE"; done
+echo "Checking .pot catalog consistency…"
+bundle exec rails generate zammad:translation_catalog --check
 echo "Brakeman security check…"
 bundle exec brakeman -o /dev/stdout -o tmp/brakeman-report.html
 echo "Rails zeitwerk:check autoloader check…"

+ 2 - 2
.gitlab/ci/lint.yml

@@ -36,8 +36,8 @@
     - !reference [.scripts, pnpm_install]
     - echo "Checking .po file syntax…"
     - for FILE in i18n/*.pot i18n/*.po; do echo "Checking $FILE"; msgfmt -o /dev/null -c $FILE; done
-    # - echo "Checking .pot catalog consistency…"
-    # - bundle exec rails generate zammad:translation_catalog --check
+    - echo "Checking .pot catalog consistency…"
+    - bundle exec rails generate zammad:translation_catalog --check
     - echo "Checking consistency of Settings types file…"
     - bundle exec rails generate zammad:setting_types --check
     - echo "Rails zeitwerk:check autoloader check…"

+ 6 - 6
.overcommit.yml

@@ -35,12 +35,12 @@ PreCommit:
       - '**/*.scss'
       - '**/*.css'
       - '**/*.vue'
-  # TranslationCatalogCheck:
-  #   required_executable: 'rails'
-  #   enabled: true
-  #   env:
-  #     ZAMMAD_SAFE_MODE: '1'
-  #   command: ['rails', 'generate', 'zammad:translation_catalog', '--check']
+  TranslationCatalogCheck:
+    required_executable: 'rails'
+    enabled: true
+    env:
+      ZAMMAD_SAFE_MODE: '1'
+    command: ['rails', 'generate', 'zammad:translation_catalog', '--check']
   SettingsTypesCheck:
     required_executable: 'rails'
     enabled: true

+ 0 - 1
i18n/zammad.pot

@@ -19209,4 +19209,3 @@ msgstr ""
 #: app/assets/javascripts/app/views/dashboard/stats/ticket_waiting_time.jst.eco:3
 msgid "∅ Waiting time today"
 msgstr ""
-

+ 18 - 14
lib/generators/zammad/translation_catalog/writer/pot.rb

@@ -7,27 +7,31 @@ class Zammad::TranslationCatalog::Writer::Pot < Zammad::TranslationCatalog::Writ
   def write(extracted_strings)
 
     pot = build_pot_content(extracted_strings)
-
     target_filename = "#{target_path}.pot"
 
-    # rubocop:disable Rails/Output
-    if options['check']
-      original_file_content = File.read(target_filename)
-      if original_file_content.eql? pot
-        puts "File #{target_filename} is up-to-date."
-        return
-      else
-        puts "File #{target_filename} is not up-to-date, please run 'rails generate zammad:translation_catalog' to update it."
-        exit! # rubocop:disable Rails/Exit
-      end
-    end
-    # rubocop:enable Rails/Output
+    return check_pot_file_consistency!(pot, target_filename) if options['check']
 
     create_or_update_file(target_filename, pot)
   end
 
   private
 
+  def check_pot_file_consistency!(pot, target_filename)
+    # rubocop:disable Rails/Output
+    original_file_content = File.read(target_filename)
+    if strip_pot_metadata(original_file_content).eql? strip_pot_metadata(pot)
+      puts "File #{target_filename} is up-to-date."
+    else
+      puts "File #{target_filename} is not up-to-date, please run 'rails generate zammad:translation_catalog' to update it."
+      exit! # rubocop:disable Rails/Exit
+    end
+    # rubocop:enable Rails/Output
+  end
+
+  def strip_pot_metadata(pot)
+    pot.gsub(%r{^#.*\n}, '')
+  end
+
   DATE_FORMAT_LEGEND = <<~LEGEND.chomp
     #. These placeholders are supported:
     #. - 'dd' - 2-digit day
@@ -78,7 +82,7 @@ class Zammad::TranslationCatalog::Writer::Pot < Zammad::TranslationCatalog::Writ
 
     extracted_strings.sorted_values.each { |s| pot += string_to_pot(s) }
 
-    pot
+    pot.chomp
   end
 
   def string_to_pot(string)