appwrite-cli 13.1.0-rc.2 → 13.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (201) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +2 -2
  3. package/dist/bundle-win-arm64.mjs +378 -221
  4. package/dist/cli.cjs +146341 -0
  5. package/dist/index.js +110592 -10
  6. package/dist/lib/commands/generate.d.ts +3 -0
  7. package/dist/lib/commands/generate.d.ts.map +1 -1
  8. package/dist/lib/commands/generators/base.d.ts.map +1 -1
  9. package/dist/lib/commands/generators/typescript/databases.d.ts +4 -0
  10. package/dist/lib/commands/generators/typescript/databases.d.ts.map +1 -1
  11. package/dist/lib/commands/generic.d.ts.map +1 -1
  12. package/dist/lib/commands/init.d.ts.map +1 -1
  13. package/dist/lib/commands/pull.d.ts.map +1 -1
  14. package/dist/lib/commands/push.d.ts.map +1 -1
  15. package/dist/lib/commands/types.d.ts.map +1 -1
  16. package/dist/lib/constants.d.ts +1 -1
  17. package/dist/lib/constants.d.ts.map +1 -1
  18. package/dist/lib/parser.d.ts.map +1 -1
  19. package/dist/lib/shared/typescript-type-utils.d.ts +6 -18
  20. package/dist/lib/shared/typescript-type-utils.d.ts.map +1 -1
  21. package/dist/lib/type-generation/languages/csharp.d.ts.map +1 -1
  22. package/dist/lib/type-generation/languages/dart.d.ts +2 -1
  23. package/dist/lib/type-generation/languages/dart.d.ts.map +1 -1
  24. package/dist/lib/type-generation/languages/java.d.ts.map +1 -1
  25. package/dist/lib/type-generation/languages/javascript.d.ts.map +1 -1
  26. package/dist/lib/type-generation/languages/kotlin.d.ts.map +1 -1
  27. package/dist/lib/type-generation/languages/language.d.ts +15 -15
  28. package/dist/lib/type-generation/languages/language.d.ts.map +1 -1
  29. package/dist/lib/type-generation/languages/php.d.ts.map +1 -1
  30. package/dist/lib/type-generation/languages/swift.d.ts.map +1 -1
  31. package/dist/lib/type-generation/languages/typescript.d.ts +2 -1
  32. package/dist/lib/type-generation/languages/typescript.d.ts.map +1 -1
  33. package/docs/examples/health/get-queue-audits.md +1 -0
  34. package/install.ps1 +2 -2
  35. package/install.sh +1 -1
  36. package/lib/commands/generate.ts +52 -13
  37. package/lib/commands/generators/base.ts +4 -0
  38. package/lib/commands/generators/typescript/databases.ts +116 -27
  39. package/lib/commands/generators/typescript/templates/constants.ts.hbs +1 -1
  40. package/lib/commands/generators/typescript/templates/databases.ts.hbs +110 -37
  41. package/lib/commands/generators/typescript/templates/types.ts.hbs +24 -1
  42. package/lib/commands/generic.ts +38 -4
  43. package/lib/commands/init.ts +28 -41
  44. package/lib/commands/pull.ts +12 -4
  45. package/lib/commands/push.ts +15 -4
  46. package/lib/commands/services/health.ts +11 -0
  47. package/lib/commands/types.ts +8 -2
  48. package/lib/constants.ts +1 -1
  49. package/lib/parser.ts +1 -0
  50. package/lib/shared/typescript-type-utils.ts +16 -55
  51. package/lib/type-generation/languages/csharp.ts +4 -9
  52. package/lib/type-generation/languages/dart.ts +72 -31
  53. package/lib/type-generation/languages/java.ts +5 -9
  54. package/lib/type-generation/languages/javascript.ts +3 -10
  55. package/lib/type-generation/languages/kotlin.ts +5 -9
  56. package/lib/type-generation/languages/language.ts +56 -16
  57. package/lib/type-generation/languages/php.ts +5 -9
  58. package/lib/type-generation/languages/swift.ts +5 -13
  59. package/lib/type-generation/languages/typescript.ts +45 -8
  60. package/package.json +7 -4
  61. package/scoop/appwrite.config.json +3 -3
  62. package/dist/cli.js +0 -147
  63. package/dist/cli.js.map +0 -1
  64. package/dist/index.js.map +0 -1
  65. package/dist/lib/client.js +0 -238
  66. package/dist/lib/client.js.map +0 -1
  67. package/dist/lib/commands/config-validations.js +0 -130
  68. package/dist/lib/commands/config-validations.js.map +0 -1
  69. package/dist/lib/commands/config.js +0 -405
  70. package/dist/lib/commands/config.js.map +0 -1
  71. package/dist/lib/commands/errors.js +0 -72
  72. package/dist/lib/commands/errors.js.map +0 -1
  73. package/dist/lib/commands/generate.js +0 -102
  74. package/dist/lib/commands/generate.js.map +0 -1
  75. package/dist/lib/commands/generators/base.js +0 -27
  76. package/dist/lib/commands/generators/base.js.map +0 -1
  77. package/dist/lib/commands/generators/index.js +0 -55
  78. package/dist/lib/commands/generators/index.js.map +0 -1
  79. package/dist/lib/commands/generators/language-detector.js +0 -127
  80. package/dist/lib/commands/generators/language-detector.js.map +0 -1
  81. package/dist/lib/commands/generators/typescript/databases.js +0 -265
  82. package/dist/lib/commands/generators/typescript/databases.js.map +0 -1
  83. package/dist/lib/commands/generic.js +0 -292
  84. package/dist/lib/commands/generic.js.map +0 -1
  85. package/dist/lib/commands/init.js +0 -527
  86. package/dist/lib/commands/init.js.map +0 -1
  87. package/dist/lib/commands/pull.js +0 -658
  88. package/dist/lib/commands/pull.js.map +0 -1
  89. package/dist/lib/commands/push.js +0 -1855
  90. package/dist/lib/commands/push.js.map +0 -1
  91. package/dist/lib/commands/run.js +0 -289
  92. package/dist/lib/commands/run.js.map +0 -1
  93. package/dist/lib/commands/schema.js +0 -86
  94. package/dist/lib/commands/schema.js.map +0 -1
  95. package/dist/lib/commands/services/account.js +0 -328
  96. package/dist/lib/commands/services/account.js.map +0 -1
  97. package/dist/lib/commands/services/console.js +0 -28
  98. package/dist/lib/commands/services/console.js.map +0 -1
  99. package/dist/lib/commands/services/databases.js +0 -620
  100. package/dist/lib/commands/services/databases.js.map +0 -1
  101. package/dist/lib/commands/services/functions.js +0 -266
  102. package/dist/lib/commands/services/functions.js.map +0 -1
  103. package/dist/lib/commands/services/graphql.js +0 -28
  104. package/dist/lib/commands/services/graphql.js.map +0 -1
  105. package/dist/lib/commands/services/health.js +0 -123
  106. package/dist/lib/commands/services/health.js.map +0 -1
  107. package/dist/lib/commands/services/locale.js +0 -52
  108. package/dist/lib/commands/services/locale.js.map +0 -1
  109. package/dist/lib/commands/services/messaging.js +0 -505
  110. package/dist/lib/commands/services/messaging.js.map +0 -1
  111. package/dist/lib/commands/services/migrations.js +0 -135
  112. package/dist/lib/commands/services/migrations.js.map +0 -1
  113. package/dist/lib/commands/services/project.js +0 -54
  114. package/dist/lib/commands/services/project.js.map +0 -1
  115. package/dist/lib/commands/services/projects.js +0 -421
  116. package/dist/lib/commands/services/projects.js.map +0 -1
  117. package/dist/lib/commands/services/proxy.js +0 -68
  118. package/dist/lib/commands/services/proxy.js.map +0 -1
  119. package/dist/lib/commands/services/sites.js +0 -250
  120. package/dist/lib/commands/services/sites.js.map +0 -1
  121. package/dist/lib/commands/services/storage.js +0 -175
  122. package/dist/lib/commands/services/storage.js.map +0 -1
  123. package/dist/lib/commands/services/tables-db.js +0 -613
  124. package/dist/lib/commands/services/tables-db.js.map +0 -1
  125. package/dist/lib/commands/services/teams.js +0 -123
  126. package/dist/lib/commands/services/teams.js.map +0 -1
  127. package/dist/lib/commands/services/tokens.js +0 -49
  128. package/dist/lib/commands/services/tokens.js.map +0 -1
  129. package/dist/lib/commands/services/users.js +0 -312
  130. package/dist/lib/commands/services/users.js.map +0 -1
  131. package/dist/lib/commands/services/vcs.js +0 -87
  132. package/dist/lib/commands/services/vcs.js.map +0 -1
  133. package/dist/lib/commands/types.js +0 -151
  134. package/dist/lib/commands/types.js.map +0 -1
  135. package/dist/lib/commands/update.js +0 -202
  136. package/dist/lib/commands/update.js.map +0 -1
  137. package/dist/lib/commands/utils/attributes.js +0 -538
  138. package/dist/lib/commands/utils/attributes.js.map +0 -1
  139. package/dist/lib/commands/utils/change-approval.js +0 -129
  140. package/dist/lib/commands/utils/change-approval.js.map +0 -1
  141. package/dist/lib/commands/utils/database-sync.js +0 -136
  142. package/dist/lib/commands/utils/database-sync.js.map +0 -1
  143. package/dist/lib/commands/utils/deployment.js +0 -109
  144. package/dist/lib/commands/utils/deployment.js.map +0 -1
  145. package/dist/lib/commands/utils/error-formatter.js +0 -333
  146. package/dist/lib/commands/utils/error-formatter.js.map +0 -1
  147. package/dist/lib/commands/utils/pools.js +0 -164
  148. package/dist/lib/commands/utils/pools.js.map +0 -1
  149. package/dist/lib/config.js +0 -665
  150. package/dist/lib/config.js.map +0 -1
  151. package/dist/lib/constants.js +0 -19
  152. package/dist/lib/constants.js.map +0 -1
  153. package/dist/lib/emulation/docker.js +0 -237
  154. package/dist/lib/emulation/docker.js.map +0 -1
  155. package/dist/lib/emulation/utils.js +0 -165
  156. package/dist/lib/emulation/utils.js.map +0 -1
  157. package/dist/lib/id.js +0 -27
  158. package/dist/lib/id.js.map +0 -1
  159. package/dist/lib/json.js +0 -25
  160. package/dist/lib/json.js.map +0 -1
  161. package/dist/lib/paginate.js +0 -43
  162. package/dist/lib/paginate.js.map +0 -1
  163. package/dist/lib/parser.js +0 -226
  164. package/dist/lib/parser.js.map +0 -1
  165. package/dist/lib/questions.js +0 -1005
  166. package/dist/lib/questions.js.map +0 -1
  167. package/dist/lib/sdks.js +0 -60
  168. package/dist/lib/sdks.js.map +0 -1
  169. package/dist/lib/services.js +0 -47
  170. package/dist/lib/services.js.map +0 -1
  171. package/dist/lib/shared/typescript-type-utils.js +0 -155
  172. package/dist/lib/shared/typescript-type-utils.js.map +0 -1
  173. package/dist/lib/spinner.js +0 -91
  174. package/dist/lib/spinner.js.map +0 -1
  175. package/dist/lib/type-generation/attribute.js +0 -16
  176. package/dist/lib/type-generation/attribute.js.map +0 -1
  177. package/dist/lib/type-generation/languages/csharp.js +0 -180
  178. package/dist/lib/type-generation/languages/csharp.js.map +0 -1
  179. package/dist/lib/type-generation/languages/dart.js +0 -197
  180. package/dist/lib/type-generation/languages/dart.js.map +0 -1
  181. package/dist/lib/type-generation/languages/java.js +0 -140
  182. package/dist/lib/type-generation/languages/java.js.map +0 -1
  183. package/dist/lib/type-generation/languages/javascript.js +0 -109
  184. package/dist/lib/type-generation/languages/javascript.js.map +0 -1
  185. package/dist/lib/type-generation/languages/kotlin.js +0 -95
  186. package/dist/lib/type-generation/languages/kotlin.js.map +0 -1
  187. package/dist/lib/type-generation/languages/language.js +0 -77
  188. package/dist/lib/type-generation/languages/language.js.map +0 -1
  189. package/dist/lib/type-generation/languages/php.js +0 -116
  190. package/dist/lib/type-generation/languages/php.js.map +0 -1
  191. package/dist/lib/type-generation/languages/swift.js +0 -179
  192. package/dist/lib/type-generation/languages/swift.js.map +0 -1
  193. package/dist/lib/type-generation/languages/typescript.js +0 -63
  194. package/dist/lib/type-generation/languages/typescript.js.map +0 -1
  195. package/dist/lib/types.js +0 -2
  196. package/dist/lib/types.js.map +0 -1
  197. package/dist/lib/utils.js +0 -166
  198. package/dist/lib/utils.js.map +0 -1
  199. package/dist/lib/validations.js +0 -16
  200. package/dist/lib/validations.js.map +0 -1
  201. package/dist/package.json +0 -70
