2016-10-02 4 views
6

stasis 배포판을 PAUSE에 업로드했지만 index에 없습니다. 왜 내 CPAN 배포가 PAUSE에 의해 색인 생성되지 않습니까?

나는 패키지를 포함하지 않았기 때문이라고 생각, 그래서 나는 다음과 같이 v0.04의 정체 script에 패키지 선언을 추가 :

#!/usr/bin/env perl 
package stasis; 
package main; 
... 

을하지만 여전히 색인이되지 않았다.

상용구 모듈 파일을 만드는 것을 포함하지 않는이 배포판을 색인 생성하려면 어쨌든 존재합니까? (예 : lib/stasis.pm을 배포에 추가).

+1

일시 중지 된 이메일의 내용은 무엇입니까? $ VERSION 변수를 패키지로 옮길 수 있습니까? – choroba

+0

"PAUSE"의 "upload"이메일 만 받았지만 "indexed"이메일은 가져 오지 않았습니다. $ VERSION에 대한 흥미로운 제안은 META.json에 삽입 할 때 make가 버전을 찾는 것이라고 생각합니다. –

+2

소문자 이름은 pragma 용으로 예약되어 있으므로 자신을 위해 최상위 네임 스페이스를 주장해서는 안됩니다. – ikegami

답변

7

나는 CPAN이 스크립트를 색인하지 않는다고 생각합니다.

IMO 가장 좋은 방법은 스크립트에서 수행하는 작업을 프로그래밍 방식으로 처리 할 수있는 모듈을 만드는 것입니다 (스크립트에서 사용하도록 설정하는 것).

가짜 모듈을 넣거나 스크립트가 모듈이라고 생각하게 만들 수 있습니다. (내가 provides에 나열한 것 같습니다.)하지만 내가 너라면 그렇지 않을 것입니다.

+2

META.yml에 추가하면 META.json이 트릭을 수행합니다! –

+2

CPAN의 스크립트는 대개'App :: $ script_name' 모듈에 내장되어 있습니다. [예제] (http://search.cpan.org/perldoc?App::perlbrew) – ikegami

+0

@DavidFarrell "트릭을 수행했다"는 말은 cpan이 이제 스테이 시스 모듈이 있다는 거짓말을 의미합니다. – ysth

2

package 문이 *.pm 파일에 없기 때문에

PAUSE 인덱서는 open source입니다. 패키지를 푸는 것은 약간 복잡하지만 배포본에서 패키지 이름을 추출하는 정규식은 *.pm 파일 만 처리하는 패키지와 방법 인 PAUSE::pmfile::packages_per_pmfile에 있습니다.

PAUSE::dist::_index_by_meta 메서드는 메타 파일의 provides 키워드를 통해 패키지를 선언하는 대체 방법을 제공합니다.