1
0
mirror of synced 2025-12-19 18:10:59 -05:00
Files
docs/script/get-blc-command.js
Vanessa Yuen 3df90fc9b8 Hello git history spelunker!
Are you looking for something? Here is all of the GitHub Docs history in one single commit. Enjoy! 🎉
2020-09-27 14:10:11 +02:00

62 lines
2.3 KiB
JavaScript
Executable File

#!/usr/bin/env node
const supportedLanguages = Object.values(require('../lib/languages')).map(language => language.code)
const excludedLinks = require('../lib/excluded-links')
const program = require('commander')
// [start-readme]
//
// This script parses options for `script/check-external-links`.
//
// [end-readme]
program
.description('Construct a blc command to run in script/check-external-links')
.option('-L, --language <lang_code>', 'required language code')
.option('-i, --internalOnly', 'check internal links only')
.parse(process.argv)
const languageCode = program.language
if (!languageCode || !supportedLanguages.includes(languageCode)) {
console.error(`error: you must provide a currently supported language code: ${supportedLanguages.join(', ')}\n`)
process.exit(1)
}
// options for blc: https://github.com/stevenvachon/broken-link-checker#command-line-usage
const blcPackage = './node_modules/broken-link-checker/bin/blc'
const host = 'http://localhost:4000'
const hostWithLanguage = `${host}/${languageCode}`
const maintainOrder = '--ordered' // maintain order of links in html
const recursive = '--recursive'
const requestMethod = '--get'
const filterLevel = '--filter-level 3' // level 3 checks the most assets
const excludeExternal = program.internalOnly ? ' --exclude-external' : ''
let command = `${blcPackage} ${hostWithLanguage} ${maintainOrder} ${recursive} ${requestMethod} ${filterLevel}${excludeExternal}`
let excludeStrings = ''
// blc can only except one string per --exclude option
// so we need to construct multiple strings from exclusions array
excludedLinks.forEach(excludedLink => {
excludeStrings = `${excludeStrings} --exclude ${excludedLink}`
})
// prevent link checker from crawling other languages
// for example, if we're checking links on the English site
// we need to exclude links on Japanese, Chinese, Spanish, etc.
supportedLanguages.forEach(supportedLanguage => {
if (supportedLanguage === languageCode) return
const internalLink = `${host}/${supportedLanguage}/*`
const externalLink = `https://help.github.com/${supportedLanguage}/*`
excludeStrings = `${excludeStrings} --exclude ${internalLink}`
excludeStrings = `${excludeStrings} --exclude ${externalLink}`
})
// get final command
command = command + excludeStrings
// output final command
console.log(command)