From c041373931c469d3ad05f91b836afdf0b2ae692e Mon Sep 17 00:00:00 2001 From: Aleksandr Statciuk Date: Wed, 2 Feb 2022 06:08:48 +0300 Subject: [PATCH] Create validate.js --- scripts/commands/validate.js | 48 ++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 scripts/commands/validate.js diff --git a/scripts/commands/validate.js b/scripts/commands/validate.js new file mode 100644 index 00000000..4cb8a867 --- /dev/null +++ b/scripts/commands/validate.js @@ -0,0 +1,48 @@ +const { parser, logger, api } = require('../core') +const { program } = require('commander') +const chalk = require('chalk') + +program.argument('', 'Path to file to validate').parse(process.argv) + +const options = program.opts() + +async function main() { + await api.channels.load() + + const stats = { + channels: 0, + files: 0 + } + + if (!program.args.length) { + logger.error('required argument "filepath" not specified') + } + + for (const filepath of program.args) { + const { site, channels } = await parser.parseChannels(filepath) + + const output = [] + for (const channel of channels) { + if (!api.channels.find({ id: channel.xmltv_id })) { + output.push(channel) + stats.channels++ + } + } + + if (output.length) { + logger.info(chalk.underline(filepath)) + console.table(output, ['xmltv_id', 'site_id', 'name']) + console.log() + stats.files++ + } + } + + if (stats.channels > 0) { + logger.error( + chalk.red(`${stats.channels} channel(s) in ${stats.files} file(s) have the wrong xmltv_id`) + ) + process.exit(1) + } +} + +main()