generator-cap
Version:
CAP (Connected Apps Platform) is an open-source suite of technologies for rapidly creating web and mobile applications that synchronize data with Salesforce and other systems.
199 lines (190 loc) • 6.53 kB
JavaScript
const color = require('colors-cli/toxic');
const loading = require('loading-cli');
let load = null;
exports.run = (promise, messages, appName) => {
let commandResult;
let errorAction;
return new Promise(async (resolve, reject) => {
try {
load = loading(messages.actionMessage.blue).start();
// eslint-disable-next-line no-unused-expressions
appName
? (commandResult = await promise(appName))
: (commandResult = await promise());
if (commandResult) {
if (commandResult.error) {
if (messages.actionMessage === 'Login...') {
load.stop();
load.fail(commandResult.error.messages);
reject(commandResult.error);
}
} else {
let data = commandResult.stdout;
switch (data) {
case data.includes('Logged in as '):
load.stop();
load.succeed(messages.responseMessage);
resolve(messages.responseMessage);
break;
case data.includes('Installing plugin heroku-connect-plugin... Done'):
load.stop();
load.succeed(messages.responseMessage);
resolve(messages.responseMessage);
break;
case data.includes('added'):
load.stop();
load.succeed(messages.responseMessage);
resolve(messages.responseMessage);
break;
case data.includes('no plugins installed'):
load.stop();
load.succeed(messages.responseMessage);
resolve(messages.responseMessage);
break;
default:
load.stop();
load.succeed(messages.responseMessage);
resolve(commandResult);
break;
}
// if (commandResult.stdout.includes('Logged in as ')) {
// load.stop();
// load.succeed(messages.responseMessage);
// resolve(messages.responseMessage);
// }
// if (
// commandResult.stderr.includes(
// 'Installing plugin heroku-connect-plugin... Done'
// )
// ) {
// load.stop();
// load.succeed(messages.responseMessage);
// resolve(messages.responseMessage);
// }
// if (commandResult.stdout.includes('added')) {
// load.stop();
// load.succeed(messages.responseMessage);
// resolve(messages.responseMessage);
// }
// if (commandResult.stdout.includes('no plugins installed\n')) {
// load.stop();
// load.fail(messages.error_message);
// errorAction = {
// messages: commandResult.stdout,
// code: 400,
// description: 'Heroku Connect is not installed'
// };
// reject(errorAction);
// }
// load.stop();
// load.succeed(messages.responseMessage);
// resolve(commandResult);
}
} else {
load.stop();
load.succeed(messages.responseMessage);
let response = {
stderr: '',
stdout: 'Successful mapping'
};
resolve(response);
}
} catch (error) {
console.log('error: ', error);
switch (error.code) {
case 1:
if (error.stderr.includes('No connection(s) found')) {
load.stop();
load.fail(`${error.stderr} on Heroku`);
errorAction = {
messages: `${error.stderr}`,
code: 1,
description: `${error.stderr} on Heroku`
};
reject(errorAction);
} else if (
error.stderr.includes(
`You've reached the limit of 5 apps for unverified accounts`
)
) {
load.stop();
load.fail(
"You've reached the limit of 5 apps for unverified accounts. Delete some apps or add a credit card to verify your Heroku account."
);
errorAction = {
messages: `${error.stderr}`,
code: 1,
description:
"You've reached the limit of 5 apps for unverified accounts. Delete some apps or add a credit card to verify your Heroku account.."
};
reject(errorAction);
} else if (error.stderr.includes(`throw new Error('no input');`)) {
load.stop();
load.fail('Wrong heroku credentials');
errorAction = {
messages: `${error.stderr}`,
code: 1,
description: 'Wrong heroku credentials'
};
reject(errorAction);
} else if (error.stderr.includes('heroku: Enter your login credentials')) {
load.stop();
load.fail(messages.errorMessage);
errorAction = {
messages: 'User not found',
code: 2,
description: "You don't a user register jet"
};
reject(errorAction);
} else {
load.stop();
load.fail(messages.errorMessage);
errorAction = {
description: "Heroku's CLI is not installed.",
messages: "Heroku's CLI is not installed.",
code: 127
};
reject(errorAction);
}
break;
case 2:
load.stop();
load.fail(messages.errorMessage);
errorAction = {
messages: 'User not found',
code: 2,
description: "You don't a user register jet"
};
reject(errorAction);
break;
// Reject when the user is not find it
case 100:
load.stop();
load.fail(messages.errorMessage);
errorAction = {
messages: 'User not found',
code: 100,
description: "You don't access"
};
reject(errorAction);
break;
case 101:
load.stop();
load.fail(messages);
break;
case 127:
load.stop();
load.fail(messages.errorMessage);
errorAction = {
description: "Heroku's CLI is not installed.",
messages: "Heroku's CLI is not installed.",
code: 127
};
reject(errorAction);
break;
default:
break;
}
}
});
};