Ethna Generator 改良

CLIを作る際に

ethna -add-action -g=cli test

又は

ethna -add-action –gateway=cli test

とやればコマンドラインからでも叩けるスクリプトが生成されるんだけど
そのままでは直接叩くファイルが生成されない
こういうの

php プロジェクトまでのパス/bin/test.php

というわけで、ethnaコマンドで同時にこのファイルも生成されるよう修正してみた
かなり荒いけど・・・

先ず、skelディレクトリにskel.bin.phpを作成して以下をコピペ

<?php
/**
 *  {$action_name}.php
 *
 *  @author     {$author}
 *  @package    
 *  @version
 */
chdir(dirname(__FILE__));
include_once('{$dir_app}/{$project_id}_Controller.php');

ini_set('max_execution_time', 0);

{$project_id}_Controller::main_CLI('{$project_id}_Controller', '{$action_name}');
?>

次に

pearまでのパス\Ethna\class\Plugin\Generator.php

に下記を追加

@@ -108,6 +108,29 @@
             return false;
         }
 
+		if(strpos($skel, "cli")){
+			$resolved = $this->_resolveSkelfile('skel.bin.php');
+			$template = file_get_contents($resolved);
+	        foreach ($macro as $k => $v) {
+				switch($k){
+        			case 'project_id':
+        			$v = ucfirst($v);
+        			break;
+        			case 'action_name':
+        			$v = strtolower($v);
+        			$filename = $v;
+        			break;
+				}
+				$template = preg_replace("/{\\\$$k}/", $v, $template);
+	        }
+	        file_put_contents(
+	        	sprintf("%s/bin/%s.php",
+	        		$this->ctl->getBasedir(),
+	        		$filename),
+	        		$template
+	        );
+        }
+
         printf("file generated [%s -> %s]\n", $skel, $entity);
 
         return true;

すると、CLIを指定した時に、app/action_cliの中だけでなくbinの中にもファイルが生成される
後はphpで叩くだけ!

CLI専用ジェネレータープラグインとして、ここだけ継承出来るようにしたら汎用性が高くなるかなー

呼び出しメソッド名の先頭がアンダーバーになってるのはEthnaのPHP5対応が行き渡ってないからだと思う・・・

One Reply to “Ethna Generator 改良”

Leave a Reply

Your email address will not be published. Required fields are marked *

*

This site uses Akismet to reduce spam. Learn how your comment data is processed.