|
1 | 1 | #!/usr/bin/env node
|
2 | 2 |
|
3 |
| -const request = require("request"); |
4 |
| -const unzipper = require("unzipper"); |
5 |
| -const mkdirp = require("mkdirp"); |
6 |
| -const path = require("path"); |
7 |
| -const fs = require("fs"); |
8 |
| -const rimraf = require("rimraf"); |
| 3 | +const request = require('request'); |
| 4 | +const unzipper = require('unzipper'); |
| 5 | +const mkdirp = require('mkdirp'); |
| 6 | +const path = require('path'); |
| 7 | +const fs = require('fs'); |
| 8 | +const rimraf = require('rimraf'); |
9 | 9 |
|
10 |
| -const downloadUrlPrefix = "https://github.com/protocolbuffers/protobuf/releases/download/v"; |
11 |
| -const protocVersion = "3.15.6"; |
| 10 | +const downloadUrlPrefix = |
| 11 | + 'https://github.com/protocolbuffers/protobuf/releases/download/v'; |
| 12 | +const protocVersion = '3.15.6'; |
12 | 13 | function makeDownloadFile(platformArch) {
|
13 |
| - return "protoc-" + protocVersion + "-" + platformArch + ".zip"; |
| 14 | + return 'protoc-' + protocVersion + '-' + platformArch + '.zip'; |
14 | 15 | }
|
15 | 16 | function determineDownloadFile() {
|
16 | 17 | switch (process.platform) {
|
17 |
| - case "linux": |
| 18 | + case 'linux': |
18 | 19 | switch (process.arch) {
|
19 |
| - case "arm64": |
20 |
| - return makeDownloadFile("linux-aarch_64"); |
21 |
| - case "ppc64": |
22 |
| - return makeDownloadFile("linux-ppcle_64"); |
23 |
| - case "x32": |
24 |
| - return makeDownloadFile("linux-x86_32"); |
25 |
| - case "x64": |
26 |
| - return makeDownloadFile("linux-x86_64"); |
| 20 | + case 'arm64': |
| 21 | + return makeDownloadFile('linux-aarch_64'); |
| 22 | + case 'ppc64': |
| 23 | + return makeDownloadFile('linux-ppcle_64'); |
| 24 | + case 'x32': |
| 25 | + return makeDownloadFile('linux-x86_32'); |
| 26 | + case 'x64': |
| 27 | + return makeDownloadFile('linux-x86_64'); |
27 | 28 | }
|
28 | 29 | break;
|
29 |
| - case "win32": |
| 30 | + case 'win32': |
30 | 31 | switch (process.arch) {
|
31 |
| - case "x32": |
32 |
| - return makeDownloadFile("win32"); |
33 |
| - case "x64": |
34 |
| - return makeDownloadFile("win64"); |
| 32 | + case 'x32': |
| 33 | + return makeDownloadFile('win32'); |
| 34 | + case 'x64': |
| 35 | + return makeDownloadFile('win64'); |
35 | 36 | }
|
36 | 37 | break;
|
37 |
| - case "darwin": |
| 38 | + case 'darwin': |
38 | 39 | switch (process.arch) {
|
39 |
| - case "x32": |
40 |
| - return makeDownloadFile("osx-x86_32"); |
41 |
| - case "x64": |
42 |
| - return makeDownloadFile("osx-x86_64"); |
| 40 | + case 'x32': |
| 41 | + return makeDownloadFile('osx-x86_32'); |
| 42 | + case 'x64': |
| 43 | + return makeDownloadFile('osx-x86_64'); |
43 | 44 | }
|
44 | 45 | break;
|
45 | 46 | }
|
46 |
| - throw new Error("There is no protoc compiler available for the current platform/arch combination: " + process.platform + "/" + process.arch) |
| 47 | + throw new Error( |
| 48 | + 'There is no protoc compiler available for the current platform/arch combination: ' + |
| 49 | + process.platform + |
| 50 | + '/' + |
| 51 | + process.arch, |
| 52 | + ); |
47 | 53 | }
|
48 | 54 |
|
49 |
| -const protocDir = path.join(__dirname, "..", "protoc"); |
50 |
| -const protocBin = path.join(protocDir, "bin", "protoc" + (process.platform === "win32" ? ".exe" : "")); |
| 55 | +const protocDir = path.join(__dirname, '..', 'protoc'); |
| 56 | +const protocBin = path.join( |
| 57 | + protocDir, |
| 58 | + 'bin', |
| 59 | + 'protoc' + (process.platform === 'win32' ? '.exe' : ''), |
| 60 | +); |
51 | 61 | const downloadFile = determineDownloadFile();
|
52 | 62 |
|
53 | 63 | const protocZipFile = path.join(protocDir, downloadFile);
|
54 | 64 | // Check if we already have the file downloaded
|
55 | 65 | if (!fs.existsSync(protocZipFile)) {
|
56 |
| - |
57 | 66 | // First, delete the directory if it exists, then recreate
|
58 | 67 | if (fs.existsSync(protocDir)) {
|
59 | 68 | rimraf.sync(protocDir);
|
60 | 69 | }
|
61 |
| - mkdirp.sync(path.join(__dirname, "..", "protoc")); |
| 70 | + mkdirp.sync(path.join(__dirname, '..', 'protoc')); |
62 | 71 |
|
63 | 72 | // Download the file
|
64 |
| - const downloadUrl = downloadUrlPrefix + protocVersion + "/" + downloadFile; |
65 |
| - console.log("Downloading protoc from " + downloadUrl); |
| 73 | + const downloadUrl = downloadUrlPrefix + protocVersion + '/' + downloadFile; |
| 74 | + console.log('Downloading protoc from ' + downloadUrl); |
66 | 75 |
|
67 | 76 | const file = fs.createWriteStream(protocZipFile);
|
68 | 77 | request(downloadUrl)
|
69 | 78 | .pipe(file)
|
70 |
| - .on("finish", () => { |
| 79 | + .on('finish', () => { |
71 | 80 | fs.createReadStream(protocZipFile)
|
72 | 81 | .pipe(unzipper.Parse())
|
73 |
| - .on("entry", function(entry) { |
| 82 | + .on('entry', function (entry) { |
74 | 83 | const extractPath = path.join(protocDir, entry.path);
|
75 |
| - const extractDirectory = "Directory" === entry.type ? extractPath : path.dirname(extractPath); |
| 84 | + const extractDirectory = |
| 85 | + 'Directory' === entry.type |
| 86 | + ? extractPath |
| 87 | + : path.dirname(extractPath); |
76 | 88 |
|
77 |
| - mkdirp(extractDirectory, function(err) { |
| 89 | + mkdirp(extractDirectory, function (err) { |
78 | 90 | if (err) throw err;
|
79 |
| - if ("File" === entry.type) { |
80 |
| - entry.pipe(fs.createWriteStream(extractPath)) |
81 |
| - .on("finish", function() { |
| 91 | + if ('File' === entry.type) { |
| 92 | + entry |
| 93 | + .pipe(fs.createWriteStream(extractPath)) |
| 94 | + .on('finish', function () { |
82 | 95 | if (protocBin === extractPath) {
|
83 |
| - fs.chmod(extractPath, 0o755, function(err) { |
| 96 | + fs.chmod(extractPath, 0o755, function (err) { |
84 | 97 | if (err) throw err;
|
85 | 98 | });
|
86 | 99 | }
|
|
0 commit comments