diff --git a/bin/ytdl-mp3.cjs b/bin/ytdl-mp3.cjs index 2f235e0..4da659f 100755 --- a/bin/ytdl-mp3.cjs +++ b/bin/ytdl-mp3.cjs @@ -1,5 +1,37 @@ #!/usr/bin/env node -const { main } = require('../dist/index.cjs'); +const { Command } = require('commander'); -main(); +const { description, name, version } = require('../package.json'); +const { Downloader, YtdlMp3Error } = require('../dist/index.cjs'); + +const program = new Command(); +program.name(name); +program.description(description); +program.version(version); +program.allowExcessArguments(false); +program.argument('', 'url of video to download'); +program.option('-o --output-dir ', 'path to output directory', Downloader.defaultDownloadsDir); +program.option('-n --no-get-tags', 'skip extracting/applying id3 tags'); +program.option('-v --verify-tags', 'verify id3 tags fetched from itunes'); +program.option('-s --silent-mode', 'skip console output'); +program.option('--verbose', 'enable verbose mode'); +program.parse(); + +(async function () { + const options = program.opts(); + try { + const downloader = new Downloader(options); + await downloader.downloadSong(program.args[0]); + } catch (err) { + if (err instanceof YtdlMp3Error) { + if (options.verbose) { + console.error(err.cause); + console.error(err.stack); + } + console.error(`ERROR: ${err.message}`); + process.exit(1); + } + throw err; + } +})(); diff --git a/src/index.ts b/src/index.ts index ec00512..87e35aa 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,5 +1,4 @@ export * from './Downloader'; export * from './FormatConverter'; export * from './SongTagsSearch'; -export { main } from './main'; export { YtdlMp3Error } from './utils'; diff --git a/src/main.ts b/src/main.ts deleted file mode 100644 index e8d69e4..0000000 --- a/src/main.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { Command } from 'commander'; - -import { description, name, version } from '../package.json'; -import { Downloader } from './Downloader'; -import { YtdlMp3Error } from './utils'; - -export async function main() { - const program = new Command(); - program.name(name); - program.description(description); - program.version(version); - program.allowExcessArguments(false); - program.argument('', 'url of video to download'); - program.option('-o --output-dir ', 'path to output directory', Downloader.defaultDownloadsDir); - program.option('-n --no-get-tags', 'skip extracting/applying id3 tags'); - program.option('-v --verify-tags', 'verify id3 tags fetched from itunes'); - program.option('-s --silent-mode', 'skip console output'); - program.option('--verbose', 'enable verbose mode'); - program.parse(); - - const options = program.opts(); - try { - const downloader = new Downloader(options); - await downloader.downloadSong(program.args[0]!); - } catch (err) { - if (err instanceof YtdlMp3Error) { - if (options.verbose) { - console.error(err.cause); - console.error(err.stack); - } - console.error(`ERROR: ${err.message}`); - process.exit(1); - } - throw err; - } -}