50 lines
1.7 KiB
JavaScript

'use strict';
const inquirer = require('@serverless/utils/inquirer');
const resolveProviderCredentials = require('@serverless/dashboard-plugin/lib/resolveProviderCredentials');
const isAuthenticated = require('@serverless/dashboard-plugin/lib/isAuthenticated');
const hasLocalCredentials = require('../../aws/has-local-credentials');
const ServerlessError = require('../../serverless-error');
const resolveStage = require('../../utils/resolve-stage');
const resolveRegion = require('../../utils/resolve-region');
module.exports = {
confirm: async (message, options = {}) => {
const name = options.name || 'isConfirmed';
return (
await inquirer.prompt({
message,
type: 'confirm',
name,
})
)[name];
},
doesServiceInstanceHaveLinkedProvider: async ({ configuration, options }) => {
const region = resolveRegion({ configuration, options });
const stage = resolveStage({ configuration, options });
let result;
try {
result = await resolveProviderCredentials({ configuration, region, stage });
} catch (err) {
if (err.statusCode && err.statusCode >= 500) {
throw new ServerlessError(
'Dashboard service is currently unavailable, please try again later',
'DASHBOARD_UNAVAILABLE'
);
}
throw err;
}
return Boolean(result);
},
resolveInitialContext: ({ configuration, serviceDir }) => {
return {
isInServiceContext: Boolean(serviceDir),
isLoggedIntoDashboard: isAuthenticated(),
hasLocalAwsCredentials: hasLocalCredentials(),
isDashboardEnabled: Boolean(configuration && configuration.org && configuration.app),
};
},
};