NAME

License::SPDX - Object for SPDX licenses handling.

SYNOPSIS

use License::SPDX;

my $obj = License::SPDX->new;
my $checked = $obj->check_exception($check_string, $opts_hr);
my $checked = $obj->check_license($check_string, $opts_hr);
my $exception_hr = $obj->exception($exception_id);
my @exceptions = $obj->exceptions;
my $license_hr = $obj->license($license_id);
my @licenses = $obj->licenses;
my $spdx_release_date = $obj->spdx_release_date;
my $spdx_version = $obj->spdx_version;

DESCRIPTION

Object for SPDX licenses handling is using license data from https://github.com/spdx/license-list-data repository. Actual version is 3.21.

METHODS

new

my $obj = License::SPDX->new;

Constructor.

Returns instance of object.

check_exception

my $checked = $obj->check_exception($check_string, $opts_hr);

Check if license exception exists. Argument $opts_hr is reference to hash with parameter 'check_type' for definition of check_exception() type.

Possible 'check_type' values:

'id' - Check license exception id.
'name' - Check license exception name.

Default value of 'check_type' is 'id'. If 'check_type' is bad, fail with error.

Returns 1 (license exist) or 0 (license doesn't exist).

check_license

my $checked = $obj->check_license($check_string, $opts_hr);

Check if license exists. Argument $opts_hr is reference to hash with parameter 'check_type' for definition of check_license() type.

Possible 'check_type' values:

'id' - Check license id.
'name' - Check license name.

Default value of 'check_type' is 'id'. If 'check_type' is bad, fail with error.

Returns 1 (license exist) or 0 (license doesn't exist).

exception

my $exception_hr = $obj->exception($exception_id);

Get license exception structure.

Returns reference to hash.

exceptions

my @exceptions = $obj->exceptions;

Get all license exception structures.

Returns array of references to hash.

license

my $license_hr = $obj->license($license_id);

Get license structure.

Returns reference to hash.

licenses

my @licenses = $obj->licenses;

Get all license structures.

Returns array of references to hash.

spdx_release_date

my $spdx_release_date = $obj->spdx_release_date;

Get release date of data structure with SPDX license.

Returns string.

spdx_version

my $spdx_version = $obj->spdx_version;

Get version of data structure with SPDX license.

Returns string.

ERRORS

new():
        From Class::Utils::set_params():
                Unknown parameter '%s'.

check_exception():
        Check type '%s' doesn't supported.

check_license():
        Check type '%s' doesn't supported.

EXAMPLE1

use strict;
use warnings;

use License::SPDX;

if (@ARGV < 1) {
        print STDERR "Usage: $0 license_id\n";
        exit 1;
}
my $license_id = $ARGV[0];

# Object.
my $obj = License::SPDX->new;

print 'License with id \''.$license_id.'\' is ';
if ($obj->check_license($license_id)) {
        print "supported.\n";
} else {
        print "not supported.\n";
}

# Output for 'MIT':
# License with id 'MIT' is supported.

# Output for 'BAD':
# License with id 'BAD' is not supported.

EXAMPLE2

use strict;
use warnings;

use License::SPDX;

if (@ARGV < 1) {
        print STDERR "Usage: $0 license_exception_id\n";
        exit 1;
}
my $license_exception_id = $ARGV[0];

# Object.
my $obj = License::SPDX->new;

print 'License exception with id \''.$license_exception_id.'\' is ';
if ($obj->check_exception($license_exception_id)) {
        print "supported.\n";
} else {
        print "not supported.\n";
}

# Output for 'LGPL-3.0-linking-exception':
# License exception with id 'LGPL-3.0-linking-exception' is supported.

# Output for 'BAD':
# License exception with id 'BAD' is not supported.

DEPENDENCIES

Class::Utils, Cpanel::JSON::XS, Error::Pure. File::Share, List::Util, Perl6::Slurp.

SEE ALSO

rpm-spec-license

Tool for working with RPM spec file licenses.

REPOSITORY

https://github.com/michal-josef-spacek/License-SPDX

AUTHOR

Michal Josef Špaček mailto:skim@cpan.org

http://skim.cz

LICENSE AND COPYRIGHT

© 2023 Michal Josef Špaček

BSD 2-Clause License

VERSION

0.06