${name}
`)
arr.push('')
arr.push('')
}
const makeDropdownEnd = (arr) => {
arr.push('')
arr.push('
')
arr.push(' ')
}
function makeMarkdown (data) {
const str = []
const { collected, missing } = data
makeDropdownStart(`Collected (${collected.length})`, str)
str.push('| Packet |')
str.push('| --- |')
collected.forEach(elem => {
str.push(`| ${elem} |`)
})
makeDropdownEnd(str)
makeDropdownStart(`Missing (${missing.length})`, str)
str.push('| Packet |')
str.push('| --- |')
missing.forEach(elem => {
str.push(`| ${elem} |`)
})
makeDropdownEnd(str)
return str.join('\n')
}
function parsePacketCounter (version, kindCounter) {
const protocol = require(`../data/${version}/protocol.json`)
// record packets
return {
collectedPackets: Object.keys(kindCounter),
allPackets: Object.keys(protocol)
.filter(o => o.startsWith('packet_'))
.map(o => o.replace('packet_', ''))
}
}
async function makeStats (kindCounter, version) {
const { collectedPackets, allPackets } = parsePacketCounter(version, kindCounter)
// write packet data
const data = {
collected: collectedPackets,
missing: allPackets.filter(o => !collectedPackets.includes(o))
}
const metadataFolder = path.join(output, 'metadata')
await fs.promises.writeFile(path.join(output, 'README.md'), makeMarkdown(data))
await fs.promises.mkdir(metadataFolder)
await fs.promises.writeFile(path.join(metadataFolder, 'packets_info.json'), JSON.stringify(data, null, 2))
}
async function main () {
const version = process.argv[2]
if (!version) {
console.error('Usage: node dumpPackets.js