diff --git a/bin/logrocket b/bin/logrocket index edda235..9862dfb 100755 --- a/bin/logrocket +++ b/bin/logrocket @@ -1,3 +1,35 @@ #!/usr/bin/env node -require('../dist/index.js'); +import yargs from 'yargs'; + +process.on('unhandledRejection', (err) => { + console.error(err.message); + process.exit(1); +}); + +yargs // eslint-disable-line no-unused-expressions + .usage('\nUsage: logrocket [-k ] []') + .env('LOGROCKET') + .alias('h', 'help') + .option('k', { + alias: 'apikey', + type: 'string', + describe: 'Your LogRocket API key', + demand: 'You must provide a LogRocket API key.', + global: true, + requiresArg: true, + }) + .option('apihost', { // testing param to override api url + type: 'string', + describe: false, + }) + .option('v', { // for debugging + alias: 'verbose', + boolean: true, + describe: false, + }) + .commandDir('../src/commands') + .help() + .demand(1, 'Missing command, expected `release` or `upload`') + .recommendCommands() + .argv; diff --git a/index.js b/index.js index 3fc7798..cce6933 100644 --- a/index.js +++ b/index.js @@ -1 +1 @@ -module.exports = require('./src'); +module.exports = require('./dist'); diff --git a/src/apiClient.js b/src/apiClient.js index 2be8770..d37ec51 100644 --- a/src/apiClient.js +++ b/src/apiClient.js @@ -21,7 +21,6 @@ class ApiClient { async _makeRequest({ url, data }) { const [orgSlug, appSlug] = this.apikey.split(':'); - return fetch(`${this.apihost}/v1/orgs/${orgSlug}/apps/${appSlug}/${url}/`, { method: 'POST', headers: this.headers, diff --git a/src/commands/release.js b/src/commands/release.js index 6f4dff4..f3318bb 100644 --- a/src/commands/release.js +++ b/src/commands/release.js @@ -17,6 +17,9 @@ export const builder = (args) => { }; export const handler = async ({ version, strict, apikey, apihost, verbose }) => { + if (!version) throw new Error('Missing release version'); + if (!apikey) throw new Error('Missing api key'); + console.info(`Creating release: ${version} ...`); const client = apiClient({ apikey, apihost }); diff --git a/src/commands/upload.js b/src/commands/upload.js index b2410d7..cfac8a7 100644 --- a/src/commands/upload.js +++ b/src/commands/upload.js @@ -71,7 +71,14 @@ async function gatherFiles(paths) { } export const handler = async (args) => { - const { paths, release, apikey, apihost, verbose, urlPrefix } = args; + const { release, apikey, apihost, verbose, urlPrefix = '' } = args; + let { paths } = args; + if (!release) throw new Error('Missing release version'); + if (!paths) throw new Error('Missing paths'); + if (!apikey) throw new Error('Missing api key'); + if (typeof paths === 'string') { + paths = [paths]; + } console.info(`Preparing to upload sourcemaps for release ${release} ...`); console.info('Gathering file list...'); diff --git a/src/index.js b/src/index.js index 73138d2..05b1a49 100644 --- a/src/index.js +++ b/src/index.js @@ -1,33 +1,4 @@ -import yargs from 'yargs'; +const { handler: releaseHandler } = require('./commands/release'); +const { handler: uploadHandler } = require('./commands/upload'); -process.on('unhandledRejection', (err) => { - console.error(err.message); - process.exit(1); -}); - -yargs // eslint-disable-line no-unused-expressions - .usage('\nUsage: logrocket [-k ] []') - .env('LOGROCKET') - .alias('h', 'help') - .option('k', { - alias: 'apikey', - type: 'string', - describe: 'Your LogRocket API key', - demand: 'You must provide a LogRocket API key.', - global: true, - requiresArg: true, - }) - .option('apihost', { // testing param to override api url - type: 'string', - describe: false, - }) - .option('v', { // for debugging - alias: 'verbose', - boolean: true, - describe: false, - }) - .commandDir('commands') - .help() - .demand(1, 'Missing command, expected `release` or `upload`') - .recommendCommands() - .argv; +module.exports = { release: releaseHandler, upload: uploadHandler };