@@ -1,527 +0,0 @@
1
- import fs from "fs";
2
- import path from "path";
3
- import childProcess from "child_process";
4
- import { Command } from "commander";
5
- import inquirer from "inquirer";
6
- import { getProjectsService, getSitesService } from "../services.js";
7
- import { pullResources } from "./pull.js";
8
- import ID from "../id.js";
9
- import { localConfig, globalConfig } from "../config.js";
10
- import { questionsCreateFunction, questionsCreateFunctionSelectTemplate, questionsCreateSite, questionsCreateBucket, questionsCreateMessagingTopic, questionsCreateCollection, questionsCreateTable, questionsInitProject, questionsInitProjectAutopull, questionsInitResources, questionsCreateTeam, } from "../questions.js";
11
- import { cliConfig, success, log, hint, error, actionRunner, commandDescriptions, } from "../parser.js";
12
- import { sdkForConsole } from "../sdks.js";
13
- import { isCloud } from "../utils.js";
14
- import { Account } from "@appwrite.io/console";
15
- import { DEFAULT_ENDPOINT, EXECUTABLE_NAME } from "../constants.js";
16
- const initResources = async () => {
17
- const actions = {
18
- function: initFunction,
19
- site: initSite,
20
- table: initTable,
21
- bucket: initBucket,
22
- team: initTeam,
23
- message: initTopic,
24
- collection: initCollection,
25
- };
26
- const answers = await inquirer.prompt([questionsInitResources[0]]);
27
- const action = actions[answers.resource];
28
- if (action !== undefined) {
29
- await action({ returnOnZero: true });
30
- }
31
- };
32
- const initProject = async ({ organizationId, projectId, projectName, } = {}) => {
33
- let response = {};
34
- try {
35
- if (globalConfig.getEndpoint() === "" || globalConfig.getCookie() === "") {
36
- throw new Error(`Missing endpoint or cookie configuration. Please run '${EXECUTABLE_NAME} login' first.`);
37
- }
38
- const client = await sdkForConsole();
39
- const accountClient = new Account(client);
40
- await accountClient.get();
41
- }
42
- catch (e) {
43
- error(`Error Session not found. Please run '${EXECUTABLE_NAME} login' to create a session`);
44
- process.exit(1);
45
- }
46
- let answers = {};
47
- if (!organizationId && !projectId && !projectName) {
48
- answers = await inquirer.prompt(questionsInitProject);
49
- if (answers.override === false) {
50
- process.exit(1);
51
- }
52
- }
53
- else {
54
- answers.start = "existing";
55
- answers.project = {};
56
- answers.organization = {};
57
- answers.organization =
58
- organizationId ??
59
- (await inquirer.prompt([questionsInitProject[2]])).organization;
60
- answers.project.name =
61
- projectName ?? (await inquirer.prompt([questionsInitProject[3]])).project;
62
- answers.project =
63
- projectId ?? (await inquirer.prompt([questionsInitProject[4]])).id;
64
- try {
65
- const projectsService = await getProjectsService();
66
- await projectsService.get(projectId);
67
- }
68
- catch (e) {
69
- if (e.code === 404) {
70
- answers.start = "new";
71
- answers.id = answers.project;
72
- answers.project = answers.project.name;
73
- }
74
- else {
75
- throw e;
76
- }
77
- }
78
- }
79
- localConfig.clear(); // Clear the config to avoid any conflicts
80
- const url = new URL(DEFAULT_ENDPOINT);
81
- if (answers.start === "new") {
82
- const projectsService = await getProjectsService();
83
- response = await projectsService.create(answers.id, answers.project, answers.organization, answers.region);
84
- localConfig.setProject(response["$id"]);
85
- if (answers.region) {
86
- localConfig.setEndpoint(`https://${answers.region}.${url.host}${url.pathname}`);
87
- }
88
- }
89
- else {
90
- localConfig.setProject(answers.project["$id"]);
91
- if (isCloud()) {
92
- localConfig.setEndpoint(`https://${answers.project["region"]}.${url.host}${url.pathname}`);
93
- }
94
- }
95
- success(`Project successfully ${answers.start === "existing" ? "linked" : "created"}. Details are now stored in appwrite.config.json file.`);
96
- if (answers.start === "existing") {
97
- answers = await inquirer.prompt(questionsInitProjectAutopull);
98
- if (answers.autopull) {
99
- cliConfig.all = true;
100
- cliConfig.force = true;
101
- await pullResources({
102
- skipDeprecated: true,
103
- });
104
- }
105
- else {
106
- log(`You can run '${EXECUTABLE_NAME} pull all' to synchronize all of your existing resources.`);
107
- }
108
- }
109
- hint(`Next you can use '${EXECUTABLE_NAME} init' to create resources in your project, or use '${EXECUTABLE_NAME} pull' and '${EXECUTABLE_NAME} push' to synchronize your project.`);
110
- };
111
- const initBucket = async () => {
112
- const answers = await inquirer.prompt(questionsCreateBucket);
113
- localConfig.addBucket({
114
- $id: answers.id === "unique()" ? ID.unique() : answers.id,
115
- name: answers.bucket,
116
- fileSecurity: answers.fileSecurity.toLowerCase() === "yes",
117
- enabled: true,
118
- });
119
- success("Initialing bucket");
120
- log(`Next you can use '${EXECUTABLE_NAME} push bucket' to deploy the changes.`);
121
- };
122
- const initTeam = async () => {
123
- const answers = await inquirer.prompt(questionsCreateTeam);
124
- localConfig.addTeam({
125
- $id: answers.id === "unique()" ? ID.unique() : answers.id,
126
- name: answers.team,
127
- });
128
- success("Initialing team");
129
- log(`Next you can use '${EXECUTABLE_NAME} push team' to deploy the changes.`);
130
- };
131
- const initTable = async () => {
132
- const answers = await inquirer.prompt(questionsCreateTable);
133
- const newDatabase = (answers.method ?? "").toLowerCase() !== "existing";
134
- if (!newDatabase) {
135
- answers.databaseId = answers.database;
136
- answers.databaseName = localConfig.getTablesDB(answers.database).name;
137
- }
138
- const databaseId = answers.databaseId === "unique()" ? ID.unique() : answers.databaseId;
139
- if (newDatabase || !localConfig.getTablesDB(answers.databaseId)) {
140
- localConfig.addTablesDB({
141
- $id: databaseId,
142
- name: answers.databaseName,
143
- enabled: true,
144
- });
145
- }
146
- localConfig.addTable({
147
- $id: answers.id === "unique()" ? ID.unique() : answers.id,
148
- $permissions: [],
149
- databaseId: databaseId,
150
- name: answers.table,
151
- enabled: true,
152
- rowSecurity: answers.rowSecurity.toLowerCase() === "yes",
153
- columns: [],
154
- indexes: [],
155
- });
156
- success("Initialing table");
157
- log(`Next you can use '${EXECUTABLE_NAME} push table' to deploy the changes.`);
158
- };
159
- const initCollection = async () => {
160
- const answers = await inquirer.prompt(questionsCreateCollection);
161
- const newDatabase = (answers.method ?? "").toLowerCase() !== "existing";
162
- if (!newDatabase) {
163
- answers.databaseId = answers.database;
164
- answers.databaseName = localConfig.getDatabase(answers.database).name;
165
- }
166
- const databaseId = answers.databaseId === "unique()" ? ID.unique() : answers.databaseId;
167
- if (newDatabase || !localConfig.getDatabase(answers.databaseId)) {
168
- localConfig.addDatabase({
169
- $id: databaseId,
170
- name: answers.databaseName,
171
- enabled: true,
172
- });
173
- }
174
- localConfig.addCollection({
175
- $id: answers.id === "unique()" ? ID.unique() : answers.id,
176
- databaseId: databaseId,
177
- name: answers.collection,
178
- documentSecurity: answers.documentSecurity.toLowerCase() === "yes",
179
- attributes: [],
180
- indexes: [],
181
- enabled: true,
182
- });
183
- success("Initialing collection");
184
- log(`Next you can use '${EXECUTABLE_NAME} push collection' to deploy the changes.`);
185
- };
186
- const initTopic = async () => {
187
- const answers = await inquirer.prompt(questionsCreateMessagingTopic);
188
- localConfig.addMessagingTopic({
189
- $id: answers.id === "unique()" ? ID.unique() : answers.id,
190
- name: answers.topic,
191
- });
192
- success("Initialing topic");
193
- log(`Next you can use '${EXECUTABLE_NAME} push topic' to deploy the changes.`);
194
- };
195
- const initFunction = async () => {
196
- process.chdir(localConfig.configDirectoryPath);
197
- // TODO: Add CI/CD support (ID, name, runtime)
198
- const answers = await inquirer.prompt(questionsCreateFunction);
199
- const functionFolder = path.join(process.cwd(), "functions");
200
- if (!fs.existsSync(functionFolder)) {
201
- fs.mkdirSync(functionFolder, {
202
- recursive: true,
203
- });
204
- }
205
- const functionId = answers.id === "unique()" ? ID.unique() : answers.id;
206
- const functionName = answers.name;
207
- const functionDir = path.join(functionFolder, functionName);
208
- const templatesDir = path.join(functionFolder, `${functionId}-templates`);
209
- const runtimeDir = path.join(templatesDir, answers.runtime.name);
210
- if (fs.existsSync(functionDir)) {
211
- throw new Error(`( ${functionName} ) already exists in the current directory. Please choose another name.`);
212
- }
213
- if (!answers.runtime.entrypoint) {
214
- log(`Entrypoint for this runtime not found. You will be asked to configure entrypoint when you first push the function.`);
215
- }
216
- if (!answers.runtime.commands) {
217
- log(`Installation command for this runtime not found. You will be asked to configure the install command when you first push the function.`);
218
- }
219
- fs.mkdirSync(functionDir, { mode: 0o777 });
220
- fs.mkdirSync(templatesDir, { mode: 0o777 });
221
- const repo = "https://github.com/appwrite/templates";
222
- const api = `https://api.github.com/repos/appwrite/templates/contents/${answers.runtime.name}`;
223
- let selected = { template: "starter" };
224
- const sparse = (selected
225
- ? `${answers.runtime.name}/${selected.template}`
226
- : answers.runtime.name).toLowerCase();
227
- let gitInitCommands = `git clone --single-branch --depth 1 --sparse ${repo} .`; // depth prevents fetching older commits reducing the amount fetched
228
- let gitPullCommands = `git sparse-checkout add ${sparse}`;
229
- /* Force use CMD as powershell does not support && */
230
- if (process.platform === "win32") {
231
- gitInitCommands = 'cmd /c "' + gitInitCommands + '"';
232
- gitPullCommands = 'cmd /c "' + gitPullCommands + '"';
233
- }
234
- /* Execute the child process but do not print any std output */
235
- try {
236
- childProcess.execSync(gitInitCommands, {
237
- stdio: "pipe",
238
- cwd: templatesDir,
239
- });
240
- childProcess.execSync(gitPullCommands, {
241
- stdio: "pipe",
242
- cwd: templatesDir,
243
- });
244
- }
245
- catch (err) {
246
- /* Specialised errors with recommended actions to take */
247
- if (err.message.includes("error: unknown option")) {
248
- throw new Error(`${err.message} \n\nSuggestion: Try updating your git to the latest version, then trying to run this command again.`);
249
- }
250
- else if (err.message.includes("is not recognized as an internal or external command,") ||
251
- err.message.includes("command not found")) {
252
- throw new Error(`${err.message} \n\nSuggestion: It appears that git is not installed, try installing git then trying to run this command again.`);
253
- }
254
- else {
255
- throw err;
256
- }
257
- }
258
- fs.rmSync(path.join(templatesDir, ".git"), { recursive: true });
259
- if (!selected) {
260
- const templates = [];
261
- templates.push(...fs
262
- .readdirSync(runtimeDir, { withFileTypes: true })
263
- .filter((item) => item.isDirectory() && item.name !== "starter")
264
- .map((dirent) => dirent.name));
265
- selected = { template: "starter" };
266
- if (templates.length > 1) {
267
- selected = await inquirer.prompt(questionsCreateFunctionSelectTemplate(templates));
268
- }
269
- }
270
- const copyRecursiveSync = (src, dest) => {
271
- let exists = fs.existsSync(src);
272
- let stats = exists && fs.statSync(src);
273
- let isDirectory = exists && stats && stats.isDirectory();
274
- if (isDirectory) {
275
- if (!fs.existsSync(dest)) {
276
- fs.mkdirSync(dest);
277
- }
278
- fs.readdirSync(src).forEach(function (childItemName) {
279
- copyRecursiveSync(path.join(src, childItemName), path.join(dest, childItemName));
280
- });
281
- }
282
- else {
283
- fs.copyFileSync(src, dest);
284
- }
285
- };
286
- copyRecursiveSync(path.join(runtimeDir, selected.template), functionDir);
287
- fs.rmSync(templatesDir, { recursive: true, force: true });
288
- const readmePath = path.join(process.cwd(), "functions", functionName, "README.md");
289
- const readmeFile = fs.readFileSync(readmePath).toString();
290
- const newReadmeFile = readmeFile.split("\n");
291
- newReadmeFile[0] = `# ${answers.name}`;
292
- newReadmeFile.splice(1, 2);
293
- fs.writeFileSync(readmePath, newReadmeFile.join("\n"));
294
- let data = {
295
- $id: functionId,
296
- name: answers.name,
297
- runtime: answers.runtime.id,
298
- specification: answers.specification,
299
- execute: ["any"],
300
- events: [],
301
- scopes: ["users.read"],
302
- schedule: "",
303
- timeout: 15,
304
- enabled: true,
305
- logging: true,
306
- entrypoint: answers.runtime.entrypoint || "",
307
- commands: answers.runtime.commands || "",
308
- ignore: answers.runtime.ignore || null,
309
- path: `functions/${functionName}`,
310
- };
311
- localConfig.addFunction(data);
312
- success("Initialing function");
313
- log(`Next you can use '${EXECUTABLE_NAME} run function' to develop a function locally. To deploy the function, use '${EXECUTABLE_NAME} push function'`);
314
- };
315
- const initSite = async () => {
316
- process.chdir(localConfig.configDirectoryPath);
317
- const answers = await inquirer.prompt(questionsCreateSite);
318
- const siteFolder = path.join(process.cwd(), "sites");
319
- if (!fs.existsSync(siteFolder)) {
320
- fs.mkdirSync(siteFolder, {
321
- recursive: true,
322
- });
323
- }
324
- const siteId = answers.id === "unique()" ? ID.unique() : answers.id;
325
- const siteName = answers.name;
326
- const siteDir = path.join(siteFolder, siteName);
327
- const templatesDir = path.join(siteFolder, `${siteId}-templates`);
328
- if (fs.existsSync(siteDir)) {
329
- throw new Error(`( ${siteName} ) already exists in the current directory. Please choose another name.`);
330
- }
331
- let templateDetails;
332
- try {
333
- const sitesService = await getSitesService();
334
- const response = await sitesService.listTemplates([answers.framework.key], ["starter"], 1);
335
- if (response.total == 0) {
336
- throw new Error(`No starter template found for framework ${answers.framework.key}`);
337
- }
338
- templateDetails = response.templates[0];
339
- }
340
- catch (err) {
341
- throw new Error(`Failed to fetch template for framework ${answers.framework.key}: ${err.message}`);
342
- }
343
- fs.mkdirSync(siteDir, { mode: 0o777 });
344
- fs.mkdirSync(templatesDir, { mode: 0o777 });
345
- const repo = `https://github.com/${templateDetails.providerOwner}/${templateDetails.providerRepositoryId}`;
346
- let selected = {
347
- template: templateDetails.frameworks[0].providerRootDirectory,
348
- };
349
- let gitCloneCommands = "";
350
- const sparse = selected.template.startsWith("./")
351
- ? selected.template.substring(2)
352
- : selected.template;
353
- log("Fetching site code ...");
354
- if (selected.template === "./") {
355
- gitCloneCommands = `
356
- mkdir -p .
357
- cd .
358
- git init
359
- git remote add origin ${repo}
360
- git config --global init.defaultBranch main
361
- git fetch --depth=1 origin refs/tags/$(git ls-remote --tags origin "${templateDetails.providerVersion}" | tail -n 1 | awk -F '/' '{print $3}')
362
- git checkout FETCH_HEAD
363
- `.trim();
364
- }
365
- else {
366
- gitCloneCommands = `
367
- mkdir -p .
368
- cd .
369
- git init
370
- git remote add origin ${repo}
371
- git config --global init.defaultBranch main
372
- git config core.sparseCheckout true
373
- echo "${sparse}" >> .git/info/sparse-checkout
374
- git config --add remote.origin.fetch '+refs/heads/*:refs/remotes/origin/*'
375
- git config remote.origin.tagopt --no-tags
376
- git fetch --depth=1 origin refs/tags/$(git ls-remote --tags origin "${templateDetails.providerVersion}" | tail -n 1 | awk -F '/' '{print $3}')
377
- git checkout FETCH_HEAD
378
- `.trim();
379
- }
380
- /* Force use CMD as powershell does not support && */
381
- if (process.platform === "win32") {
382
- gitCloneCommands = 'cmd /c "' + gitCloneCommands + '"';
383
- }
384
- /* Execute the child process but do not print any std output */
385
- try {
386
- childProcess.execSync(gitCloneCommands, {
387
- stdio: "pipe",
388
- cwd: templatesDir,
389
- });
390
- }
391
- catch (err) {
392
- /* Specialised errors with recommended actions to take */
393
- if (err.message.includes("error: unknown option")) {
394
- throw new Error(`${err.message} \n\nSuggestion: Try updating your git to the latest version, then trying to run this command again.`);
395
- }
396
- else if (err.message.includes("is not recognized as an internal or external command,") ||
397
- err.message.includes("command not found")) {
398
- throw new Error(`${err.message} \n\nSuggestion: It appears that git is not installed, try installing git then trying to run this command again.`);
399
- }
400
- else {
401
- throw err;
402
- }
403
- }
404
- fs.rmSync(path.join(templatesDir, ".git"), { recursive: true });
405
- const copyRecursiveSync = (src, dest) => {
406
- let exists = fs.existsSync(src);
407
- let stats = exists && fs.statSync(src);
408
- let isDirectory = exists && stats && stats.isDirectory();
409
- if (isDirectory) {
410
- if (!fs.existsSync(dest)) {
411
- fs.mkdirSync(dest);
412
- }
413
- fs.readdirSync(src).forEach(function (childItemName) {
414
- copyRecursiveSync(path.join(src, childItemName), path.join(dest, childItemName));
415
- });
416
- }
417
- else {
418
- fs.copyFileSync(src, dest);
419
- }
420
- };
421
- copyRecursiveSync(selected.template === "./"
422
- ? templatesDir
423
- : path.join(templatesDir, selected.template), siteDir);
424
- fs.rmSync(templatesDir, { recursive: true, force: true });
425
- const readmePath = path.join(process.cwd(), "sites", siteName, "README.md");
426
- const readmeFile = fs.readFileSync(readmePath).toString();
427
- const newReadmeFile = readmeFile.split("\n");
428
- newReadmeFile[0] = `# ${answers.name}`;
429
- newReadmeFile.splice(1, 2);
430
- fs.writeFileSync(readmePath, newReadmeFile.join("\n"));
431
- let vars = (templateDetails.variables ?? []).map((variable) => {
432
- let value = variable.value;
433
- const replacements = {
434
- "{apiEndpoint}": globalConfig.getEndpoint(),
435
- "{projectId}": localConfig.getProject().projectId,
436
- "{projectName}": localConfig.getProject().projectName,
437
- };
438
- for (const placeholder in replacements) {
439
- if (value?.includes(placeholder)) {
440
- value = value.replace(placeholder, replacements[placeholder]);
441
- }
442
- }
443
- return {
444
- key: variable.name,
445
- value: value,
446
- };
447
- });
448
- let data = {
449
- $id: siteId,
450
- name: answers.name,
451
- framework: answers.framework.key,
452
- adapter: templateDetails.frameworks[0].adapter || "",
453
- buildRuntime: templateDetails.frameworks[0].buildRuntime || "",
454
- installCommand: templateDetails.frameworks[0].installCommand || "",
455
- buildCommand: templateDetails.frameworks[0].buildCommand || "",
456
- outputDirectory: templateDetails.frameworks[0].outputDirectory || "",
457
- fallbackFile: templateDetails.frameworks[0].fallbackFile || "",
458
- specification: answers.specification,
459
- enabled: true,
460
- timeout: 30,
461
- logging: true,
462
- ignore: answers.framework.ignore || null,
463
- path: `sites/${siteName}`,
464
- vars: vars,
465
- };
466
- if (!data.buildRuntime) {
467
- log(`Build runtime for this framework not found. You will be asked to configure build runtime when you first push the site.`);
468
- }
469
- if (!data.installCommand) {
470
- log(`Installation command for this framework not found. You will be asked to configure the install command when you first push the site.`);
471
- }
472
- if (!data.buildCommand) {
473
- log(`Build command for this framework not found. You will be asked to configure the build command when you first push the site.`);
474
- }
475
- if (!data.outputDirectory) {
476
- log(`Output directory for this framework not found. You will be asked to configure the output directory when you first push the site.`);
477
- }
478
- localConfig.addSite(data);
479
- success("Initializing site");
480
- log(`Next you can use '${EXECUTABLE_NAME} push site' to deploy the changes.`);
481
- };
482
- export const init = new Command("init")
483
- .description(commandDescriptions["init"])
484
- .action(actionRunner(initResources));
485
- init
486
- .command("project")
487
- .description("Init a new Appwrite project")
488
- .option("--organization-id <organization-id>", "Appwrite organization ID")
489
- .option("--project-id <project-id>", "Appwrite project ID")
490
- .option("--project-name <project-name>", "Appwrite project ID")
491
- .action(actionRunner(initProject));
492
- init
493
- .command("function")
494
- .alias("functions")
495
- .description("Init a new Appwrite function")
496
- .action(actionRunner(initFunction));
497
- init
498
- .command("site")
499
- .alias("sites")
500
- .description("Init a new Appwrite site")
501
- .action(actionRunner(initSite));
502
- init
503
- .command("bucket")
504
- .alias("buckets")
505
- .description("Init a new Appwrite bucket")
506
- .action(actionRunner(initBucket));
507
- init
508
- .command("team")
509
- .alias("teams")
510
- .description("Init a new Appwrite team")
511
- .action(actionRunner(initTeam));
512
- init
513
- .command("collection")
514
- .alias("collections")
515
- .description("Init a new Appwrite collection")
516
- .action(actionRunner(initCollection));
517
- init
518
- .command("table")
519
- .alias("tables")
520
- .description("Init a new Appwrite table")
521
- .action(actionRunner(initTable));
522
- init
523
- .command("topic")
524
- .alias("topics")
525
- .description("Init a new Appwrite topic")
526
- .action(actionRunner(initTopic));
527
- //# sourceMappingURL=init.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../lib/commands/init.ts"],"names":[],"mappings":"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"}