Skip to content

Commit 52428dc

Browse files
Merge pull request #901 from appwrite/fix-pull-function-code
Fix: Pull function's code flow
2 parents c881dfb + 411f527 commit 52428dc

File tree

2 files changed

+46
-22
lines changed

2 files changed

+46
-22
lines changed

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

Lines changed: 37 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ const { databasesGet, databasesListCollections, databasesList } = require("./dat
1111
const { storageListBuckets } = require("./storage");
1212
const { localConfig } = require("../config");
1313
const { paginate } = require("../paginate");
14-
const { questionsPullCollection, questionsPullFunctions, questionsPullResources } = require("../questions");
14+
const { questionsPullCollection, questionsPullFunctions, questionsPullFunctionsCode, questionsPullResources } = require("../questions");
1515
const { cliConfig, success, log, warn, actionRunner, commandDescriptions } = require("../parser");
1616

1717
const pullResources = async () => {
@@ -56,7 +56,7 @@ const pullSettings = async () => {
5656
}
5757
}
5858

59-
const pullFunctions = async () => {
59+
const pullFunctions = async ({ code }) => {
6060
log("Fetching functions ...");
6161
let total = 0;
6262

@@ -74,6 +74,8 @@ const pullFunctions = async () => {
7474
? (await paginate(functionsList, { parseOutput: false }, 100, 'functions')).functions
7575
: (await inquirer.prompt(questionsPullFunctions)).functions;
7676

77+
let allowCodePull = cliConfig.force === true ? true : null;
78+
7779
for (let func of functions) {
7880
total++;
7981
log(`Pulling function ${chalk.bold(func['name'])} ...`);
@@ -90,26 +92,38 @@ const pullFunctions = async () => {
9092
if (!fs.existsSync(func['path'])) {
9193
fs.mkdirSync(func['path'], { recursive: true });
9294
}
93-
94-
if(func['deployment']) {
95-
const compressedFileName = `${func['$id']}-${+new Date()}.tar.gz`
96-
await functionsDownloadDeployment({
97-
functionId: func['$id'],
98-
deploymentId: func['deployment'],
99-
destination: compressedFileName,
100-
overrideForCli: true,
101-
parseOutput: false
102-
});
103-
104-
tar.extract({
105-
sync: true,
106-
cwd: func['path'],
107-
file: compressedFileName,
108-
strict: false,
109-
});
110-
111-
fs.rmSync(compressedFileName);
112-
}
95+
96+
if(code === false) {
97+
warn("Source code download skipped.");
98+
} else if(!func['deployment']) {
99+
warn("Source code download skipped because function doesn't have active deployment.");
100+
} else {
101+
if(allowCodePull === null) {
102+
const codeAnswer = await inquirer.prompt(questionsPullFunctionsCode);
103+
allowCodePull = codeAnswer.override;
104+
}
105+
106+
if(allowCodePull) {
107+
log("Pulling active deployment's code ...");
108+
109+
const compressedFileName = `${func['$id']}-${+new Date()}.tar.gz`
110+
await functionsDownloadDeployment({
111+
functionId: func['$id'],
112+
deploymentId: func['deployment'],
113+
destination: compressedFileName,
114+
overrideForCli: true,
115+
parseOutput: false
116+
});
117+
118+
tar.extract({
119+
sync: true,
120+
cwd: func['path'],
121+
file: compressedFileName,
122+
strict: false,
123+
});
124+
125+
fs.rmSync(compressedFileName);
126+
}
113127
}
114128

115129
success(`Successfully pulled ${chalk.bold(total)} functions.`);
@@ -263,6 +277,7 @@ pull
263277
.command("function")
264278
.alias("functions")
265279
.description("Pulling your {{ spec.title|caseUcfirst }} cloud function")
280+
.option("--no-code", "Don't pull the function's code")
266281
.action(actionRunner(pullFunctions))
267282

268283
pull

templates/cli/lib/questions.js.twig

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -258,6 +258,14 @@ const questionsPullFunctions = [
258258
}
259259
];
260260

261+
const questionsPullFunctionsCode = [
262+
{
263+
type: "confirm",
264+
name: "override",
265+
message: "Do you want to pull source code of active deployment?"
266+
},
267+
];
268+
261269
const questionsCreateFunction = [
262270
{
263271
type: "input",
@@ -841,6 +849,7 @@ module.exports = {
841849
questionsCreateCollection,
842850
questionsCreateMessagingTopic,
843851
questionsPullFunctions,
852+
questionsPullFunctionsCode,
844853
questionsLogin,
845854
questionsPullResources,
846855
questionsLogout,

0 commit comments

Comments
 (0)