diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2022-10-19 00:09:37 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2022-10-19 00:09:37 +0300 |
commit | cace5e8ff1f766b8098e35adc94abc4402aeb2a9 (patch) | |
tree | 96bea3616ee60702be89f4845580f3b3db22f936 /scripts/lib | |
parent | e4220eeccaf1d53444fdd9102a4061336f91784e (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'scripts/lib')
-rw-r--r-- | scripts/lib/glfm/constants.rb | 15 | ||||
-rw-r--r-- | scripts/lib/glfm/verify_all_generated_files_are_up_to_date.rb | 48 |
2 files changed, 56 insertions, 7 deletions
diff --git a/scripts/lib/glfm/constants.rb b/scripts/lib/glfm/constants.rb index 352bd867a61..d020d2fec5c 100644 --- a/scripts/lib/glfm/constants.rb +++ b/scripts/lib/glfm/constants.rb @@ -23,15 +23,16 @@ module Glfm GLFM_EXAMPLE_METADATA_YML_PATH = specification_input_glfm_path.join('glfm_example_metadata.yml') GLFM_EXAMPLE_NORMALIZATIONS_YML_PATH = specification_input_glfm_path.join('glfm_example_normalizations.yml') - GLFM_SPEC_TXT_PATH = specification_path.join('output/spec.txt') - GLFM_SPEC_HTML_PATH = specification_path.join('output/spec.html') + GLFM_SPEC_OUTPUT_PATH = specification_path.join('output') + GLFM_SPEC_TXT_PATH = GLFM_SPEC_OUTPUT_PATH.join('spec.txt') + GLFM_SPEC_HTML_PATH = GLFM_SPEC_OUTPUT_PATH.join('spec.html') # Example Snapshot (ES) files - es_fixtures_path = File.expand_path("../../../glfm_specification/example_snapshots", __dir__) - ES_EXAMPLES_INDEX_YML_PATH = File.join(es_fixtures_path, 'examples_index.yml') - ES_MARKDOWN_YML_PATH = File.join(es_fixtures_path, 'markdown.yml') - ES_HTML_YML_PATH = File.join(es_fixtures_path, 'html.yml') - ES_PROSEMIRROR_JSON_YML_PATH = File.join(es_fixtures_path, 'prosemirror_json.yml') + EXAMPLE_SNAPSHOTS_PATH = File.expand_path("../../../glfm_specification/example_snapshots", __dir__) + ES_EXAMPLES_INDEX_YML_PATH = File.join(EXAMPLE_SNAPSHOTS_PATH, 'examples_index.yml') + ES_MARKDOWN_YML_PATH = File.join(EXAMPLE_SNAPSHOTS_PATH, 'markdown.yml') + ES_HTML_YML_PATH = File.join(EXAMPLE_SNAPSHOTS_PATH, 'html.yml') + ES_PROSEMIRROR_JSON_YML_PATH = File.join(EXAMPLE_SNAPSHOTS_PATH, 'prosemirror_json.yml') # Other constants used for processing files GLFM_SPEC_TXT_HEADER = <<~MARKDOWN diff --git a/scripts/lib/glfm/verify_all_generated_files_are_up_to_date.rb b/scripts/lib/glfm/verify_all_generated_files_are_up_to_date.rb new file mode 100644 index 00000000000..0b824fc589d --- /dev/null +++ b/scripts/lib/glfm/verify_all_generated_files_are_up_to_date.rb @@ -0,0 +1,48 @@ +# frozen_string_literal: true +require_relative 'constants' +require_relative 'shared' + +# IMPORTANT NOTE: See https://docs.gitlab.com/ee/development/gitlab_flavored_markdown/specification_guide/#verify-all-generated-files-are-up-to-daterb-script +# for details on the implementation and usage of this script. This developers guide +# contains diagrams and documentation of this script, +# including explanations and examples of all files it reads and writes. +module Glfm + class VerifyAllGeneratedFilesAreUpToDate + include Constants + include Shared + + def process + verify_cmd = "git status --porcelain #{GLFM_SPEC_OUTPUT_PATH} #{EXAMPLE_SNAPSHOTS_PATH}" + verify_cmd_output = run_external_cmd(verify_cmd) + unless verify_cmd_output.empty? + msg = "ERROR: Cannot run `#{__FILE__}` because `#{verify_cmd}` shows the following uncommitted changes:\n" \ + "#{verify_cmd_output}" + raise(msg) + end + + output('Verifying all generated files are up to date after running GLFM scripts...') + + output("Running `yarn install --frozen-lockfile` to ensure `yarn check-dependencies` doesn't fail...") + run_external_cmd('yarn install --frozen-lockfile') + + # noinspection RubyMismatchedArgumentType + update_specification_script = File.expand_path('../../glfm/update-specification.rb', __dir__) + # noinspection RubyMismatchedArgumentType + update_example_snapshots_script = File.expand_path('../../glfm/update-example-snapshots.rb', __dir__) + + output("Running `#{update_specification_script}`...") + run_external_cmd(update_specification_script) + + output("Running `#{update_example_snapshots_script}`...") + run_external_cmd(update_example_snapshots_script) + + output("Running `#{verify_cmd}` to check that no modifications to generated files have occurred...") + verify_cmd_output = run_external_cmd(verify_cmd) + + return if verify_cmd_output.empty? + + raise "The following files were modified by running GLFM scripts. Please review, verify, and commit " \ + "the changes:\n#{verify_cmd_output}" + end + end +end |