Skip to content

Commit f51ba16

Browse files
authored
Merge pull request #2146 from NicholasBHubbard/custom-metacpan-url
Add --cpan-metacpan-api-url flag for custom MetaCPAN instances
2 parents 107c892 + 70450e9 commit f51ba16

2 files changed

Lines changed: 16 additions & 3 deletions

File tree

lib/fpm/package/cpan.rb

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,10 @@ class FPM::Package::CPAN < FPM::Package
4444
option "--cpanm-force", :flag,
4545
"Pass the --force parameter to cpanm", :default => false
4646

47+
option "--metacpan-api-url", "URL",
48+
"URL for the MetaCPAN api",
49+
:default => "https://fastapi.metacpan.org"
50+
4751
private
4852
def input(package)
4953
#if RUBY_VERSION =~ /^1\.8/
@@ -328,7 +332,7 @@ def download(metadata, cpan_version=nil)
328332
end
329333

330334
# Search metacpan to get download URL for this version of the module
331-
metacpan_search_url = "https://fastapi.metacpan.org/v1/release/_search?_source=download_url"
335+
metacpan_search_url = "#{attributes[:cpan_metacpan_api_url]}/v1/release/_search?_source=download_url"
332336
metacpan_search_query = {"query":{"term":{"name": "#{distribution}-#{self.version}" } } }.to_json
333337
begin
334338
search_response = httppost(metacpan_search_url,metacpan_search_query)
@@ -369,7 +373,7 @@ def download(metadata, cpan_version=nil)
369373

370374
def search_module(module_name, version=nil)
371375
logger.info("Asking metacpan about a module", :module => module_name, :version => version)
372-
metacpan_api_url = "https://fastapi.metacpan.org/v1/module/_search"
376+
metacpan_api_url = "#{attributes[:cpan_metacpan_api_url]}/v1/module/_search"
373377
metacpan_api_query = <<-EOS
374378
{
375379
"query": {
@@ -405,7 +409,7 @@ def search_provided_modules(distribution, version)
405409
logger.info("Asking metacpan about a releases provided modules",
406410
:distribution => distribution,
407411
:version => version)
408-
metacpan_api_url = "https://fastapi.metacpan.org/v1/module/_search?_source=module.name,module.version"
412+
metacpan_api_url = "#{attributes[:cpan_metacpan_api_url]}/v1/module/_search?_source=module.name,module.version"
409413
metacpan_api_query = <<-EOS
410414
{
411415
"query": {

spec/fpm/package/cpan_spec.rb

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,4 +146,13 @@
146146
subject.input("IPC::Session")
147147
end
148148
end
149+
150+
it "should default metacpan api url to https://fastapi.metacpan.org" do
151+
insist { subject.attributes[:cpan_metacpan_api_url] } == "https://fastapi.metacpan.org"
152+
end
153+
154+
it "should use custom metacpan api url" do
155+
subject.attributes[:cpan_metacpan_api_url] = "https://localhost.invalid"
156+
insist { subject.instance_eval { search_module("File::Temp") } }.raises Exception
157+
end
149158
end # describe FPM::Package::CPAN

0 commit comments

Comments
 (0)