Skip to content

Instantly share code, notes, and snippets.

@Cside
Created March 28, 2011 06:41
Show Gist options
  • Save Cside/890086 to your computer and use it in GitHub Desktop.
Save Cside/890086 to your computer and use it in GitHub Desktop.
Makefile.PLのrequiresとかtest_requireを勝手につくる
#!/usr/bin/env perl
use strict;
use warnings;
use Perl6::Say;
use List::MoreUtils qw/uniq/;
use Regexp::Assemble;
# Settings
my $module_name = 'MyModule::Name';
my @main = qw/lib bin/;
my @test = qw/t xt/;
# ===========================================
my $reg_std_modules = list_to_regex(
'^'.$module_name,
map {
chomp; '^'.$_.'$';
}
<DATA>
);
my @ack_results =
map {
chomp; $_;
}
`ack '^use '`
;
my @requires = filter("requires", map { '^'.$_.'/' } @main);
my @test_requires = filter("test_requires", map { '^'.$_.'/' } @test);
sub filter {
my ($require_func, @dir) = @_;
my $reg_dir = list_to_regex(@dir);
map {
"$require_func \'$_\';"
}
sort {
$a cmp $b
}
uniq
grep {
# 標準モジュールは除外
$_ !~ m/$reg_std_modules/o
}
map {
($_ =~ /use ([^\s;]+)/o)[0]
}
grep {
# ディレクトリでgrep
$_ =~ m#$reg_dir#;
}
@ack_results;
}
say $_ for @requires;
say "";
say $_ for @test_requires;
sub list_to_regex {
my @list = @_;
my $ra = Regexp::Assemble->new;
$ra->add($_) for @list;
$ra->re;
}
__DATA__
^[0-9\.]+$
AnyDBM_File
Attribute::Handlers
AutoLoader
AutoSplit
B
B::Asmdata
B::Assembler
B::Bblock
B::Bytecode
B::C
B::CC
B::Concise
B::Debug
B::Deparse
B::Disassembler
B::Lint
B::Lint::Debug
B::Showlex
B::Stackobj
B::Stash
B::Terse
B::Xref
Benchmark
ByteLoader
CGI
CGI::Apache
CGI::Carp
CGI::Cookie
CGI::Fast
CGI::Pretty
CGI::Push
CGI::Switch
CGI::Util
CPAN
CPAN::Debug
CPAN::DeferedCode
CPAN::Distroprefs
CPAN::FirstTime
CPAN::HandleConfig
CPAN::Kwalify
CPAN::Nox
CPAN::Queue
CPAN::Tarzip
CPAN::Version
Carp
Carp::Heavy
Class::ISA
Class::Struct
Config
Cwd
DB
DBM_Filter
DBM_Filter::compress
DBM_Filter::encode
DBM_Filter::int32
DBM_Filter::null
DBM_Filter::utf8
DB_File
DCLsym
Data::Dumper
Devel::DProf
Devel::InnerPackage
Devel::PPPort
Devel::Peek
Devel::SelfStubber
Digest
Digest::MD5
Digest::base
Digest::file
DirHandle
Dumpvalue
DynaLoader
Encode
Encode::Alias
Encode::Byte
Encode::CJKConstants
Encode::CN
Encode::CN::HZ
Encode::Config
Encode::EBCDIC
Encode::Encoder
Encode::Encoding
Encode::GSM0338
Encode::Guess
Encode::JP
Encode::JP::H2Z
Encode::JP::JIS7
Encode::KR
Encode::KR::2022_KR
Encode::MIME::Header
Encode::MIME::Header::ISO_2022_JP
Encode::MIME::Name
Encode::Symbol
Encode::TW
Encode::Unicode
Encode::Unicode::UTF7
English
Env
Errno
Exporter
Exporter::Heavy
ExtUtils::Command
ExtUtils::Command::MM
ExtUtils::Constant
ExtUtils::Constant::Base
ExtUtils::Constant::ProxySubs
ExtUtils::Constant::Utils
ExtUtils::Constant::XS
ExtUtils::Embed
ExtUtils::Install
ExtUtils::Installed
ExtUtils::Liblist
ExtUtils::Liblist::Kid
ExtUtils::MM
ExtUtils::MM_AIX
ExtUtils::MM_Any
ExtUtils::MM_BeOS
ExtUtils::MM_Cygwin
ExtUtils::MM_DOS
ExtUtils::MM_Darwin
ExtUtils::MM_MacOS
ExtUtils::MM_NW5
ExtUtils::MM_OS2
ExtUtils::MM_QNX
ExtUtils::MM_UWIN
ExtUtils::MM_Unix
ExtUtils::MM_VMS
ExtUtils::MM_VOS
ExtUtils::MM_Win32
ExtUtils::MM_Win95
ExtUtils::MY
ExtUtils::MakeMaker
ExtUtils::MakeMaker::Config
ExtUtils::MakeMaker::bytes
ExtUtils::MakeMaker::vmsish
ExtUtils::Manifest
ExtUtils::Miniperl
ExtUtils::Mkbootstrap
ExtUtils::Mksymlists
ExtUtils::Packlist
ExtUtils::ParseXS
ExtUtils::testlib
Fatal
Fcntl
File::Basename
File::CheckTree
File::Compare
File::Copy
File::DosGlob
File::Find
File::Glob
File::Path
File::Spec
File::Spec::Cygwin
File::Spec::Epoc
File::Spec::Functions
File::Spec::Mac
File::Spec::OS2
File::Spec::Unix
File::Spec::VMS
File::Spec::Win32
File::Temp
File::stat
FileCache
FileHandle
Filespec
Filter::Simple
Filter::Util::Call
FindBin
GDBM_File
Getopt::Long
Getopt::Std
Hash::Util
I18N::Collate
I18N::LangTags
I18N::LangTags::Detect
I18N::LangTags::List
I18N::Langinfo
IO
IO::Dir
IO::File
IO::Handle
IO::Pipe
IO::Poll
IO::Seekable
IO::Select
IO::Socket
IO::Socket::INET
IO::Socket::UNIX
IPC::Msg
IPC::Open2
IPC::Open3
IPC::Semaphore
IPC::SharedMem
IPC::SysV
IPC::lib::IPC::Msg
IPC::lib::IPC::Semaphore
IPC::lib::IPC::SharedMem
List::Util
Locale::Constants
Locale::Country
Locale::Currency
Locale::Language
Locale::Maketext
Locale::Maketext::Guts
Locale::Maketext::GutsLoader
Locale::Script
MIME::Base64
MIME::QuotedPrint
Math::BigFloat
Math::BigFloat::Trace
Math::BigInt
Math::BigInt::Calc
Math::BigInt::CalcEmu
Math::BigInt::Trace
Math::BigRat
Math::Complex
Math::Trig
Memoize
Memoize::AnyDBM_File
Memoize::Expire
Memoize::ExpireFile
Memoize::ExpireTest
Memoize::NDBM_File
Memoize::SDBM_File
Memoize::Storable
Module::CoreList
Module::Pluggable
Module::Pluggable::Object
Module::Pluggable::lib::Devel::InnerPackage
NDBM_File
NEXT
Net::Cmd
Net::Config
Net::Domain
Net::FTP
Net::FTP::A
Net::FTP::E
Net::FTP::I
Net::FTP::L
Net::FTP::dataconn
Net::NNTP
Net::Netrc
Net::POP3
Net::Ping
Net::SMTP
Net::Time
Net::hostent
Net::netent
Net::protoent
Net::servent
O
ODBM_File
Opcode
POSIX
PerlIO
PerlIO::encoding
PerlIO::scalar
PerlIO::via
PerlIO::via::QuotedPrint
Pod::Checker
Pod::Find
Pod::Functions
Pod::Html
Pod::InputObjects
Pod::LaTeX
Pod::Man
Pod::ParseLink
Pod::ParseUtils
Pod::Parser
Pod::Perldoc
Pod::Perldoc::BaseTo
Pod::Perldoc::GetOptsOO
Pod::Perldoc::ToChecker
Pod::Perldoc::ToMan
Pod::Perldoc::ToNroff
Pod::Perldoc::ToPod
Pod::Perldoc::ToRtf
Pod::Perldoc::ToText
Pod::Perldoc::ToTk
Pod::Perldoc::ToXml
Pod::PlainText
Pod::Plainer
Pod::Select
Pod::Text
Pod::Text::Color
Pod::Text::Overstrike
Pod::Text::Termcap
Pod::Usage
SDBM_File
Safe
Scalar::Util
Search::Dict
SelectSaver
SelfLoader
Shell
Socket
Stdio
Storable
Switch
Symbol
Sys::Hostname
Sys::Syslog
Sys::Syslog::win32::Win32
Term::ANSIColor
Term::Cap
Term::Complete
Term::ReadLine
Test
Test::Builder
Test::Builder::Module
Test::Builder::Tester
Test::Builder::Tester::Color
Test::Harness
Test::Harness::Assert
Test::Harness::Iterator
Test::Harness::Point
Test::Harness::Results
Test::Harness::Straps
Test::Harness::Util
Test::More
Test::Simple
Text::Abbrev
Text::Balanced
Text::ParseWords
Text::Soundex
Text::Tabs
Text::Wrap
Thread
Thread::Queue
Thread::Semaphore
Thread::Signal
Thread::Specific
Tie::Array
Tie::File
Tie::Handle
Tie::Hash
Tie::Memoize
Tie::RefHash
Tie::Scalar
Tie::StdHandle
Tie::SubstrHash
Time::HiRes
Time::Local
Time::gmtime
Time::localtime
Time::tm
UNIVERSAL
Unicode
Unicode::Collate
Unicode::Normalize
Unicode::UCD
User::grent
User::pwent
Win32
Win32API::File
Win32API::File::ExtUtils::Myconst2perl
Win32CORE
XS::APItest
XS::Typemap
XSLoader
XSSymSet
attributes
attrs
autouse
base
bigint
bignum
bigrat
blib
bytes
charnames
constant
diagnostics
encoding
fields
filetest
if
integer
less
lib
locale
open
ops
overload
re
sigtrap
sort
strict
subs
threads
threads::shared
utf8
vars
vmsish
warnings
warnings::register
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment