2011年06月05日

コードジェネレーターというかスニペットというかセットアップスクリプトというかそういうのを、最近は以下のような感じで書いてる。

実際には Getopt::Long なんかと組み合わせて使う。

#!/usr/bin/env perl

use strict;
use warnings;
use File::Basename qw/dirname/;
use File::Path qw/mkpath/;
use File::Slurp qw/write_file/;
use Data::Section::Simple qw/get_data_section/;
use Text::Xslate;
use 5.12.1;

my $app = shift || die 'Usage: gen.pl app';

mkdir $app or die "$app: $!";
chdir $app;

my $xslate = Text::Xslate->new(type => 'text');

my $data = get_data_section();
for my $path (keys %$data) {
    my $content = $xslate->render_string($data->{$path}, { app => $app });
    $path = $xslate->render_string($path, { app => $app });

    my $dir = dirname $path;
    mkpath $dir or die "$dir: $!" unless -d $dir;

    say "written $path";
    write_file($path, $content) or die "$path: $!";
}

say 'done.';

__DATA__
@@ app.psgi
use strict;
use warnings;
sub {
    [200, [], ['Hello, <: $app :>']];
};
@@ conf/<: $app :>.pl
{
    home => '.',
};

実行結果

$ gen.pl Hoge
write conf/Hoge.pl
write app.psgi
done.

トラックバックURL

コメント一覧

1. Posted by kata kata cinta   2014年06月19日 08:22
非常に興味深い記事、私はこの記事を投稿してくれてありがとう、私は最新の記事を待っています、それを読むことは非常に満足しています。
2. Posted by エルメス バーキン ヴォーガリバー   2014年08月29日 02:17
http://www.sineidt.org.br/handbags/hermes-news-385.htmlエルメス ツールボックス ブログ
エルメス バーキン ヴォーガリバー http://www.sineidt.org.br/handbags/hermes-news-499.html
3. Posted by kata kata menunggu   2015年06月29日 03:25
ここで訪問することができますについては、ありがとうございました,,幸せ
4. Posted by Cetak Murah Rawamangun Jakarta Timur   2016年10月31日 05:08
非常に興味深い記事、私はこの記事を投稿してくれてありがとう、私は最新の記事を待っています、それを読むことは非常に満足しています。

コメントする

名前:
URL:
  情報を記憶: 評価:  顔   星
  絵文字
 
 
プロフィール

Perlが少しだけ出来る気になってます。
JavaScriptはよくわかりません。
Rubyもちんぷんかんぷんです。
Pythonは難しいです。
ActionScript勘弁してください。
Javaあばばばばば。
低級言語できません。

github
記事検索
  • ライブドアブログ