diff options
Diffstat (limited to 'src/license.rs')
-rw-r--r-- | src/license.rs | 168 |
1 files changed, 168 insertions, 0 deletions
diff --git a/src/license.rs b/src/license.rs new file mode 100644 index 0000000..0789829 --- /dev/null +++ b/src/license.rs @@ -0,0 +1,168 @@ +use phf::phf_map; + +static SPDX_TO_LICENSE: phf::Map<&'static str, &'static str> = phf_map! { + "0BSD" => "0BSD", + "AFL-2.1" => "AFL-2.1", + "AFL-3.0" => "AFL-3.0", + "AGPL-3.0" => "AGPL-3", + "AGPL-3.0-only" => "AGPL-3", + "AGPL-3.0-or-later" => "AGPL-3+", + "Aladdin" => "Aladdin", + "AMPAS" => "AMPAS", + "Apache-1.0" => "Apache-1.0", + "Apache-1.1" => "Apache-1.1", + "Apache-2.0" => "Apache-2.0", + "APL-1.0" => "APL-1.0", + "APSL-2.0" => "APSL-2", + "Artistic-1.0" => "Artistic", + "Artistic-2.0" => "Artistic-2", + "Beerware" => "BEER-WARE", + "BSD-1-Clause" => "BSD-1", + "BSD-2-Clause" => "BSD-2", + "BSD-3-Clause" => "BSD", + "BSD-4-Clause" => "BSD-4", + "BSL-1.0" => "Boost-1.0", + "bzip2-1.0.5" => "BZIP2", + "bzip2-1.0.6" => "BZIP2", + "CC-BY-2.0" => "CC-BY-2.0", + "CC-BY-2.5" => "CC-BY-2.5", + "CC-BY-3.0" => "CC-BY-3.0", + "CC-BY-4.0" => "CC-BY-4.0", + "CC-BY-NC-4.0" => "CC-BY-NC-4.0", + "CC-BY-NC-ND-2.0" => "CC-BY-NC-ND-2.0", + "CC-BY-NC-ND-2.5" => "CC-BY-NC-ND-2.5", + "CC-BY-NC-ND-3.0" => "CC-BY-NC-ND-3.0", + "CC-BY-NC-ND-4.0" => "CC-BY-NC-ND-4.0", + "CC-BY-NC-SA-2.5" => "CC-BY-NC-SA-2.5", + "CC-BY-NC-SA-3.0" => "CC-BY-NC-SA-3.0", + "CC-BY-NC-SA-4.0" => "CC-BY-NC-SA-4.0", + "CC-BY-ND-3.0" => "CC-BY-ND-3.0", + "CC-BY-ND-4.0" => "CC-BY-ND-4.0", + "CC-BY-SA-1.0" => "CC-BY-SA-1.0", + "CC-BY-SA-2.0" => "CC-BY-SA-2.0", + "CC-BY-SA-2.5" => "CC-BY-SA-2.5", + "CC-BY-SA-3.0" => "CC-BY-SA-3.0", + "CC-BY-SA-4.0" => "CC-BY-SA-4.0", + "CC-PD" => "CC-PDDC", + "CC0-1.0" => "CC0-1.0", + "CDDL-1.0" => "CDDL", + "CDDL-1.1" => "CDDL-1.1", + "CECILL-2.0" => "CeCILL-2", + "CECILL-B" => "CeCILL-B", + "CECILL-C" => "CeCILL-C", + "CPAL-1.0" => "CPAL-1.0", + "CPL-1.0" => "CPL-1.0", + "CPOL-1.02" => "CPOL", + "curl" => "curl", + "ECL-2.0" => "ECL-2.0", + "EPL-1.0" => "EPL-1.0", + "EPL-2.0" => "EPL-2.0", + "ErlPL-1.1" => "ErlPL-1.1", + "EUPL-1.1" => "EUPL-1.1", + "EUPL-1.2" => "EUPL-1.2", + "Fair" => "fairuse", + "FSFAP" => "FSFAP", + "FTL" => "FTL", + "GD" => "gd", + "Glulxe" => "Glulxe", + "gnuplot" => "gnuplot", + "GPL-1.0" => "GPL-1", + "GPL-1.0+" => "GPL-1+", + "GPL-1.0-only" => "GPL-1", + "GPL-1.0-or-later" => "GPL-1+", + "GPL-2.0" => "GPL-2", + "GPL-2.0+" => "GPL-2+", + "GPL-2.0-only" => "GPL-2", + "GPL-2.0-or-later" => "GPL-2+", + "GPL-2.0-with-classpath-exception" => "GPL-2-with-classpath-exception", + "GPL-2.0-with-font-exception" => "GPL-2-with-font-exception", + "GPL-3.0" => "GPL-3", + "GPL-3.0+" => "GPL-3+", + "GPL-3.0-only" => "GPL-3", + "GPL-3.0-or-later" => "GPL-3+", + "GPL-3.0-with-autoconf-exception" => "GPL-3-with-autoconf-exception", + "gSOAP-1.3b" => "gSOAP", + "HPND" => "HPND", + "ICU" => "icu", + "IJG" => "IJG", + "ImageMagick" => "imagemagick", + "Info-ZIP" => "Info-ZIP", + "Interbase-1.0" => "Interbase-1.0", + "IPA" => "IPAfont", + "ISC" => "ISC", + "JSON" => "JSON", + "LGPL-2.0" => "LGPL-2", + "LGPL-2.0+" => "LGPL-2+", + "LGPL-2.0-only" => "LGPL-2", + "LGPL-2.0-or-later" => "LGPL-2+", + "LGPL-2.1" => "LGPL-2.1", + "LGPL-2.1+" => "LGPL-2.1+", + "LGPL-2.1-only" => "LGPL-2.1", + "LGPL-2.1-or-later" => "LGPL-2.1+", + "LGPL-3.0" => "LGPL-3", + "LGPL-3.0+" => "LGPL-3+", + "LGPL-3.0-only" => "LGPL-3", + "LGPL-3.0-or-later" => "LGPL-3+", + "Libpng" => "libpng", + "libpng-2.0" => "libpng2", + "libtiff" => "libtiff", + "LPPL-1.2" => "LPPL-1.2", + "LPPL-1.3a" => "LPPL-1.3", + "LPPL-1.3c" => "LPPL-1.3c", + "MirOS" => "MirOS", + "MIT" => "MIT", + "MIT-advertising" => "MIT-with-advertising", + "mpich2" => "mpich2", + "MPL-1.0" => "MPL-1.0", + "MPL-1.1" => "MPL-1.1", + "MPL-2.0" => "MPL-2.0", + "MS-PL" => "Ms-PL", + "NPL-1.1" => "NPL-1.1", + "OFL-1.0" => "OFL", + "OFL-1.1" => "OFL-1.1", + "OLDAP-2.7" => "OPENLDAP", + "OpenSSL" => "openssl", + "OPL-1.0" => "OPL", + "OSL-1.1" => "OSL-1.1", + "OSL-2.0" => "OSL-2.0", + "OSL-2.1" => "OSL-2.1", + "PHP-3.0" => "PHP-3", + "PHP-3.01" => "PHP-3.01", + "PostgreSQL" => "POSTGRESQL", + "PSF-2.0" => "PSF-2", + "psutils" => "psutils", + "Python-2.0" => "PYTHON", + "QPL-1.0" => "QPL-1.0", + "Rdisc" => "rdisc", + "RSA-MD" => "RSA", + "Ruby" => "Ruby", + "Sendmail" => "Sendmail", + "SGI-B-2.0" => "SGI-B-2.0", + "Sleepycat" => "Sleepycat", + "SSPL-1.0" => "SSPL-1", + "TCL" => "tcltk", + "TCP-wrappers" => "tcp_wrappers_license", + "Unlicense" => "Unlicense", + "Vim" => "vim", + "VOSTROM" => "VOSTROM", + "W3C" => "W3C", + "W3C-19980720" => "W3C-document", + "Watcom-1.0" => "Watcom-1.0", + "WTFPL" => "WTFPL-2", + "wxWindows" => "wxWinLL-3.1", + "Zend-2.0" => "Zend-2.0", + "Zlib" => "ZLIB", + "ZPL-2.1" => "ZPL", +}; + +pub fn split_spdx_license(str: &str) -> Vec<&str> { + str.split('/') + .flat_map(|l| l.split(" OR ")) + .flat_map(|l| l.split(" AND ")) + .map(str::trim) + .collect() +} + +pub fn normalize_license(str: &str) -> Option<&'static str> { + SPDX_TO_LICENSE.get(str).copied() +} |