Fixes broken .html links with anchors
Why is this change being made?
💡 Provide a detailed answer to the question on why this change is being proposed, in accordance with our value of Transparency.
I realized the script from !1446 (merged) didn't catch .html#anchor
style links... this fixes a bunch more broken stuff.
require 'find'
require 'nokogiri'
require 'open-uri'
directory = '.'
Find.find(directory) do |path|
if File.file?(path) && path.end_with?('.md')
file = File.read(path)
html_links = file.scan(/\[.+\]\(.+\.html#.+?\)/)
html_links.each do |link|
url = link.match(/\((.+?)\)/)[1]
if url.start_with?('/handbook')
# Prepend domain
url = "https://about.gitlab.com#{url}"
end
begin
response = URI.open(url)
rescue OpenURI::HTTPError => e
# Update the file
puts "updating link #{url}"
new_link = link.gsub(/\.html/, '')
file.gsub!(link, new_link)
File.write(path, file)
next
rescue => e
puts "WTF? Tried to access #{url} from #{link} on #{path}"
next
end
end
end
end
Author and Reviewer Checklist
Please verify the check list and ensure to tick them off before the MR is merged.
-
Provided a concise title for this Merge Request (MR) -
Added a description to this MR explaining the reasons for the proposed change, per say why, not just what - Copy/paste the Slack conversation to document it for later, or upload screenshots. Verify that no confidential data is added, and the content is SAFE
-
Assign reviewers for this MR to the correct Directly Responsible Individual/s (DRI) - If the DRI for the page/s being updated isn’t immediately clear, then assign it to one of the people listed in the
Maintained by
section on the page being edited - If your manager does not have merge rights, please ask someone to merge it AFTER it has been approved by your manager in #mr-buddies
- The when to get approval handbook section explains the workflow in more detail
- If the DRI for the page/s being updated isn’t immediately clear, then assign it to one of the people listed in the
-
For transparency, share this MR with the audience that will be impacted. -
Team: For changes that affect your direct team, share in your group Slack channel -
Department: If the update affects your department, share the MR in your department Slack channel -
Company: If the update affects all (or the majority of) GitLab team members, post an update in #whats-happening-at-gitlab linking to this MR - For high-priority company-wide announcements work with the internal communications team to post the update in #company-fyi and align on a plan to circulate in additional channels like the "While You Were Iterating" Newsletter
-
Edited by Katrin Leinweber