CPAN::Meta::Requirements - CPAN dist 的一組版本需求
版本 2.140
use CPAN::Meta::Requirements;
my $build_requires = CPAN::Meta::Requirements->new;
$build_requires->add_minimum('Library::Foo' => 1.208);
$build_requires->add_minimum('Library::Foo' => 2.602);
$build_requires->add_minimum('Module::Bar' => 'v1.2.3');
$METAyml->{build_requires} = $build_requires->as_string_hash;
CPAN::Meta::Requirements 物件模擬一組版本限制,例如在 CPAN 發行版的 META.yml 或 META.json 檔案中指定的限制,並由 CPAN::Meta::Spec 定義;它可以透過新增越來越多限制來建置,而且會將這些限制簡化為最簡單的表示方式。
邏輯上不可能的限制會立即透過引發例外狀況來識別。
my $req = CPAN::Meta::Requirements->new;
這會傳回新的 CPAN::Meta::Requirements 物件。它會採用一個選用雜湊參考引數。目前僅支援一個金鑰
bad_version_hook
-- 如果提供,當版本無法解析為版本物件時,這個程式碼參考會以無效版本字串作為第一個引數,並以模組名稱作為第二個引數來呼叫。它必須傳回有效的版本物件。
所有其他金鑰都會被忽略。
$req->add_minimum( $module => $version );
這會新增新的最小版本需求。如果新需求與現有規格重複,則不會產生任何效果。
最小需求是包含式的。需要 $version
,以及任何較大的版本號碼。
這個方法會傳回需求物件。
$req->add_maximum( $module => $version );
這會新增新的最大版本需求。如果新需求與現有規格重複,則不會產生任何效果。
最大需求是包含式的。不允許任何嚴格大於指定版本的版本。
這個方法會傳回需求物件。
$req->add_exclusion( $module => $version );
這會新增新的排除版本。例如,您可以使用這三個方法呼叫
$req->add_minimum( $module => '1.00' );
$req->add_maximum( $module => '1.82' );
$req->add_exclusion( $module => '1.75' );
1.00 到 1.82(含)之間的任何版本都可以接受,但 1.75 除外。
這個方法會傳回需求物件。
$req->exact_version( $module => $version );
這會將指定模組所需版本設定為 完全 等於指定版本。不會考慮任何其他版本是可以接受的。
這個方法會傳回需求物件。
$req->add_requirements( $another_req_object );
這個方法會將指定 CPAN::Meta::Requirements 物件中的所有需求新增到呼叫它的需求物件。如果有任何衝突,就會引發例外狀況。
這個方法會傳回需求物件。
my $bool = $req->accepts_module($module => $version);
給定模組和版本,如果模組的版本規範接受提供的版本,此方法會傳回 true。換句話說,給定
Module => '>= 1.00, < 2.00'
我們會接受 1.00 和 1.75,但不會接受 0.50 或 2.00。
對於需求中未出現的模組,此方法會傳回 true。
$req->clear_requirement( $module );
這會從物件中移除給定模組的需求。
這個方法會傳回需求物件。
$req->requirements_for_module( $module );
這會傳回一個字串,其中包含給定模組的版本需求,格式如 CPAN::Meta::Spec 中所述,或者如果給定的模組沒有需求,則傳回 undef。這應僅用於錯誤訊息等資訊目的,不應解釋或用於比較(請改用 "accepts_module")。
$req->structured_requirements_for_module( $module );
這會傳回一個資料結構,其中包含給定模組的版本需求,或者如果給定的模組沒有需求,則傳回 undef。這不應用于版本檢查(請改用 "accepts_module")。
已在版本 2.134 中新增。
此方法會傳回已指定需求的所有模組清單。
$req->clone;
此方法會傳回呼叫者的複製。複製和原始物件可以獨立變更。
當且僅當所有需求都是包含式最小值時,此方法會傳回 true,也就是說,如果它們的字串表示式僅為版本號碼。
如果需求已透過呼叫 finalize
方法而完成,此方法會傳回 true。
此方法標記需求已完成。後續變更需求的嘗試將會致命,如果它們會導致變更。如果它們不會變更需求,則它們沒有作用。
如果複製已完成的需求集合,複製的需求不會也完成。
這會傳回一個雜湊的參考,其中描述使用 CPAN::Meta::Spec 規範中的字串的需求。
例如,在以下程式之後
my $req = CPAN::Meta::Requirements->new;
$req->add_minimum('CPAN::Meta::Requirements' => 0.102);
$req->add_minimum('Library::Foo' => 1.208);
$req->add_maximum('Library::Foo' => 2.602);
$req->add_minimum('Module::Bar' => 'v1.2.3');
$req->add_exclusion('Module::Bar' => 'v1.2.8');
$req->exact_version('Xyzzy' => '6.01');
my $hashref = $req->as_string_hash;
$hashref
會包含
{
'CPAN::Meta::Requirements' => '0.102',
'Library::Foo' => '>= 1.208, <= 2.206',
'Module::Bar' => '>= v1.2.3, != v1.2.8',
'Xyzzy' => '== 6.01',
}
$req->add_string_requirement('Library::Foo' => '>= 1.208, <= 2.206');
$req->add_string_requirement('Library::Foo' => v1.208);
此方法會分析傳入的字串,並為給定的模組新增適當的要求。版本可以是 Perl「v 字串」。它會了解 CPAN::Meta::Spec 中「版本範圍」中所述的版本範圍。例如
沒有運算子的版本號等於指定最小值 (>=
)。允許額外的空白。
my $req = CPAN::Meta::Requirements->from_string_hash( \%hash );
my $req = CPAN::Meta::Requirements->from_string_hash( \%hash, \%opts );
這是 CPAN::Meta::Requirements 物件的替代建構函式。它會取得模組名稱和版本需求字串的雜湊,並傳回新的 CPAN::Meta::Requirements 物件。與 add_string_requirement 一樣,版本可以是 Perl「v 字串」。必要時,您可以提供選項的雜湊參考,就像「new」方法一樣。
請透過 https://github.com/Perl-Toolchain-Gang/CPAN-Meta-Requirements/issues 中的問題追蹤器回報任何錯誤或功能要求。您會自動收到問題進度的通知。
這是開放原始碼軟體。程式碼儲存庫可供公開檢閱和根據授權條款提供貢獻。
https://github.com/Perl-Toolchain-Gang/CPAN-Meta-Requirements
git clone https://github.com/Perl-Toolchain-Gang/CPAN-Meta-Requirements.git
David Golden <dagolden@cpan.org>
Ricardo Signes <rjbs@cpan.org>
Ed J <mohawk2@users.noreply.github.com>
Karen Etheridge <ether@cpan.org>
Leon Timmermans <fawaka@gmail.com>
robario <webmaster@robario.com>
此軟體的著作權為 (c) 2010 David Golden 和 Ricardo Signes 所有。
這是免費軟體;您可以在與 Perl 5 程式語言系統相同的條款下重新散布或修改它。