@aws-amplify/cli-internal
Version:
Amplify CLI
56 lines • 2.35 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.detectLocalDrift = void 0;
const amplify_cli_core_1 = require("@aws-amplify/amplify-cli-core");
const fs_extra_1 = __importDefault(require("fs-extra"));
function assertValidResourceInfo(resource) {
if (typeof resource !== 'object' ||
resource === null ||
typeof resource.category !== 'string' ||
typeof resource.resourceName !== 'string' ||
typeof resource.service !== 'string' ||
(resource.providerPlugin !== undefined && typeof resource.providerPlugin !== 'string') ||
(resource.dependsOn !== undefined && !Array.isArray(resource.dependsOn))) {
throw new Error(`Invalid ResourceInfo: ${JSON.stringify(resource)}`);
}
}
async function detectLocalDrift(context) {
try {
if (!amplify_cli_core_1.stateManager.metaFileExists()) {
return {
skipped: true,
skipReason: 'Project not initialized',
};
}
const currentCloudBackendDir = amplify_cli_core_1.pathManager.getCurrentCloudBackendDirPath();
if (!currentCloudBackendDir || !fs_extra_1.default.existsSync(currentCloudBackendDir)) {
return {
skipped: true,
skipReason: 'No cloud backend found - project may not be deployed yet',
};
}
const { getResourceStatus } = require('../../extensions/amplify-helpers/resource-status-data');
const statusResults = await getResourceStatus();
const { resourcesToBeCreated, resourcesToBeUpdated, resourcesToBeDeleted } = statusResults;
for (const arr of [resourcesToBeCreated, resourcesToBeUpdated, resourcesToBeDeleted]) {
arr.forEach(assertValidResourceInfo);
}
return {
resourcesToBeCreated,
resourcesToBeUpdated,
resourcesToBeDeleted,
skipped: false,
};
}
catch (error) {
return {
skipped: true,
skipReason: error.message || 'Unable to detect local drift',
};
}
}
exports.detectLocalDrift = detectLocalDrift;
//# sourceMappingURL=detect-local-drift.js.map