в сторону кода electron-release-server
Да, я пробовал. Закомментировал вот эту часть: uploadedFile.filename === 'RELEASES' (вообще непонятно зачем она. Заменил filetype: fileExt, на fileExt || '' чтобы fileExt мог быть в том числе и пустым. Но всё равно загрузить без расширения файл RELEASE не удаётся 🥲
req.file('file').upload(sails.config.files,
function whenDone(err, uploadedFiles) {
if (err) {
return res.negotiate(err);
}
// If an unexpected number of files were uploaded, respond with an
// error.
if (uploadedFiles.length !== 1) {
return res.badRequest('No file was uploaded');
}
var uploadedFile = uploadedFiles[0];
console.log('uploadedFile.filename', uploadedFile.filename);
console.log('uploadedFile', uploadedFile.filename);
// if (uploadedFile.filename === 'RELEASES') {
// return res.badRequest(
// 'The RELEASES file should not be uploaded since the release server will generate at request time');
// }
var fileExt = path.extname(uploadedFile.filename);
console.log('fileExt', fileExt);
sails.log.debug('Creating asset with name', data.name || uploadedFile.filename);
var hashPromise;
if (fileExt === '.nupkg') {
// Calculate the hash of the file, as it is necessary for windows
// files
hashPromise = AssetService.getHash(uploadedFile.fd);
} else if (fileExt === '.exe' || fileExt === '.zip') {
hashPromise = AssetService.getHash(
uploadedFile.fd,
"sha512",
"base64"
);
} else {
hashPromise = Promise.resolve('');
}
hashPromise
.then(function(fileHash) {
var newAsset = _.merge({
name: uploadedFile.filename,
hash: fileHash,
filetype: fileExt || '',
fd: uploadedFile.fd,
size: uploadedFile.size
}, data);
// Due to an API change in Sails/Waterline, the primary key values must be specified directly.=
newAsset.version = newAsset.version.id;
const delta = newAsset.name && newAsset.name.toLowerCase().includes('-delta') ? 'delta_' : '';
newAsset.id = `${newAsset.version}_${newAsset.platform}_${delta}${newAsset.filetype.replace(/\./g, '')}`;
// Create new instance of model using data from params
Asset
.create(newAsset)
.exec(function created(err, newInstance) {
// Differentiate between waterline-originated validation errors
// and serious underlying issues. Respond with badRequest if a
// validation error is encountered, w/ validation info.
if (err) return res.negotiate(err);
// If we have the pubsub hook, use the model class's publish
// method to notify all subscribers about the created item.
if (req._sails.hooks.pubsub) {
if (req.isSocket) {
Asset.subscribe(req, newInstance);
Asset.introduce(newInstance);
}
Asset.publish([newInstance.id], {
verb: 'created',
id: newInstance.id,
data: newInstance
}, !req.options.mirror && req);
}
// Send JSONP-friendly response if it's supported
res.ok(newInstance);
});
})
.catch(res.negotiate);
});