From 8b842da06178a17dedee0ba67ae6fb42d25a4cf1 Mon Sep 17 00:00:00 2001 From: Nicolas Bonduel Date: Wed, 23 Dec 2020 16:43:43 +0100 Subject: [PATCH 1/2] Add possibility to use programmatically --- bin/logrocket | 34 +++++++++++++++++++++++++++++++++- src/apiClient.js | 1 - src/commands/release.js | 3 +++ src/commands/upload.js | 9 ++++++++- src/index.js | 35 +++-------------------------------- 5 files changed, 47 insertions(+), 35 deletions(-) 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/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 }; From 44b13b58d0e97f957d4e9a16d45d5f6d19378202 Mon Sep 17 00:00:00 2001 From: Nicolas Bonduel Date: Wed, 23 Dec 2020 17:08:54 +0100 Subject: [PATCH 2/2] Update index for compiled programmatical use --- index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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');