mirror of
https://github.com/modernweb-dev/rocket.git
synced 2026-03-23 15:54:47 +00:00
Compare commits
1 Commits
@rocket/cl
...
fix/checkL
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
31eca9f63c |
@@ -1,2 +1,3 @@
|
|||||||
export { validateFolder } from './src/validateFolder.js';
|
export { validateFolder } from './src/validateFolder.js';
|
||||||
export { formatErrors } from './src/formatErrors.js';
|
export { formatErrors } from './src/formatErrors.js';
|
||||||
|
export { checkHtmlLinks } from './src/checkHtmlLinks.js';
|
||||||
|
|||||||
50
packages/check-html-links/src/checkHtmlLinks.js
Executable file
50
packages/check-html-links/src/checkHtmlLinks.js
Executable file
@@ -0,0 +1,50 @@
|
|||||||
|
#!/usr/bin/env node
|
||||||
|
|
||||||
|
import chalk from 'chalk';
|
||||||
|
import { validateFiles } from './validateFolder.js';
|
||||||
|
import { formatErrors } from './formatErrors.js';
|
||||||
|
import { listFiles } from './listFiles.js';
|
||||||
|
|
||||||
|
export async function checkHtmlLinks({ rootDir = process.cwd() }) {
|
||||||
|
const performanceStart = process.hrtime();
|
||||||
|
|
||||||
|
console.log('👀 Checking if all internal links work...');
|
||||||
|
const files = await listFiles('**/*.html', rootDir);
|
||||||
|
|
||||||
|
const filesOutput =
|
||||||
|
files.length == 0
|
||||||
|
? '🧐 No files to check. Did you select the correct folder?'
|
||||||
|
: `🔥 Found a total of ${chalk.green.bold(files.length)} files to check!`;
|
||||||
|
console.log(filesOutput);
|
||||||
|
|
||||||
|
const { errors, numberLinks } = await validateFiles(files, rootDir);
|
||||||
|
|
||||||
|
console.log(`🔗 Found a total of ${chalk.green.bold(numberLinks)} links to validate!\n`);
|
||||||
|
|
||||||
|
const performance = process.hrtime(performanceStart);
|
||||||
|
if (errors.length > 0) {
|
||||||
|
let referenceCount = 0;
|
||||||
|
for (const error of errors) {
|
||||||
|
referenceCount += error.usage.length;
|
||||||
|
}
|
||||||
|
const output = [
|
||||||
|
`❌ Found ${chalk.red.bold(
|
||||||
|
errors.length.toString(),
|
||||||
|
)} missing reference targets (used by ${referenceCount} links) while checking ${
|
||||||
|
files.length
|
||||||
|
} files:`,
|
||||||
|
...formatErrors(errors)
|
||||||
|
.split('\n')
|
||||||
|
.map(line => ` ${line}`),
|
||||||
|
`Checking links duration: ${performance[0]}s ${performance[1] / 1000000}ms`,
|
||||||
|
];
|
||||||
|
console.error(output.join('\n'));
|
||||||
|
process.exit(1);
|
||||||
|
} else {
|
||||||
|
console.log(
|
||||||
|
`✅ All internal links are valid. (executed in ${performance[0]}s ${
|
||||||
|
performance[1] / 1000000
|
||||||
|
}ms)`,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,55 +1,17 @@
|
|||||||
#!/usr/bin/env node
|
#!/usr/bin/env node
|
||||||
|
|
||||||
import path from 'path';
|
import path from 'path';
|
||||||
import chalk from 'chalk';
|
import { checkHtmlLinks } from 'check-html-links';
|
||||||
import { validateFiles } from './validateFolder.js';
|
|
||||||
import { formatErrors } from './formatErrors.js';
|
|
||||||
import { listFiles } from './listFiles.js';
|
|
||||||
|
|
||||||
async function main() {
|
async function cli() {
|
||||||
const userRootDir = process.argv[2];
|
const userRootDir = process.argv[2];
|
||||||
const rootDir = userRootDir ? path.resolve(userRootDir) : process.cwd();
|
const rootDir = userRootDir ? path.resolve(userRootDir) : process.cwd();
|
||||||
const performanceStart = process.hrtime();
|
|
||||||
|
|
||||||
console.log('👀 Checking if all internal links work...');
|
try {
|
||||||
const files = await listFiles('**/*.html', rootDir);
|
await checkHtmlLinks({ rootDir });
|
||||||
|
} catch (error) {
|
||||||
const filesOutput =
|
console.log('Check Html Links CLI failed to execute', error);
|
||||||
files.length == 0
|
|
||||||
? '🧐 No files to check. Did you select the correct folder?'
|
|
||||||
: `🔥 Found a total of ${chalk.green.bold(files.length)} files to check!`;
|
|
||||||
console.log(filesOutput);
|
|
||||||
|
|
||||||
const { errors, numberLinks } = await validateFiles(files, rootDir);
|
|
||||||
|
|
||||||
console.log(`🔗 Found a total of ${chalk.green.bold(numberLinks)} links to validate!\n`);
|
|
||||||
|
|
||||||
const performance = process.hrtime(performanceStart);
|
|
||||||
if (errors.length > 0) {
|
|
||||||
let referenceCount = 0;
|
|
||||||
for (const error of errors) {
|
|
||||||
referenceCount += error.usage.length;
|
|
||||||
}
|
|
||||||
const output = [
|
|
||||||
`❌ Found ${chalk.red.bold(
|
|
||||||
errors.length.toString(),
|
|
||||||
)} missing reference targets (used by ${referenceCount} links) while checking ${
|
|
||||||
files.length
|
|
||||||
} files:`,
|
|
||||||
...formatErrors(errors)
|
|
||||||
.split('\n')
|
|
||||||
.map(line => ` ${line}`),
|
|
||||||
`Checking links duration: ${performance[0]}s ${performance[1] / 1000000}ms`,
|
|
||||||
];
|
|
||||||
console.error(output.join('\n'));
|
|
||||||
process.exit(1);
|
|
||||||
} else {
|
|
||||||
console.log(
|
|
||||||
`✅ All internal links are valid. (executed in %ds %dms)`,
|
|
||||||
performance[0],
|
|
||||||
performance[1] / 1000000,
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
main();
|
cli();
|
||||||
|
|||||||
Reference in New Issue
Block a user