in src/cmd/build.js [85:112]
function getPackageNameFromTemplate(filenameTemplate, manifestData) {
const packageName = filenameTemplate.replace(
/{([A-Za-z0-9._]+?)}/g,
(match, manifestProperty) => {
return safeFileName(
getStringPropertyValue(manifestProperty, manifestData),
);
},
);
// Validate the resulting packageName string, after interpolating the manifest property
// specified in the template string.
const parsed = path.parse(packageName);
if (parsed.dir) {
throw new UsageError(
`Invalid filename template "${filenameTemplate}". ` +
`Filename "${packageName}" should not contain a path`,
);
}
if (!['.zip', '.xpi'].includes(parsed.ext)) {
throw new UsageError(
`Invalid filename template "${filenameTemplate}". ` +
`Filename "${packageName}" should have a zip or xpi extension`,
);
}
return packageName;
}