@@ -2,9 +2,9 @@ const inquirer = require("inquirer");
2
2
const JSONbig = require("json-bigint")({ storeAsString: false });
3
3
const { Command } = require("commander");
4
4
const { localConfig } = require("../config");
5
- const { questionsDeployFunctions, questionsGetEntrypoint, questionsDeployCollections } = require("../questions");
5
+ const { questionsDeployFunctions, questionsGetEntrypoint, questionsDeployCollections, questionsConfirmDeployCollections } = require("../questions");
6
6
const { actionRunner, success, log, error, commandDescriptions } = require("../parser");
7
- const { functionsGet, functionsCreate, functionsUpdate, functionsCreateDeployment, functionsUpdateDeployment } = require('./functions');
7
+ const { functionsGet, functionsCreate, functionsUpdate, functionsCreateDeployment, functionsUpdateDeployment, functionsListVariables, functionsDeleteVariable, functionsCreateVariable } = require('./functions');
8
8
const {
9
9
databasesGet,
10
10
databasesCreate,
@@ -142,7 +142,7 @@ const deploy = new Command("deploy")
142
142
command.help()
143
143
}));
144
144
145
- const deployFunction = async ({ functionId, all } = {}) => {
145
+ const deployFunction = async ({ functionId, all, yes } = {}) => {
146
146
let response = {};
147
147
148
148
const functionIds = [];
@@ -160,7 +160,7 @@ const deployFunction = async ({ functionId, all } = {}) => {
160
160
}
161
161
162
162
if(functionIds.length < = 0) {
163
- const answers = await inquirer.prompt(questionsDeployFunctions);
163
+ const answers = await inquirer.prompt(questionsDeployFunctions[0] );
164
164
functionIds.push(...answers.functions);
165
165
}
166
166
@@ -188,6 +188,47 @@ const deployFunction = async ({ functionId, all } = {}) => {
188
188
throw new Error(`Runtime missmatch! (local=${func.runtime},remote=${response.runtime}) Please delete remote function or update your appwrite.json`);
189
189
}
190
190
191
+ if(func.variables) {
192
+ // Delete existing variables
193
+
194
+ // TODO: Pagination?
195
+ const { variables: remoteVariables } = await functionsListVariables({
196
+ functionId: func['$id'],
197
+ limit: 100,
198
+ parseOutput: false
199
+ });
200
+
201
+ if(remoteVariables.length > 0) {
202
+ if(!yes) {
203
+ const variableAnswers = await inquirer.prompt(questionsDeployFunctions[1])
204
+
205
+ if (variableAnswers.override !== "YES") {
206
+ log(`Received "${variableAnswers.override}". Skipping ${func.name} ( ${func['$id']} )`);
207
+ continue;
208
+ }
209
+ }
210
+
211
+ await Promise.all(remoteVariables.map(async remoteVariable => {
212
+ await functionsDeleteVariable({
213
+ functionId: func['$id'],
214
+ variableId: remoteVariable['$id'],
215
+ parseOutput: false
216
+ });
217
+ }));
218
+ }
219
+
220
+ // Deploy local variables
221
+
222
+ await Promise.all(Object.keys(func.variables).map(async localVariableKey => {
223
+ await functionsCreateVariable({
224
+ functionId: func['$id'],
225
+ key: localVariableKey,
226
+ value: func.variables[localVariableKey],
227
+ parseOutput: false
228
+ });
229
+ }));
230
+ }
231
+
191
232
response = await functionsUpdate({
192
233
functionId: func['$id'],
193
234
name: func.name,
@@ -359,7 +400,7 @@ const createAttribute = async (databaseId, collectionId, attribute) => {
359
400
}
360
401
}
361
402
362
- const deployCollection = async ({ all } = {}) => {
403
+ const deployCollection = async ({ all, yes } = {}) => {
363
404
let response = {};
364
405
365
406
let collectionIds = [];
@@ -413,10 +454,12 @@ const deployCollection = async ({ all } = {}) => {
413
454
})
414
455
log(`Collection ${collection.name} ( ${collection['$id']} ) already exists.`);
415
456
416
- answers = await inquirer.prompt(questionsDeployCollections[1])
417
- if (answers.override !== "YES") {
418
- log(`Received "${answers.override}". Skipping ${collection.name} ( ${collection['$id']} )`);
419
- continue;
457
+ if(!yes) {
458
+ answers = await inquirer.prompt(questionsDeployCollections[1])
459
+ if (answers.override !== "YES") {
460
+ log(`Received "${answers.override}". Skipping ${collection.name} ( ${collection['$id']} )`);
461
+ continue;
462
+ }
420
463
}
421
464
422
465
log(`Updating attributes ... `);
@@ -556,12 +599,14 @@ deploy
556
599
.description("Deploy functions in the current directory.")
557
600
.option(`--functionId <functionId >`, `Function ID`)
558
601
.option(`--all`, `Flag to deploy all functions`)
602
+ .option(`--yes`, `Flag to confirm all warnings`)
559
603
.action(actionRunner(deployFunction));
560
604
561
605
deploy
562
606
.command("collection")
563
607
.description("Deploy collections in the current project.")
564
608
.option(`--all`, `Flag to deploy all functions`)
609
+ .option(`--yes`, `Flag to confirm all warnings`)
565
610
.action(actionRunner(deployCollection));
566
611
567
612
module.exports = {
0 commit comments