@aws-amplify/amplify-category-api
Version:
Amplify CLI API Category Plugin
36 lines (33 loc) • 1.51 kB
text/typescript
import * as path from 'path';
import { $TSContext, JSONUtilities, pathManager } from '@aws-amplify/amplify-cli-core';
import * as fs from 'fs-extra';
import { parametersFileName } from './aws-constants';
import { addPolicyResourceNameToPaths, copyCfnTemplate } from './legacy-add-resource';
import { serviceMetadataFor } from './utils/dynamic-imports';
export const legacyUpdateResource = async (updateWalkthroughPromise: Promise<any>, context: $TSContext, category: string, service) => {
let answers;
let { cfnFilename } = await serviceMetadataFor(service);
const result = await updateWalkthroughPromise;
const options: any = {};
if (result) {
if (result.answers) {
({ answers } = result);
options.dependsOn = result.dependsOn;
} else {
answers = result;
}
if (!result.noCfnFile) {
if (answers.customCfnFile) {
cfnFilename = answers.customCfnFile;
}
addPolicyResourceNameToPaths(answers.paths);
copyCfnTemplate(context, category, answers, cfnFilename);
const parameters = { ...answers };
const resourceDirPath = pathManager.getResourceDirectoryPath(undefined, category, parameters.resourceName);
fs.ensureDirSync(resourceDirPath);
const parametersFilePath = path.join(resourceDirPath, parametersFileName);
JSONUtilities.writeJson(parametersFilePath, parameters);
context.amplify.updateamplifyMetaAfterResourceUpdate(category, answers.resourceName, 'dependsOn', answers.dependsOn);
}
}
};