2026-02-13 12:52:15 +03:00
|
|
|
import { HTMLTableRow, HTMLTableDataItem, HTMLTableColumn } from '../../types/htmlTable'
|
2026-05-04 18:01:51 +03:00
|
|
|
import { Worker, WorkerData, WorkerGuideSource } from '../../models'
|
|
|
|
|
import { DATA_DIR, ROOT_DIR } from '../../constants'
|
2026-02-13 12:52:15 +03:00
|
|
|
import { Storage } from '@freearhey/storage-js'
|
|
|
|
|
import { Collection } from '@freearhey/core'
|
|
|
|
|
import { Logger } from '@freearhey/core'
|
|
|
|
|
import { HTMLTable } from '../../core'
|
|
|
|
|
|
|
|
|
|
async function main() {
|
|
|
|
|
const logger = new Logger({ level: process.env.NODE_ENV === 'test' ? -999 : 3 })
|
2026-05-04 18:01:51 +03:00
|
|
|
const dataStorage = new Storage(DATA_DIR)
|
2026-02-13 12:52:15 +03:00
|
|
|
|
2026-05-04 18:01:51 +03:00
|
|
|
logger.info('loading workers.json...')
|
|
|
|
|
const workers = await dataStorage.json('workers.json')
|
2026-02-13 12:52:15 +03:00
|
|
|
|
2026-05-04 18:01:51 +03:00
|
|
|
if (!Array.isArray(workers)) return
|
2026-02-13 12:52:15 +03:00
|
|
|
|
|
|
|
|
logger.info('creating guides table...')
|
|
|
|
|
const rows = new Collection<HTMLTableRow>()
|
2026-05-04 18:01:51 +03:00
|
|
|
workers.forEach((data: WorkerData) => {
|
|
|
|
|
const worker = new Worker(data)
|
|
|
|
|
|
|
|
|
|
const sources = worker.getGuideSources()
|
2026-02-13 12:52:15 +03:00
|
|
|
rows.add(
|
|
|
|
|
new Collection<HTMLTableDataItem>([
|
|
|
|
|
{ value: worker.host },
|
|
|
|
|
{ value: worker.getStatusEmoji(), align: 'center' },
|
|
|
|
|
{ value: worker.getChannelsCount().toString(), align: 'right' },
|
|
|
|
|
{ value: worker.getLastUpdated(), align: 'left' },
|
|
|
|
|
{
|
2026-05-04 18:01:51 +03:00
|
|
|
value: sources.length
|
|
|
|
|
? sources
|
|
|
|
|
.map((source: WorkerGuideSource) => `<a href="${source.url}">${source.format}</a>`)
|
|
|
|
|
.join(' | ')
|
2026-05-03 21:37:49 +03:00
|
|
|
: '-'
|
2026-02-13 12:52:15 +03:00
|
|
|
}
|
|
|
|
|
])
|
|
|
|
|
)
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
logger.info('updating guides.md...')
|
2026-05-04 18:01:51 +03:00
|
|
|
const rootStorage = new Storage(ROOT_DIR)
|
2026-02-13 12:52:15 +03:00
|
|
|
const table = new HTMLTable(
|
|
|
|
|
rows,
|
|
|
|
|
new Collection<HTMLTableColumn>([
|
|
|
|
|
{ name: 'Host', align: 'left' },
|
|
|
|
|
{ name: 'Status', align: 'left' },
|
|
|
|
|
{ name: 'Channels', align: 'left' },
|
|
|
|
|
{ name: 'Last Updated', align: 'left' },
|
|
|
|
|
{ name: 'Links', align: 'left' }
|
|
|
|
|
])
|
|
|
|
|
)
|
|
|
|
|
const guidesTemplate = await new Storage().load('scripts/templates/_guides.md')
|
|
|
|
|
const guidesContent = guidesTemplate.replace('_TABLE_', table.toString())
|
|
|
|
|
await rootStorage.save('GUIDES.md', guidesContent)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
main()
|