SILENT KILLERPanel

Current Path: > > usr > > share > perl5 > vendor_perl > CPAN


Operation   : Linux premium131.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64
Software     : Apache
Server IP    : 162.0.232.56 | Your IP: 216.73.216.111
Domains      : 1034 Domain(s)
Permission   : [ 0755 ]

Files and Folders in: //usr//share/perl5/vendor_perl/CPAN

NameTypeSizeLast ModifiedActions
API Directory - -
Exception Directory - -
FTP Directory - -
HTTP Directory - -
Kwalify Directory - -
LWP Directory - -
Meta Directory - -
Plugin Directory - -
Admin.pm File 7780 bytes June 03 2025 14:32:20.
Author.pm File 6842 bytes June 03 2025 14:32:20.
Bundle.pm File 9826 bytes June 03 2025 14:32:20.
CacheMgr.pm File 7664 bytes June 03 2025 14:32:20.
Complete.pm File 6023 bytes June 03 2025 14:32:20.
Debug.pm File 2102 bytes June 03 2025 14:32:20.
DeferredCode.pm File 189 bytes June 03 2025 14:32:20.
Distribution.pm File 163814 bytes June 03 2025 14:32:20.
Distroprefs.pm File 11990 bytes June 03 2025 14:32:20.
Distrostatus.pm File 972 bytes June 03 2025 14:32:20.
FTP.pm File 42624 bytes June 03 2025 14:32:20.
FirstTime.pm File 71980 bytes June 03 2025 14:32:20.
HandleConfig.pm File 23301 bytes June 03 2025 14:32:20.
Index.pm File 22216 bytes June 03 2025 14:32:20.
InfoObj.pm File 6909 bytes June 03 2025 14:32:20.
Kwalify.pm File 3428 bytes June 03 2025 14:32:20.
Meta.pm File 30272 bytes August 18 2016 16:10:32.
Mirrors.pm File 16695 bytes June 03 2025 14:32:20.
Module.pm File 22390 bytes June 03 2025 14:32:20.
Nox.pm File 953 bytes June 03 2025 14:32:20.
Plugin.pm File 3215 bytes June 03 2025 14:32:20.
Prompt.pm File 567 bytes June 03 2025 14:32:20.
Queue.pm File 6942 bytes June 03 2025 14:32:20.
Shell.pm File 73605 bytes June 03 2025 14:32:20.
Tarzip.pm File 16715 bytes June 03 2025 14:32:20.
URL.pm File 588 bytes June 03 2025 14:32:20.
Version.pm File 4398 bytes June 03 2025 14:32:20.

Reading File: //usr//share/perl5/vendor_perl/CPAN/Kwalify.pm

=head1 NAME

CPAN::Kwalify - Interface between CPAN.pm and Kwalify.pm

=head1 SYNOPSIS

  use CPAN::Kwalify;
  validate($schema_name, $data, $file, $doc);

=head1 DESCRIPTION

=over

=item _validate($schema_name, $data, $file, $doc)

$schema_name is the name of a supported schema. Currently only
C<distroprefs> is supported. $data is the data to be validated. $file
is the absolute path to the file the data are coming from. $doc is the
index of the document within $doc that is to be validated. The last
two arguments are only there for better error reporting.

Relies on being called from within CPAN.pm.

Dies if something fails. Does not return anything useful.

=item yaml($schema_name)

Returns the YAML text of that schema. Dies if something fails.

=back

=head1 AUTHOR

Andreas Koenig C<< <andk@cpan.org> >>

=head1 LICENSE

This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.

See L<http://www.perl.com/perl/misc/Artistic.html>



=cut


use strict;

package CPAN::Kwalify;
use vars qw($VERSION $VAR1);
$VERSION = "5.50";

use File::Spec ();

my %vcache = ();

my $schema_loaded = {};

sub _validate {
    my($schema_name,$data,$abs,$y) = @_;
    my $yaml_module = CPAN->_yaml_module;
    if (
        $CPAN::META->has_inst($yaml_module)
        &&
        $CPAN::META->has_inst("Kwalify")
       ) {
        my $load = UNIVERSAL::can($yaml_module,"Load");
        unless ($schema_loaded->{$schema_name}) {
            eval {
                my $schema_yaml = yaml($schema_name);
                $schema_loaded->{$schema_name} = $load->($schema_yaml);
            };
            if ($@) {
                # we know that YAML.pm 0.62 cannot parse the schema,
                # so we try a fallback
                my $content = do {
                    my $path = __FILE__;
                    $path =~ s/\.pm$//;
                    $path = File::Spec->catfile($path, "$schema_name.dd");
                    local *FH;
                    open FH, $path or die "Could not open '$path': $!";
                    local $/;
                    <FH>;
                };
                $VAR1 = undef;
                eval $content;
                if (my $err = $@) {
                    die "parsing of '$schema_name.dd' failed: $err";
                }
                $schema_loaded->{$schema_name} = $VAR1;
            }
        }
    }
    if (my $schema = $schema_loaded->{$schema_name}) {
        my $mtime = (stat $abs)[9];
        for my $k (keys %{$vcache{$abs}}) {
            delete $vcache{$abs}{$k} unless $k eq $mtime;
        }
        return if $vcache{$abs}{$mtime}{$y}++;
        eval { Kwalify::validate($schema, $data) };
        if (my $err = $@) {
            my $info = {}; yaml($schema_name, info => $info);
            die "validation of distropref '$abs'[$y] against schema '$info->{path}' failed: $err";
        }
    }
}

sub _clear_cache {
    %vcache = ();
}

sub yaml {
    my($schema_name, %opt) = @_;
    my $content = do {
        my $path = __FILE__;
        $path =~ s/\.pm$//;
        $path = File::Spec->catfile($path, "$schema_name.yml");
        if ($opt{info}) {
            $opt{info}{path} = $path;
        }
        local *FH;
        open FH, $path or die "Could not open '$path': $!";
        local $/;
        <FH>;
    };
    return $content;
}

1;

# Local Variables:
# mode: cperl
# cperl-indent-level: 4
# End:


SILENT KILLER Tool