import listDir from '@sukka/listdir'; import path from 'path'; import fsp from 'fs/promises' import { task } from './lib/trace-runner'; const rootPath = path.resolve(__dirname, '../'); const publicPath = path.resolve(__dirname, '../public'); const folderAndFilesToBeDeployed = [ 'Assets', 'List', 'Clash', 'Modules', 'Script', 'LICENSE' ]; export 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 Bun.write(path.join(publicPath, 'index.html'), html); }); if (import.meta.main) { buildPublicHtml(); } function template(urlList: string[]) { 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()}



`; }