@senoldogann/context-manager 0.1.7 → 0.1.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/ccm.js +8 -2
- package/package.json +1 -1
package/bin/ccm.js
CHANGED
|
@@ -103,7 +103,7 @@ async function getBinary() {
|
|
|
103
103
|
process.exit(0);
|
|
104
104
|
}
|
|
105
105
|
|
|
106
|
-
const binFilename = `${commandName}-${target}`;
|
|
106
|
+
const binFilename = `${commandName}-v${VERSION}-${target}`;
|
|
107
107
|
const binPath = path.join(BIN_DIR, binFilename);
|
|
108
108
|
|
|
109
109
|
if (fs.existsSync(binPath)) {
|
|
@@ -126,8 +126,8 @@ async function getBinary() {
|
|
|
126
126
|
|
|
127
127
|
function downloadFile(url, dest) {
|
|
128
128
|
return new Promise((resolve, reject) => {
|
|
129
|
-
const file = fs.createWriteStream(dest);
|
|
130
129
|
https.get(url, (response) => {
|
|
130
|
+
// Handle redirects BEFORE creating file
|
|
131
131
|
if (response.statusCode === 302 || response.statusCode === 301) {
|
|
132
132
|
downloadFile(response.headers.location, dest).then(resolve).catch(reject);
|
|
133
133
|
return;
|
|
@@ -136,10 +136,16 @@ function downloadFile(url, dest) {
|
|
|
136
136
|
reject(new Error(`Failed to download: ${response.statusCode}`));
|
|
137
137
|
return;
|
|
138
138
|
}
|
|
139
|
+
// Only create file after we know we have a valid response
|
|
140
|
+
const file = fs.createWriteStream(dest);
|
|
139
141
|
response.pipe(file);
|
|
140
142
|
file.on('finish', () => {
|
|
141
143
|
file.close(resolve);
|
|
142
144
|
});
|
|
145
|
+
file.on('error', (err) => {
|
|
146
|
+
fs.unlink(dest, () => { });
|
|
147
|
+
reject(err);
|
|
148
|
+
});
|
|
143
149
|
}).on('error', (err) => {
|
|
144
150
|
fs.unlink(dest, () => { });
|
|
145
151
|
reject(err);
|