@@ -11,7 +11,7 @@ const { databasesGet, databasesListCollections, databasesList } = require("./dat
11
11
const { storageListBuckets } = require("./storage");
12
12
const { localConfig } = require("../config");
13
13
const { paginate } = require("../paginate");
14
- const { questionsPullCollection, questionsPullFunctions, questionsPullResources } = require("../questions");
14
+ const { questionsPullCollection, questionsPullFunctions, questionsPullFunctionsCode, questionsPullResources } = require("../questions");
15
15
const { cliConfig, success, log, warn, actionRunner, commandDescriptions } = require("../parser");
16
16
17
17
const pullResources = async () => {
@@ -56,7 +56,7 @@ const pullSettings = async () => {
56
56
}
57
57
}
58
58
59
- const pullFunctions = async () => {
59
+ const pullFunctions = async ({ code } ) => {
60
60
log("Fetching functions ...");
61
61
let total = 0;
62
62
@@ -74,6 +74,8 @@ const pullFunctions = async () => {
74
74
? (await paginate(functionsList, { parseOutput: false }, 100, 'functions')).functions
75
75
: (await inquirer.prompt(questionsPullFunctions)).functions;
76
76
77
+ let allowCodePull = cliConfig.force === true ? true : null;
78
+
77
79
for (let func of functions) {
78
80
total++;
79
81
log(`Pulling function ${chalk.bold(func['name'])} ...`);
@@ -88,26 +90,38 @@ const pullFunctions = async () => {
88
90
if (!fs.existsSync(func['path'])) {
89
91
fs.mkdirSync(func['path'], { recursive: true });
90
92
}
91
-
92
- if(func['deployment']) {
93
- const compressedFileName = `${func['$id']}-${+new Date()}.tar.gz`
94
- await functionsDownloadDeployment({
95
- functionId: func['$id'],
96
- deploymentId: func['deployment'],
97
- destination: compressedFileName,
98
- overrideForCli: true,
99
- parseOutput: false
100
- });
101
-
102
- tar.extract({
103
- sync: true,
104
- cwd: func['path'],
105
- file: compressedFileName,
106
- strict: false,
107
- });
108
-
109
- fs.rmSync(compressedFileName);
110
- }
93
+
94
+ if(code === false) {
95
+ warn("Source code download skipped.");
96
+ } else if(!func['deployment']) {
97
+ warn("Source code download skipped because function doesn't have active deployment.");
98
+ } else {
99
+ if(allowCodePull === null) {
100
+ const codeAnswer = await inquirer.prompt(questionsPullFunctionsCode);
101
+ allowCodePull = codeAnswer.override;
102
+ }
103
+
104
+ if(allowCodePull) {
105
+ log(`Pulling active deployment's code ...`);
106
+
107
+ const compressedFileName = `${func['$id']}-${+new Date()}.tar.gz`
108
+ await functionsDownloadDeployment({
109
+ functionId: func['$id'],
110
+ deploymentId: func['deployment'],
111
+ destination: compressedFileName,
112
+ overrideForCli: true,
113
+ parseOutput: false
114
+ });
115
+
116
+ tar.extract({
117
+ sync: true,
118
+ cwd: func['path'],
119
+ file: compressedFileName,
120
+ strict: false,
121
+ });
122
+
123
+ fs.rmSync(compressedFileName);
124
+ }
111
125
}
112
126
113
127
success(`Successfully pulled ${chalk.bold(total)} functions.`);
261
275
.command("function")
262
276
.alias("functions")
263
277
.description("Pulling your {{ spec .title | caseUcfirst }} cloud function")
278
+ .option(`--no-code`, `Don't pull the function's code`)
264
279
.action(actionRunner(pullFunctions))
265
280
266
281
pull
0 commit comments