1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 | const fs = require('fs');
|
14 | const chalk = require('chalk');
|
15 | const request = require('request-promise-native');
|
16 | const getReactorHeaders = require('./getReactorHeaders');
|
17 | const handleResponseError = require('./handleResponseError');
|
18 | const logVerboseHeader = require('./logVerboseHeader');
|
19 |
|
20 | module.exports = async(
|
21 | envConfig,
|
22 | accessToken,
|
23 | extensionPackageManifest,
|
24 | extensionPackageFromServer,
|
25 | zipPath,
|
26 | argv
|
27 | ) => {
|
28 | const shouldPost = !extensionPackageFromServer;
|
29 |
|
30 | if (extensionPackageFromServer) {
|
31 | console.log(`An existing development extension package with the name ` +
|
32 | `${chalk.bold(extensionPackageManifest.name)} was found on the server and will be updated. ` +
|
33 | `The extension package ID is ${chalk.bold(extensionPackageFromServer.id)}.`);
|
34 | } else {
|
35 | console.log(`No development extension package was found on the server with the ` +
|
36 | `name ${chalk.bold(extensionPackageManifest.name)}. A new extension package will be created.`);
|
37 | }
|
38 |
|
39 | if (argv.verbose) {
|
40 | logVerboseHeader('Uploading zip');
|
41 | }
|
42 |
|
43 | const options = {
|
44 | method: shouldPost ? 'POST' : 'PATCH',
|
45 | url: shouldPost ?
|
46 | envConfig.extensionPackages : `${envConfig.extensionPackages}/${extensionPackageFromServer.id}`,
|
47 | headers: getReactorHeaders(accessToken),
|
48 | formData: {
|
49 | package: fs.createReadStream(zipPath)
|
50 | },
|
51 | transform: JSON.parse
|
52 | };
|
53 |
|
54 | try {
|
55 | const body = await request(options);
|
56 | const extensionPackageId = body.data.id;
|
57 |
|
58 | if (shouldPost) {
|
59 | console.log(`The extension package has been assigned the ID ${chalk.bold(extensionPackageId)}.`);
|
60 | }
|
61 |
|
62 | return extensionPackageId;
|
63 | } catch (error) {
|
64 | handleResponseError(error, 'Error uploading extension package.');
|
65 | }
|
66 | };
|