tims-todo/tests/generate

146 lines
3.7 KiB
PHP
Executable File

#!/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();