@@ -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'])} ...`);
@@ -90,26 +92,38 @@ const pullFunctions = async () => {
90
92
if (!fs.existsSync(func['path'])) {
91
93
fs.mkdirSync(func['path'], { recursive: true });
92
94
}
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
+ }
113
127
}
114
128
115
129
success(`Successfully pulled ${chalk.bold(total)} functions.`);
263
277
.command("function")
264
278
.alias("functions")
265
279
.description("Pulling your {{ spec .title | caseUcfirst }} cloud function")
280
+ .option("--no-code", "Don't pull the function's code")
266
281
.action(actionRunner(pullFunctions))
267
282
268
283
pull
0 commit comments