// Copyright (c) 2024 yellows111 // // Permission is hereby granted, free of charge, to any person obtaining a // copy of this software and associated documentation files (the "Software"), // to deal in the Software without restriction, including without limitation // the rights to use, copy, modify, merge, publish, distribute, sublicense, // and/or sell copies of the Software, and to permit persons to whom the // Software is furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. // natives const Process = require("process"); const Filesystem = require("fs"); // required vars var rootPrefix = "/"; if(process.env["VPREFIX"]) { rootPrefix = process.env["VPREFIX"]; } rootPrefix = rootPrefix.substring(0, rootPrefix.length - 1); var targetDomain = "localhost"; if(process.env["DOMAIN"]) { targetDomain = process.env["DOMAIN"]; } var outputTemp = ""; function renderSiteMap() { return ( /* eslint-disable indent */ ` ${outputTemp} ` ); /* eslint-enable indent */ } function makeSitemapChunk(file, inputDir) { outputTemp = outputTemp.concat( /* eslint-disable indent */ ` https://${targetDomain}${rootPrefix}${file.replace(inputDir, "").replace(".md", ".html")} ${Filesystem.statSync(file).mtime.toISOString().substring(0, 10)} ` ); /* eslint-enable indent */ } if(require.main === module) { const fileList = Process.argv.slice(3); const currentDir = Process.argv[2]; for (let file of fileList) { makeSitemapChunk(file, currentDir); } Filesystem.writeFileSync(`${Process.argv[2]}/sitemap.xml`, renderSiteMap()); } module.exports = function(fileList, filter) { for (let file of fileList) { makeSitemapChunk(file, filter); } return renderSiteMap(); }