1 var parse = require('spdx-expression-parse');
2 var correct = require('spdx-correct');
6 'a valid SPDX license expression (without "LicenseRef"), ' +
8 '"SEE LICENSE IN <filename>"'
11 var fileReferenceRE = /^SEE LICEN[CS]E IN (.+)$/;
13 function startsWith(prefix, string) {
14 return string.slice(0, prefix.length) === prefix;
17 function usesLicenseRef(ast) {
18 if (ast.hasOwnProperty('license')) {
19 var license = ast.license;
21 startsWith('LicenseRef', license) ||
22 startsWith('DocumentRef', license)
26 usesLicenseRef(ast.left) ||
27 usesLicenseRef(ast.right)
32 module.exports = function(argument) {
36 ast = parse(argument);
40 argument === 'UNLICENSED' ||
41 argument === 'UNLICENCED'
44 validForOldPackages: true,
45 validForNewPackages: true,
48 } else if (match = fileReferenceRE.exec(argument)) {
50 validForOldPackages: true,
51 validForNewPackages: true,
56 validForOldPackages: false,
57 validForNewPackages: false,
58 warnings: [genericWarning]
60 var corrected = correct(argument);
63 'license is similar to the valid expression "' + corrected + '"'
70 if (usesLicenseRef(ast)) {
72 validForNewPackages: false,
73 validForOldPackages: false,
75 warnings: [genericWarning]
79 validForNewPackages: true,
80 validForOldPackages: true,