-
Notifications
You must be signed in to change notification settings - Fork 820
/
Copy pathindex.js
119 lines (100 loc) · 3.37 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
const path = require('path');
const fs = require('fs-extra');
const initializer = require('./lib/initializer');
const configManager = require('./lib/configuration-manager');
const projectScanner = require('./lib/project-scanner');
const constants = require('./lib/constants');
const {
createAmplifyConfig,
createAWSConfig,
deleteAmplifyConfig,
getAmplifyConfig,
writeToFile,
} = require('./lib/frontend-config-creator');
const pluginName = 'flutter';
const emptyAmplifyConfigurationPath = path.join(__dirname, 'lib', 'amplifyconfiguration.empty.dart');
function scanProject(projectPath) {
return projectScanner.run(projectPath);
}
function init(context) {
return initializer.run(context);
}
function onInitSuccessful(context) {
return initializer.onInitSuccessful(context);
}
/**
* This function enables export to write these files to an external path
* @param {TSContext} context
* @param {metaWithOutput} amplifyResources
* @param {cloudMetaWithOutput} amplifyCloudResources
* @param {string} exportPath path to where the files need to be written
*/
function createFrontendConfigsAtPath(context, amplifyResources, amplifyCloudResources, exportPath) {
const newOutputsForFrontend = amplifyResources.outputsForFrontend;
const cloudOutputsForFrontend = amplifyCloudResources.outputsForFrontend;
const amplifyConfig = getAmplifyConfig(
context,
newOutputsForFrontend,
cloudOutputsForFrontend,
path.join(exportPath, constants.amplifyConfigFilename),
);
writeToFile(exportPath, constants.amplifyConfigFilename, amplifyConfig);
}
function createFrontendConfigs(context, amplifyResources, amplifyCloudResources) {
const newOutputsForFrontend = amplifyResources.outputsForFrontend;
const cloudOutputsForFrontend = amplifyCloudResources.outputsForFrontend;
createAmplifyConfig(context, newOutputsForFrontend, cloudOutputsForFrontend);
return createAWSConfig(context, newOutputsForFrontend, cloudOutputsForFrontend);
}
function configure(context) {
return configManager.configure(context);
}
function publish(context) {
return context;
}
function run(context) {
return context;
}
function displayFrontendDefaults(context) {
configManager.displayFrontendDefaults(context);
}
function setFrontendDefaults(context) {
configManager.setFrontendDefaults(context);
}
async function executeAmplifyCommand(context) {
let commandPath = path.normalize(path.join(__dirname, 'commands'));
if (context.input.command === 'help') {
commandPath = path.join(commandPath, pluginName);
} else {
commandPath = path.join(commandPath, pluginName, context.input.command);
}
const commandModule = require(commandPath);
await commandModule.run(context);
}
async function handleAmplifyEvent(context, args) {
context.print.info(`${pluginName} handleAmplifyEvent to be implemented`);
context.print.info(`Received event args ${args}`);
}
async function initializeAmplifyConfiguration(destDir) {
const dest = path.resolve(destDir, 'amplifyconfiguration.dart');
if (!fs.existsSync(dest)) {
fs.copySync(emptyAmplifyConfigurationPath, dest);
}
}
module.exports = {
constants,
scanProject,
init,
onInitSuccessful,
configure,
publish,
run,
displayFrontendDefaults,
setFrontendDefaults,
createFrontendConfigs,
createFrontendConfigsAtPath,
executeAmplifyCommand,
handleAmplifyEvent,
deleteConfig: deleteAmplifyConfig,
initializeAmplifyConfiguration,
};