const listDir = require('@sukka/listdir'); const path = require('path'); const fs = require('fs'); const fsp = require('fs/promises'); const { task } = require('./lib/trace-runner'); const rootPath = path.resolve(__dirname, '../'); const publicPath = path.resolve(__dirname, '../public'); const folderAndFilesToBeDeployed = [ 'Assets', 'List', 'Clash', 'Modules', 'Script', 'LICENSE' ]; const buildPublicHtml = task(__filename, async () => { await fsp.mkdir(publicPath, { recursive: true }); await Promise.all(folderAndFilesToBeDeployed.map(dir => fsp.cp( path.resolve(rootPath, dir), path.resolve(publicPath, dir), { force: true, recursive: true } ))); const list = await listDir(publicPath, { ignoreHidden: true, ignorePattern: /node_modules|Build|.DS_Store|\.(json|html|md|js)|LICENSE/ }); const html = template(list); return fs.promises.writeFile(path.join(publicPath, 'index.html'), html, 'utf-8'); }); module.exports.buildPublicHtml = buildPublicHtml; if (require.main === module) { buildPublicHtml(); } /** * @param {string[]} urlList * @returns {string} */ function template(urlList) { return ` Surge Ruleset Server | Sukka (@SukkaW)

Sukka Surge Ruleset Server

Made by Sukka | Source @ GitHub | Licensed under AGPL-3.0

Last Build: ${new Date().toISOString()}



`; }