CPAN::Meta::Converter - 转换 CPAN 分发元数据结构
版本 2.150010
my $struct = decode_json_file('META.json');
my $cmc = CPAN::Meta::Converter->new( $struct );
my $new_struct = $cmc->convert( version => "2" );
此模块将 CPAN 元数据结构从一种形式转换为另一种形式。主要用途是将较旧的结构转换为最新版本的规范,但未来可能根据需要实现其他转换。(例如,删除所有自定义字段或删除所有可选字段。)
my $cmc = CPAN::Meta::Converter->new( $struct );
应向构造函数传递有效的元数据结构,但无效结构是可以接受的。如果未提供元规范版本,则将假定版本 1.0。
或者,您可以在 $struct
后提供一个 default_version
参数
my $cmc = CPAN::Meta::Converter->new( $struct, default_version => "1.4" );
仅当转换不包含 meta-spec
字段的元数据片段时才需要此参数。
my $new_struct = $cmc->convert( version => "2" );
返回一个新的哈希引用,其中元数据已转换为不同的形式。如果任何转换/标准化仍然导致无效结构,convert
将终止。
有效参数包括
version
-- 指示所需的规范版本(例如,“1.0”、“1.1”...“1.4”、“2”)。默认为 CPAN 元规范的最新版本。
转换依次通过每个版本进行。例如,版本 1.2 结构可能会转换为 1.3,然后是 1.4,最后是版本 2。转换过程会尝试清除简单的错误并标准化数据。例如,如果 author
被指定为标量,它将转换为包含该项的数组引用。(将结构转换为其自己的版本也将清除和标准化。)
清除和标准化数据时,如果可能,将用合理默认值替换缺失或无效字段。这可能会造成损失或不准确。例如,CPAN 上一些结构不良的 META.yml 文件将先决模块列为键和值
requires => { 'Foo::Bar' => 'Bam::Baz' }
这些将被拆分,并分别转换为具有零最小版本的先决条件。
当一些强制字段缺失或无效时,转换将尝试提供合理默认值或用 'unknown' 值填充它们。例如,缺失或无法识别的 license
字段将导致 license
字段为 'unknown'。可能获得 'unknown' 的字段包括
abstract
author
license
my $new_struct = $cmc->upgrade_fragment;
返回一个新的哈希引用,其中元数据已转换为 CPAN 元规范的最新版本。不会对结果进行验证 -- 您必须在将片段合并到完整的元数据文档后进行验证。
自版本 2.141170 起可用。
请使用 CPAN 请求跟踪器报告任何错误或功能。可以通过 http://rt.cpan.org/Dist/Display.html?Queue=CPAN-Meta 上的 Web 界面提交错误
提交错误或请求时,请包含一个测试文件或现有测试文件的补丁,以说明错误或所需功能。
David Golden <[email protected]>
Ricardo Signes <[email protected]>
Adam Kennedy <[email protected]>
此软件的版权归 David Golden、Ricardo Signes、Adam Kennedy 和贡献者所有 (c) 2010。
这是免费软件;你可以根据与 Perl 5 编程语言系统本身相同的条款重新分发和/或修改它。