どうにかして楽にbladeファイルを作成したい
LaravelでWebサービスを作成した際にbladeファイルを作るのがすごくめんどくさかった
いちいち以下のようなコマンドを打っていた
mkdir -p resources/views/shop mkdir -p resources/views/menu touch resources/views/shop/index.blade.php touch resources/views/menu/list.blade.php
めちゃくちゃめんどくさい
なのでテキストファイルを読み込んでそこに書かれているディレクトリとbladeファイルを作ってくれるコードを書いた
shellで書いてもいいのだけど、なんとかくPerlで書いてみようと思い書いてみた
file_list.txt
resources/views/shop/index.blade.php resources/views/shop/shop_information.blade.php resources/views/shop/shop_introduction.blade.php resources/views/shop/shop_other.blade.php resources/views/menu/sort.blade.php resources/views/menu/list.blade.php resources/views/menu/add.blade.php resources/views/menu/edit.blade.php resources/views/menu/delete.blade.php resources/views/staff/sort.blade.php resources/views/staff/list.blade.php resources/views/staff/add.blade.php resources/views/staff/edit.blade.php resources/views/staff/delete.blade.php
make_file_dir.pl
#!/usr/local/bin/perl my $make_dir_command = 'mkdir -p'; my $make_file_command = 'touch'; open(DATAFILE, "< file_list.txt") or die("error :$!"); if ($?) { print "エラーが発生しました。\n"; print "$make_file_command:$!", "\n"; } else { while (my $data = <DATAFILE>){ chomp($data); if ($data =~ /\//) { foreach my $row_data($data){ my $line = $row_data; #末尾から/以降を削除 $row_data =~ s/\/[^\/]*$//; system("$make_dir_command $row_data"); system("$make_file_command $line"); print "--実行コマンド--\n"; print "$make_dir_command $row_data\n"; print "$make_file_command $line\n"; } } else { print "/が含まれていません。\n"; } } }
実行結果
$ perl make_file_dir.pl --実行コマンド-- mkdir -p resources/views/shop touch resources/views/shop/index.blade.php --実行コマンド-- mkdir -p resources/views/shop touch resources/views/shop/shop_information.blade.php --実行コマンド-- mkdir -p resources/views/shop touch resources/views/shop/shop_introduction.blade.php --実行コマンド-- mkdir -p resources/views/shop touch resources/views/shop/shop_other.blade.php ... 省略 ...
もしかしたら初めのif文はいらないかもしれないけど一応
テキストファイルのデータが変数$dataに入っていて、foreachでデータ1行1行(resources/views/shop/index.blade.php などが)変数row_dataに入ってる
そして、一旦そのデータを変数lineに保持
次に変数row_dataの末尾の"/"以降の部分(index.blade.phpなど)を削除する
ここで変数row_dataにはディレクトリ名だけの値が入っている(例:resources/views/shop)
system() で指定したコマンドを実行
(参考:http://www.tohoho-web.com/perl/cmd.htm)
ディレクトリを作成している
$make_dir_command $row_data
ディレクトリが先に作られているので、ファイルを作成している
$make_file_command $line
これでできた!