App-CPAN-SBOM
view release on metacpan or search on metacpan
lib/App/CPAN/SBOM.pm view on Meta::CPAN
package App::CPAN::SBOM;
use 5.010001;
use strict;
use warnings;
use utf8;
use CPAN::Audit;
use CPAN::Meta;
use Cpanel::JSON::XS qw(encode_json);
use Data::Dumper;
use File::Basename;
use File::Spec;
use Getopt::Long qw(GetOptionsFromArray :config gnu_compat);
use HTTP::Tiny;
use MetaCPAN::Client;
use MIME::Base64;
use Pod::Usage qw(pod2usage);
use URI::PackageURL;
use SBOM::CycloneDX::Component;
use SBOM::CycloneDX::ExternalReference;
use SBOM::CycloneDX::Hash;
use SBOM::CycloneDX::License;
use SBOM::CycloneDX::Metadata;
use SBOM::CycloneDX::OrganizationalContact;
use SBOM::CycloneDX::Util qw(cpan_meta_to_spdx_license cyclonedx_tool cyclonedx_component);
use SBOM::CycloneDX::Vulnerability::Affect;
use SBOM::CycloneDX::Vulnerability::Rating;
use SBOM::CycloneDX::Vulnerability::Source;
use SBOM::CycloneDX::Vulnerability;
use SBOM::CycloneDX;
our $VERSION = '1.04';
sub DEBUG { $ENV{SBOM_DEBUG} || 0 }
sub cli_error {
my ($error, $code) = @_;
$error =~ s/ at .* line \d+.*//;
say STDERR "ERROR: $error";
return $code || 1;
}
sub run {
my (@args) = @_;
my %options = ();
GetOptionsFromArray(
\@args, \%options, qw(
help|h
man
v
debug|d
output|o=s
meta=s
distribution=s
maxdepth=i
vulnerabilities!
validate!
project-meta=s
project-type=s
project-author=s@
( run in 1.200 second using v1.01-cache-2.11-cpan-8f98c5d2c55 )