This is an automated email from the ASF dual-hosted git repository. urfree pushed a commit to branch add-canonical-script in repository https://gitbox.apache.org/repos/asf/pulsar-site.git
commit 2f343dcd9147de9d4cf09f1ffb76fc059f50f206 Author: Li Li <[email protected]> AuthorDate: Tue Mar 21 19:23:06 2023 +0800 [util] a script to batch add canonical metadata for SEO optimization Signed-off-by: Li Li <[email protected]> --- scripts/add-canonical.js | 65 +++++++++++++++++++++++++ versioned_docs/version-2.11.x/adaptors-kafka.md | 5 ++ 2 files changed, 70 insertions(+) diff --git a/scripts/add-canonical.js b/scripts/add-canonical.js new file mode 100644 index 00000000000..4feb2ec9de3 --- /dev/null +++ b/scripts/add-canonical.js @@ -0,0 +1,65 @@ +const fs = require("fs"); +const path = require("path"); +const _ = require("lodash"); + +function travel(dir, callback) { + if (fs.statSync(dir).isFile()) { + if (dir.endsWith(".md")) { + callback(dir); + } + } else { + fs.readdirSync(dir).forEach((file) => { + var pathname = path.join(dir, file); + if (fs.statSync(pathname).isDirectory()) { + travel(pathname, callback); + } else if (pathname.endsWith(".md")) { + callback(pathname); + } + }); + } +} + +function fix(mdpath) { + let data = fs.readFileSync(mdpath, "utf8"); + if (/<link rel="canonical"/g.test(data)) { + return; + } + const idm = /^---\nid:\s*(.+)\s*/g.exec(data); + if (!idm || idm.length < 1) { + return; + } + const docId = idm[1]; + const canonicalUrl = `https://pulsar.apache.org/docs/${docId}/`; + const canonicalMeta = `<head> + <link rel="canonical" href="${canonicalUrl}" /> +</head>`; + data = data.replace( + /(sidebar_label:.*\n---\s*\n)/gm, + "$1\n" + canonicalMeta + "\n\n" + ); + fs.writeFileSync(mdpath, data); + console.log(mdpath + " fixed"); +} + +module.exports = (dir) => { + travel(dir, fix); +}; + +// Example: node scripts/add-canonical.js versioned_docs/version-2.11.x/adaptors-kafka.md +if (typeof require !== "undefined" && require.main === module) { + const [dir] = process.argv.slice(2); + travel(path.join(__dirname, "..", dir), fix); +} + +// Usage: +// Example 1: Update a specify md file: +// node scripts/add-canonical.js versioned_docs/version-2.11.x/adaptors-kafka.md + +// Example 2: Update files in a specify directory: +// node scripts/add-canonical.js versioned_docs/version-2.11.x + +// Example 3: Update all old version docs: +// node scripts/add-canonical.js versioned_docs + +// Example 4: Update all current version docs: +// node scripts/add-canonical.js docs \ No newline at end of file diff --git a/versioned_docs/version-2.11.x/adaptors-kafka.md b/versioned_docs/version-2.11.x/adaptors-kafka.md index 49761504779..fa3bf3eefbf 100644 --- a/versioned_docs/version-2.11.x/adaptors-kafka.md +++ b/versioned_docs/version-2.11.x/adaptors-kafka.md @@ -5,6 +5,11 @@ sidebar_label: "Kafka client wrapper" --- + +<head> + <link rel="canonical" href="https://pulsar.apache.org/docs/adaptors-kafka/" /> +</head> + Pulsar provides an easy option for applications that are currently written using the [Apache Kafka](http://kafka.apache.org) Java client API. ## Use the Pulsar Kafka compatibility wrapper
