MCPcopy Create free account
hub / github.com/github/docs / updateMdHeaders

Function updateMdHeaders

script/content-migrations/update-headers.js:18–80  ·  view source on GitHub ↗
(dir)

Source from the content-addressed store, hash-verified

16const re = /^#.*\n/gm
17
18async function updateMdHeaders(dir) {
19 walk(dir, { includeBasePath: true, directories: false })
20 .filter((file) => !file.endsWith('README.md') && !file.includes('content/rest/reference'))
21 .forEach((file) => {
22 fs.readFile(file, 'utf8', (err, data) => {
23 if (err) return console.error(err)
24 const matchHeader = data.match(re)
25 let firstHeader = matchHeader ? matchHeader[0].split(' ')[0] : null
26 if (firstHeader) {
27 for (let index = 1; index < matchHeader.length; index++) {
28 const nextHeader = matchHeader[index].split(' ')[0]
29 if (nextHeader.length < firstHeader.length && nextHeader.length >= 3) {
30 console.log(file)
31 break
32 }
33 }
34 }
35 if (file.includes('data/reusables/')) {
36 if (
37 !file.endsWith('data/reusables/actions/actions-group-concurrency.md') &&
38 !file.endsWith('data/reusables/github-actions/actions-on-examples.md')
39 ) {
40 firstHeader = 'reusable-' + firstHeader
41 }
42 }
43 let result
44 switch (firstHeader) {
45 case '#':
46 return
47 case '##':
48 return
49 case '###':
50 result = data
51 .replace(/^miniTocMaxHeadingLevel: 4/gm, 'miniTocMaxHeadingLevel: 3')
52 .replace(/^### /gm, '## ')
53 .replace(/^#### /gm, '### ')
54 .replace(/^##### /gm, '#### ')
55 .replace(/^###### /gm, '##### ')
56 break
57 case '####':
58 result = data
59 .replace(/^#### /gm, '## ')
60 .replace(/^##### /gm, '### ')
61 .replace(/^###### /gm, '#### ')
62 break
63 case 'reusable-####':
64 result = data.replace(/^#### /gm, '### ').replace(/^##### /gm, '#### ')
65 break
66 case 'reusable-#####':
67 result = data.replace(/^##### /gm, '#### ')
68 break
69 case '#####':
70 result = data.replace(/^##### /gm, '### ').replace(/^###### /gm, '#### ')
71 break
72 default:
73 return
74 }
75 fs.writeFile(file, result, 'utf8', function (err) {

Callers 1

mainFunction · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected