Example #1
0
 /**
  * Acción de inicio del controlador.
  */
 public function start()
 {
     // Acciones del padre (ayuda y demás).
     parent::start();
     // Definicion de PATH's.
     $this->base_dir = APP_BASE . DS . 'base' . DS;
     $this->p_dir = APP_BASE . DS . 'marifa' . DS;
     // Listado de path a omitir.
     $this->skip_list = array($this->base_dir . 'decoda/');
     // Arreglo de archivos.
     $this->archivos_generados = array();
     $this->archivos_iniciales = array();
     $this->listado_archivos($this->p_dir);
     // Limpiamos el directorio de clases.
     @mkdir($this->p_dir, 0777, TRUE);
     $rst = $this->recursive_search(APP_BASE . DS . 'base');
     foreach (array_intersect($this->archivos_iniciales, array_diff($this->archivos_generados, $this->archivos_iniciales)) as $k) {
         $this->unlinkr($k);
     }
     foreach (array('CLASES' => 0, 'INTERFACES' => 3) as $n => $v) {
         if ($rst[1 + $v] == 0) {
             $tail = "SIN ERRORES\n";
         } else {
             $tail = "CORRECTAMENTE\n{$rst[1 + $v]} {$n} CON ERRORES\n";
         }
         $p = $rst[2 + $v] > 1 ? 'PROCESADAS' : 'PROCESADA';
         $nn = $rst[2 + $v] > 1 ? $n : substr($n, 0, -1);
         if ($rst[0 + $v] == 0) {
             Shell_Cli::write("{$rst[2 + $v]} {$nn} {$p} {$tail}");
         } else {
             Shell_Cli::write("{$rst[2 + $v]}+{$rst[0 + $v]} {$nn} {$p} {$tail}");
         }
     }
 }
Example #2
0
 /**
  * Función de inicio del controlador.
  */
 public function start()
 {
     parent::start();
     $action = isset($this->params[1]) ? $this->params[1] : NULL;
     // Seleccionamos la acción a tomar.
     switch ($action) {
         case 'apply':
             // Verificamos conección y verificamos exista la tabla.
             self::check_db_status();
             // Obtenemos las versiones instaladas.
             try {
                 $lista = Database::get_instance()->query('SELECT numero, fecha FROM migraciones')->get_pairs();
             } catch (Database_Exception $e) {
                 Shell_Cli::write_line(Shell_Cli::get_colored_string('Error ', 'red') . $e->getCode() . ': ' . $e->getMessage());
             }
             // Obtenemos las faltantes.
             $migraciones = Shell_Migraciones::migraciones();
             $faltantes = array_diff($migraciones, array_keys($lista));
             // Verifico si especificó alguna en especial.
             if (isset($this->params[2])) {
                 $migracion = (int) $this->params[2];
                 // Verifico no esté aplicada aún.
                 if (in_array($migracion, $lista)) {
                     Shell_Cli::write_line(Shell_Cli::get_colored_string('ERROR: ', 'red') . 'La migracion ' . $migracion . ' ya se encuentra aplicada.');
                 }
                 // Verifico su existencia.
                 if (!in_array($migracion, $migraciones)) {
                     Shell_Cli::write_line(Shell_Cli::get_colored_string('ERROR: ', 'red') . 'La migracion ' . $migracion . ' no se encuentra disponible.');
                 }
                 // Sobreescribo faltantes.
                 $faltantes = array($migracion);
             }
             // Aplicamos las faltantes.
             foreach ($faltantes as $f) {
                 try {
                     Shell_Cli::write('Aplicando migracion ' . $f . '... ');
                     if (Shell_Migraciones::migrar($f)) {
                         Shell_Cli::write_line(Shell_Cli::get_colored_string('OK', 'green'));
                     }
                 } catch (Exception $e) {
                     Shell_Cli::write_line(Shell_Cli::get_colored_string('ERROR ', 'red') . $e->getCode() . ': ' . $e->getMessage());
                     die;
                 }
             }
             // Informamos que todo fue correcto.
             Shell_Cli::write_line(Shell_Cli::get_colored_string('Migraciones aplicadas correctamente.', 'green'));
             break;
         case 'status':
         default:
             // Verificamos conección y verificamos exista la tabla.
             self::check_db_status();
             // Obtenemos las versiones instaladas.
             try {
                 $lista = Database::get_instance()->query('SELECT numero, fecha FROM migraciones')->get_pairs();
             } catch (Database_Exception $e) {
                 Shell_Cli::write_line(Shell_Cli::get_colored_string('Error ', 'red') . $e->getCode() . ': ' . $e->getMessage());
             }
             // Obtenemos las pentientes.
             $migraciones = Shell_Migraciones::migraciones();
             $faltantes = array_diff($migraciones, array_keys($lista));
             // Mostramos la salida.
             if (count($migraciones) == 0) {
                 Shell_Cli::write_line('No hay migraciones definidas aún.');
             } else {
                 if (count($faltantes) == 0) {
                     Shell_Cli::write_line('No hay migraciones pendientes.');
                 } else {
                     if (count($faltantes) == 1) {
                         Shell_Cli::write_line('Falta aplicar la migración ' . array_shift($faltantes) . '.');
                     } else {
                         Shell_Cli::write_line('Faltan aplicar las siguiente migraciones:');
                         foreach ($faltantes as $f) {
                             Shell_Cli::write_line('  - ' . $f);
                         }
                     }
                 }
             }
     }
 }