|
Luc Didry |
960163 |
# vim:set sw=4 ts=4 sts=4 ft=perl expandtab:
|
|
Luc Didry |
960163 |
package Lufi::Command::theme;
|
|
Luc Didry |
960163 |
use Mojo::Base 'Mojolicious::Commands';
|
|
Luc Didry |
960163 |
use FindBin qw($Bin);
|
|
Luc Didry |
960163 |
use File::Spec qw(catfile cat dir);
|
|
Luc Didry |
960163 |
use File::Path qw(make_path);
|
|
Luc Didry |
960163 |
|
|
Luc Didry |
960163 |
has description => 'Create new theme skeleton.';
|
|
Luc Didry |
960163 |
has usage => sub { shift->extract_usage };
|
|
Luc Didry |
960163 |
has message => sub { shift->extract_usage . "\nCreate new theme skeleton:\n" };
|
|
Luc Didry |
960163 |
has namespaces => sub { ['Lufi::Command::theme'] };
|
|
Luc Didry |
960163 |
|
|
Luc Didry |
960163 |
sub run {
|
|
Luc Didry |
960163 |
my $c = shift;
|
|
Luc Didry |
960163 |
my $name = shift;
|
|
Luc Didry |
960163 |
|
|
Luc Didry |
960163 |
unless (defined $name) {
|
|
Luc Didry |
960163 |
say $c->extract_usage;
|
|
Luc Didry |
960163 |
exit 1;
|
|
Luc Didry |
960163 |
}
|
|
Luc Didry |
960163 |
|
|
Luc Didry |
960163 |
my $home = File::Spec->catdir($Bin, '..', 'themes', $name);
|
|
Luc Didry |
960163 |
|
|
Luc Didry |
960163 |
unless (-d $home) {
|
|
Luc Didry |
960163 |
|
|
Luc Didry |
960163 |
# Create skeleton
|
|
Luc Didry |
960163 |
mkdir $home;
|
|
Luc Didry |
960163 |
mkdir File::Spec->catdir($home, 'public');
|
|
Luc Didry |
960163 |
make_path(File::Spec->catdir($home, 'templates', 'layouts'));
|
|
Luc Didry |
960163 |
make_path(File::Spec->catdir($home, 'lib', 'Lufi', 'I18N'));
|
|
Luc Didry |
960163 |
|
|
Luc Didry |
960163 |
my $i18n = <
|
|
Luc Didry |
960163 |
# vim:set sw=4 ts=4 sts=4 ft=perl expandtab:
|
|
Luc Didry |
960163 |
package Lufi::I18N;
|
|
Luc Didry |
960163 |
|
|
Luc Didry |
960163 |
use base 'Locale::Maketext';
|
|
Luc Didry |
960163 |
use File::Basename qw/dirname/;
|
|
Luc Didry |
960163 |
use Locale::Maketext::Lexicon {
|
|
Luc Didry |
960163 |
_auto => 1,
|
|
Luc Didry |
960163 |
_decode => 1,
|
|
Luc Didry |
960163 |
_style => 'gettext',
|
|
Luc Didry |
960163 |
'*' => [
|
|
Luc Didry |
960163 |
Gettext => dirname(__FILE__) . '/I18N/*.po',
|
|
Luc Didry |
960163 |
Gettext => dirname(__FILE__) . '/../../../default/lib/Lufi/I18N/*.po',
|
|
Luc Didry |
960163 |
]
|
|
Luc Didry |
960163 |
};
|
|
Luc Didry |
960163 |
|
|
Luc Didry |
960163 |
1;
|
|
Luc Didry |
960163 |
EOF
|
|
Luc Didry |
960163 |
|
|
Luc Didry |
960163 |
open my $f, '>', File::Spec->catfile($home, 'lib', 'Lufi', 'I18N.pm') or die "Unable to open $home/lib/Lufi/I18N.pm: $!";
|
|
Luc Didry |
960163 |
print $f $i18n;
|
|
Luc Didry |
960163 |
close $f;
|
|
Luc Didry |
960163 |
|
|
Luc Didry |
960163 |
my $makefile = <
|
|
Luc Didry |
960163 |
EN=lib/Lufi/I18N/en.po
|
|
Luc Didry |
960163 |
FR=lib/Lufi/I18N/fr.po
|
|
Luc Didry |
378c66 |
IT=lib/Lufi/I18N/it.po
|
|
Luc Didry |
9d5bb7 |
OC=lib/Lufi/I18N/oc.po
|
|
Luc Didry |
960163 |
SEDOPTS=-e "s\@SOME DESCRIPTIVE TITLE\@Lufi language file\@" \\
|
|
Luc Didry |
960163 |
-e "s\@YEAR THE PACKAGE'S COPYRIGHT HOLDER\@2015 Luc Didry\@" \\
|
|
Luc Didry |
960163 |
-e "s\@CHARSET\@utf8\@" \\
|
|
Luc Didry |
960163 |
-e "s\@the PACKAGE package\@the Lufi package\@" \\
|
|
Luc Didry |
960163 |
-e '/^\\#\\. (/{N;/\\n\\#\\. (/{N;/\\n.*\\.\\.\\/default\\//{s/\\#\\..*\\n.*\\#\\./\\#. (/g}}}' \\
|
|
Luc Didry |
5754ac |
-e '/^\\#\\. (/{N;/\\n.*\\.\\.\\/default\\//{s/\\n/ /}}'
|
|
Luc Didry |
960163 |
SEDOPTS2=-e '/^\\#.*\\.\\.\\/default\\//,+3d'
|
|
Luc Didry |
960163 |
XGETTEXT=carton exec ../../local/bin/xgettext.pl
|
|
Luc Didry |
960163 |
CARTON=carton exec
|
|
Luc Didry |
960163 |
|
|
Luc Didry |
960163 |
locales:
|
|
Luc Didry |
960163 |
\$(XGETTEXT) -D templates -D ../default/templates -o \$(EN) 2>/dev/null
|
|
Luc Didry |
960163 |
\$(XGETTEXT) -D templates -D ../default/templates -o \$(FR) 2>/dev/null
|
|
Luc Didry |
378c66 |
\$(XGETTEXT) -D templates -D ../default/templates -o \$(IT) 2>/dev/null
|
|
Luc Didry |
9d5bb7 |
\$(XGETTEXT) -D templates -D ../default/templates -o \$(OC) 2>/dev/null
|
|
Luc Didry |
960163 |
sed \$(SEDOPTS) -i \$(EN)
|
|
Luc Didry |
960163 |
sed \$(SEDOPTS2) -i \$(EN)
|
|
Luc Didry |
960163 |
sed \$(SEDOPTS) -i \$(FR)
|
|
Luc Didry |
960163 |
sed \$(SEDOPTS2) -i \$(FR)
|
|
Luc Didry |
378c66 |
sed \$(SEDOPTS) -i \$(IT)
|
|
Luc Didry |
378c66 |
sed \$(SEDOPTS2) -i \$(IT)
|
|
Luc Didry |
9d5bb7 |
sed \$(SEDOPTS) -i \$(OC)
|
|
Luc Didry |
9d5bb7 |
sed \$(SEDOPTS2) -i \$(OC)
|
|
Luc Didry |
960163 |
EOF
|
|
Luc Didry |
960163 |
|
|
Luc Didry |
960163 |
open $f, '>', File::Spec->catfile($home, 'Makefile') or die "Unable to open $home/Makefile: $!";
|
|
Luc Didry |
960163 |
print $f $makefile;
|
|
Luc Didry |
960163 |
close $f;
|
|
Luc Didry |
960163 |
} else {
|
|
Luc Didry |
960163 |
say "$name theme already exists. Aborting.";
|
|
Luc Didry |
960163 |
exit 1;
|
|
Luc Didry |
960163 |
}
|
|
Luc Didry |
960163 |
}
|
|
Luc Didry |
960163 |
|
|
Luc Didry |
960163 |
=encoding utf8
|
|
Luc Didry |
960163 |
|
|
Luc Didry |
960163 |
=head1 NAME
|
|
Luc Didry |
960163 |
|
|
Luc Didry |
960163 |
Lufi::Command::theme - Create new theme skeleton.
|
|
Luc Didry |
960163 |
|
|
Luc Didry |
960163 |
=head1 SYNOPSIS
|
|
Luc Didry |
960163 |
|
|
Luc Didry |
960163 |
Usage: script/lufi theme THEME_NAME
|
|
Luc Didry |
960163 |
|
|
Luc Didry |
960163 |
Your new theme will be available in the themes directory.
|
|
Luc Didry |
960163 |
=cut
|
|
Luc Didry |
960163 |
|
|
Luc Didry |
960163 |
1;
|