CSS-Sass
view release on metacpan or search on metacpan
my $tag;
require File::Slurp;
@files = grep { m/.pm$/i } split /\r?\n/, `git ls-files`;
for(my $i = 0; $i < scalar(@ARGV) - 1; $i++) {
if ($ARGV[$i] eq "versionize") {
$tag = $ARGV[$i+1]; last;
}
}
unless ($tag) {
$tag = `git describe --abbrev=0 --always --tag`;
$tag =~ s/(?:\A\s+|\Av|\s+\z)//g;
unless ( $tag =~ m/(\d+\.\d+\.)(\d+)(?:\-|\z)/ )
{ die "tag <$tag> invalid (\\d+.\\d+.\\d+)\n"; }
# increment patch level
else { $tag = $1 . ($2 + 1); }
}
$tag =~ s/(?:\A\s+|\Av|\s+\z)//g;
print "update *.pm with new version <$tag>\n";
unless ( $tag =~ m/(\d+\.\d+\.)(\d+)(?:\-|\z)/ )
{ die "tag <$tag> invalid (\\d+.\\d+.\\d+)\n"; }
foreach my $filename (@files) {
my $data = File::Slurp::read_file($filename, { 'binmode' => ':raw' });
if ($data =~ s/$re_version/our \$VERSION = \"v$tag\";/i) {
next if $tag eq $1;
print " update version $filename (was $1)\n";
File::Slurp::write_file($filename, { 'binmode' => ':raw' }, $data);
}
}
} else {
die "git directory not found";
}
}
SUBCLASS
my $cover = $ARGV[0] && $ARGV[0] eq "cover=1" ? 1 : 0;
# create compile flags to include the libsass version (escape correctly)
my $version = ($^O ne "MSWin32") ? qq( -DLIBSASS_VERSION=\\"$libsass_version\\") :
qq( -DLIBSASS_VERSION=\\"\\\\\\"$libsass_version\\\\\\"\\");
my %config = (
module_name => 'CSS::Sass',
license => 'MIT',
dist_author => [q{David Caldwell <david@porkrind.org>},
q{Marcel Greter <perl-libsass@ocbnet.ch>}],
dist_version_from => 'lib/CSS/Sass.pm',
release_status => 'stable',
create_license => 0,
configure_requires => {
'Module::Build' => 0,
'File::chdir' => 0,
'File::Slurp' => 0,
},
build_requires => {
'Test::More' => 0,
'File::chdir' => 0,
},
test_requires => {
'File::chdir' => 0,
'Test::Differences' => 0,
},
requires => {
'perl' => '5.008',
'File::chdir' => 0,
'File::Slurp' => 0,
'List::MoreUtils' => 0,
},
meta_merge => {
resources => {
repository => 'https://github.com/sass/CSS-Sass',
},
},
add_to_cleanup => [ 'CSS-Sass-*' ],
extra_compiler_flags => ($cover ? ' -O0 -fprofile-arcs -ftest-coverage' : '') . ' -Wall' . $version,
$Config{cc} eq 'clang' ? (
# clang has a bunch of asinine warnings on by default:
extra_compiler_flags => '-Wno-parentheses -Wno-tautological-compare -Wno-unused-value' .
($cover ? ' -O0 -fprofile-arcs -ftest-coverage' : '') . $version,
) : (),
extra_cpp_compiler_flags => [ '-std=c++0x' ],
extra_linker_flags => ($cover ? '-lgcov -fprofile-arcs -ftest-coverage' : ''),
c_source => { 'libsass' => [ sort qw(
ast.cpp sass2scss.cpp node.cpp sass_util.cpp remove_placeholders.cpp json.cpp
base64vlq.cpp bind.cpp constants.cpp context.cpp contextualize.cpp plugins.cpp
error_handling.cpp eval.cpp expand.cpp cencode.c functions.cpp inspect.cpp
extend.cpp file.cpp output.cpp parser.cpp prelexer.cpp emitter.cpp position.cpp
sass.cpp sass_interface.cpp sass_functions.cpp sass_values.cpp sass_context.cpp
source_map.cpp to_c.cpp to_string.cpp units.cpp utf8_string.cpp util.cpp cssize.cpp
contextualize_eval.cpp listize.cpp lexer.cpp
) ]
},
config => { ld => 'c++' }, # Need to link with a C++ linker since libsass is C++ (even though the .xs file is not)
);
my $builder = Module::Build::Custom->new(%config);
$builder->create_build_script();
( run in 0.848 second using v1.01-cache-2.11-cpan-df04353d9ac )