Skip to content

Commit ebc1464

Browse files
Merge pull request #864 from appwrite/feat-pull-project-settings
Enanched project settings CLI managment
2 parents 7051e44 + a6f08c8 commit ebc1464

File tree

3 files changed

+104
-8
lines changed

3 files changed

+104
-8
lines changed

templates/cli/lib/commands/pull.js.twig

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@ const pullProject = async () => {
2121

2222
})
2323

24-
localConfig.setProject(response.$id, response.name);
24+
localConfig.setProject(response.$id, response.name, response);
25+
2526
success();
2627
} catch (e) {
2728
throw e;
@@ -169,7 +170,7 @@ const pull = new Command("pull")
169170

170171
pull
171172
.command("project")
172-
.description("Pulling your {{ spec.title|caseUcfirst }} project name")
173+
.description("Pulling your {{ spec.title|caseUcfirst }} project name, services and auth settings")
173174
.action(actionRunner(pullProject));
174175

175176
pull

templates/cli/lib/commands/push.js.twig

Lines changed: 60 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,17 @@ const {
4141
teamsUpdateName,
4242
teamsCreate
4343
} = require("./teams");
44-
const { projectsUpdate } = require("./projects");
44+
const {
45+
projectsUpdate,
46+
projectsUpdateServiceStatus,
47+
projectsUpdateAuthStatus,
48+
projectsUpdateAuthDuration,
49+
projectsUpdateAuthLimit,
50+
projectsUpdateAuthSessionsLimit,
51+
projectsUpdateAuthPasswordDictionary,
52+
projectsUpdateAuthPasswordHistory,
53+
projectsUpdatePersonalDataCheck,
54+
} = require("./projects");
4555
const { checkDeployConditions } = require('../utils');
4656

4757
const STEP_SIZE = 100; // Resources
@@ -258,11 +268,56 @@ const pushResources = async ({ all, yes } = {}) => {
258268

259269
const pushProject = async () => {
260270
try {
271+
const projectId = localConfig.getProject().projectId;
272+
const projectName = localConfig.getProject().projectName;
273+
274+
log(`Updating project ${projectName} ( ${projectId} )`);
275+
261276
await projectsUpdate({
262-
projectId: localConfig.getProject().projectId,
263-
name: localConfig.getProject().projectName,
277+
projectId,
278+
name: projectName,
264279
parseOutput: false
265-
})
280+
});
281+
282+
const settings = localConfig.getProject().projectSettings;
283+
284+
if (settings.services) {
285+
log('Updating service statuses');
286+
for (let [service, status] of Object.entries(settings.services)) {
287+
await projectsUpdateServiceStatus({
288+
projectId,
289+
service,
290+
status,
291+
parseOutput: false
292+
});
293+
}
294+
}
295+
296+
if (settings.auth) {
297+
if (settings.auth.security) {
298+
log('Updating auth security settings');
299+
await projectsUpdateAuthDuration({ projectId, duration: settings.auth.security.duration, parseOutput: false });
300+
await projectsUpdateAuthLimit({ projectId, limit: settings.auth.security.limit, parseOutput: false });
301+
await projectsUpdateAuthSessionsLimit({ projectId, limit: settings.auth.security.sessionsLimit, parseOutput: false });
302+
await projectsUpdateAuthPasswordDictionary({ projectId, enabled: settings.auth.security.passwordDictionary, parseOutput: false });
303+
await projectsUpdateAuthPasswordHistory({ projectId, limit: settings.auth.security.passwordHistory, parseOutput: false });
304+
await projectsUpdatePersonalDataCheck({ projectId, enabled: settings.auth.security.personalDataCheck, parseOutput: false });
305+
}
306+
307+
if (settings.auth.methods) {
308+
log('Updating auth login methods');
309+
310+
for (let [method, status] of Object.entries(settings.auth.methods)) {
311+
await projectsUpdateAuthStatus({
312+
projectId,
313+
method,
314+
status,
315+
parseOutput: false
316+
});
317+
}
318+
}
319+
}
320+
266321
success();
267322
} catch (e) {
268323
throw e;
@@ -1131,7 +1186,7 @@ push
11311186

11321187
push
11331188
.command("project")
1134-
.description("Push project name.")
1189+
.description("Push project name, services and auth settings")
11351190
.action(actionRunner(pushProject));
11361191

11371192
push

templates/cli/lib/config.js.twig

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -329,13 +329,53 @@ class Local extends Config {
329329
return {
330330
projectId: this.get("projectId"),
331331
projectName: this.get("projectName"),
332+
projectSettings: this.get('projectSettings')
332333
};
333334
}
334335

335-
setProject(projectId, projectName) {
336+
setProject(projectId, projectName, projectSettings = {}) {
336337
this.set("projectId", projectId);
337338
this.set("projectName", projectName);
339+
340+
const settings = {
341+
services: {
342+
account: projectSettings.serviceStatusForAccount,
343+
avatars: projectSettings.serviceStatusForAvatars,
344+
databases: projectSettings.serviceStatusForDatabases,
345+
locale: projectSettings.serviceStatusForLocale,
346+
health: projectSettings.serviceStatusForHealth,
347+
storage: projectSettings.serviceStatusForStorage,
348+
teams: projectSettings.serviceStatusForTeams,
349+
users: projectSettings.serviceStatusForUsers,
350+
functions: projectSettings.serviceStatusForFunctions,
351+
graphql: projectSettings.serviceStatusForGraphql,
352+
messaging: projectSettings.serviceStatusForMessaging,
353+
354+
},
355+
auth: {
356+
methods: {
357+
jwt: projectSettings.authJWT,
358+
phone: projectSettings.authPhone,
359+
invites: projectSettings.authInvites,
360+
anonymous: projectSettings.authAnonymous,
361+
"email-otp": projectSettings.authEmailOtp,
362+
"magic-url": projectSettings.authUsersAuthMagicURL,
363+
"email-password": projectSettings.authEmailPassword
364+
},
365+
security: {
366+
duration: projectSettings.authDuration,
367+
limit: projectSettings.authLimit,
368+
sessionsLimit: projectSettings.authSessionsLimit,
369+
passwordHistory: projectSettings.authPasswordHistory,
370+
passwordDictionary: projectSettings.authPasswordDictionary,
371+
personalDataCheck: projectSettings.authPersonalDataCheck
372+
}
373+
}
374+
};
375+
376+
this.set('projectSettings', settings)
338377
}
378+
339379
}
340380

341381
class Global extends Config {

0 commit comments

Comments
 (0)