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 if (argument.trim().length !== 0) {
61 var corrected = correct(argument);
64 'license is similar to the valid expression "' + corrected + '"'
72 if (usesLicenseRef(ast)) {
74 validForNewPackages: false,
75 validForOldPackages: false,
77 warnings: [genericWarning]
81 validForNewPackages: true,
82 validForOldPackages: true,