#!/usr/bin/env php <?php /* * fooStack, CIUnit for CodeIgniter * Copyright (c) 2008-2009 Clemens Gruenberger * Released under the MIT license, see: * http://www.opensource.org/licenses/mit-license.php */ /** * generate fixtures from test database * fixtures are named according to convention and are only * created if they didin't exist before */ require_once (__DIR__ . '/bootstrap.php'); // Set the controller to the default controller. This allows us access to the // CI framework. set_controller(); /* * this function for extraction of command line arguments * might go back into some foo helper class */ function args_arr($arg_arr = false) { //extract commandline arguments if ($arg_arr === false) { $argv = $_SERVER['argv']; } else { $argv = $arg_arr; } array_shift($argv); $flags = array(); $params = array(); $args = array(); foreach ($argv as $arg) { $param_parts = preg_split('/=/', $arg); if (count($param_parts) == 2) { $params[$param_parts[0]] = $param_parts[1]; } else { if (substr($arg,0,1) == "-") { $flags[] = substr($arg, 1); } else { $args[] = $arg; } } } return array('params' => $params, 'flags' => $flags, 'args' => $args); } class Generate { function __construct() { $this->CI = &get_instance(); $this->CI->spyc = new Spyc(); $this->Ci->fixture = new Fixture(); $this->args_arr = args_arr(); $this->params = $this->args_arr['params']; $this->args = $this->args_arr['args']; $this->flags = $this->args_arr['flags']; if (isset($this->args[0])) { $function = $this->args[0]; $this->$function(); } else { echo " Please specify what task to run: e.g.: 'php generate fixtures' or 'php generate migration' flags can by specified by '-flag' parameters by 'PARAM=VALUE' e.g.: 'php generate fixtures -verbose' 'php generate fixtures db=different_db_than_default' To receive more information on a task type 'php generate help task' e.g.: 'php generate help migration' "; } } function fixtures() { $db = isset($this->params['db'])? $this->params['db']:'db'; $prefix = ($db == 'db2')? "db2_":""; /** * Update this controller to your default controller */ $this->CI = set_controller('welcome'); echo "generating...\n"; $this->CI->load->database(); $tables = $this->CI->$db->list_tables(); foreach ($tables as $table) { echo $table; $fields = $this->CI->$db->list_fields($table); $fixt_name= 'fixtures/'.$prefix.$table.'_fixt.yml'; if (file_exists($fixt_name)) { echo "fixture $fixt_name already exits!\n"; } else { $h = fopen($fixt_name, 'w') or die("can't open file"); //write fixture! foreach (array('1', '2', '3') as $rowname) { fwrite($h, $rowname.":\n"); foreach ($fields as $field) { //echo $field; fwrite($h, ' ' . $field . ": \n"); } fwrite($h, "\n"); } echo " *** fixture $fixt_name written.\n"; fclose($h); } } } } $gen = new Generate();