diff --git a/src/callbacks.js b/src/callbacks.js index 74c306a..ca0dca6 100644 --- a/src/callbacks.js +++ b/src/callbacks.js @@ -7,7 +7,7 @@ const querySuccessCb = (ctx, response, queryType) => { if (queryType === 'subscription') { cli.action.stop('event received'); ctx.log(out); - cli.action.start('Waiting'); + ctx.action.start('Waiting'); } else { if (ctx.flags.introspect) { if (ctx.flags.format === 'graphql') { @@ -24,6 +24,7 @@ const querySuccessCb = (ctx, response, queryType) => { const queryErrorCb = (ctx, queryError, queryType) => { cli.action.stop('error'); + if (!queryType) { handleGraphQLError(queryError); } else if (queryType === 'subscription') { diff --git a/src/command.js b/src/command.js index 5ef631d..943ba98 100644 --- a/src/command.js +++ b/src/command.js @@ -52,7 +52,7 @@ class GraphqurlCommand extends Command { if (queryString === null) { try { - queryString = await executeQueryFromTerminalUI({ + queryString = await executeQueryFromTerminalUI(this, { endpoint: endpoint, headers, variables, @@ -71,10 +71,23 @@ class GraphqurlCommand extends Command { name: flags.name, }; - cli.action.start('Executing query'); + this.start('Executing query'); + await query(queryOptions, successCallback, errorCallback); } + start(message) { + if (!this.flags.silent) { + cli.action.start(message); + } + } + + stop(message) { + if (!this.flags.silent) { + cli.action.stop(message); + } + } + parseHeaders(headersArray) { let headerObject = {}; if (headersArray) { @@ -290,6 +303,12 @@ GraphqurlCommand.flags = { default: 'graphql', options: ['json', 'graphql'], }), + + silent: flags.boolean({ + char: 's', + default: false, + description: 'silent mode', + }), }; GraphqurlCommand.args = [ diff --git a/src/ui.js b/src/ui.js index 1c56c2a..f75a458 100644 --- a/src/ui.js +++ b/src/ui.js @@ -1,7 +1,6 @@ const tk = require('terminal-kit'); const {getIntrospectionQuery, buildClientSchema} = require('graphql/utilities'); const {parse} = require('graphql/language'); -const {cli} = require('cli-ux'); const {validateQuery, getAutocompleteSuggestions} = require('graphql-language-service-interface'); const {Position} = require('graphql-language-service-utils'); const makeClient = require('./client'); @@ -149,12 +148,12 @@ const getQueryFromTerminalUI = () => { }); }; -const executeQueryFromTerminalUI = async (queryOptions, successCb, errorCb) => { +const executeQueryFromTerminalUI = async (ctx, queryOptions, successCb, errorCb) => { const { endpoint, headers, } = queryOptions; - cli.action.start('Introspecting schema'); + ctx.start('Introspecting schema'); let client = makeClient({ endpoint, headers, @@ -163,10 +162,10 @@ const executeQueryFromTerminalUI = async (queryOptions, successCb, errorCb) => try { schemaResponse = await client.query({query: getIntrospectionQuery()}, null, errorCb); } catch (e) { - cli.action.stop('error'); + ctx.stop('error'); throw new Error('unable to introspect graphql schema at the given endpoint'); } - cli.action.stop('done'); + ctx.stop('done'); const r = schemaResponse.data; // term.fullscreen(true); schema = buildClientSchema(r); @@ -176,9 +175,9 @@ const executeQueryFromTerminalUI = async (queryOptions, successCb, errorCb) => while (!exit) { /* eslint-disable-next-line no-await-in-loop */ const queryString = await getQueryFromTerminalUI(); - cli.action.start('Waiting'); + ctx.start('Waiting'); await query({query: queryString, endpoint, headers}, successCb, errorCb); - cli.action.stop('done'); + ctx.stop('done'); } };