Skip to content

Commit

Permalink
Testing & refactoring in progress
Browse files Browse the repository at this point in the history
  • Loading branch information
rotimi committed Nov 8, 2023
1 parent d3dbe99 commit 85ebcea
Showing 1 changed file with 138 additions and 137 deletions.
275 changes: 138 additions & 137 deletions src/scripts/cli-script-helper-functions.php
Original file line number Diff line number Diff line change
Expand Up @@ -205,7 +205,7 @@ function processTemplateFile(string $target, string $dest, array $replaces) {
* @throws \InvalidArgumentException
* @throws \RuntimeException if this function is called in a script that is not run at the command line.
*/
function createController($argc, array $argv) {
function createController($argc, array $argv): void {

//////////////////////////////////////////
// START: Environment and Args Validation
Expand Down Expand Up @@ -257,91 +257,108 @@ function createController($argc, array $argv) {
) {
displayHelp(basename($argv[0]));

} else if (
(
$argc === 5
&& ( in_array('--controller-name', $argv) || in_array('-c', $argv) )
&& ( in_array('--path-to-src-folder', $argv) || in_array('-p', $argv) )
)
||
(
$argc >= 7
&& ( in_array('--controller-name', $argv) || in_array('-c', $argv) )
&& ( in_array('--path-to-src-folder', $argv) || in_array('-p', $argv) )
&& ( in_array('--extends-controller', $argv) || in_array('-e', $argv) )
)
) {
$templates_dir = dirname(__DIR__).$ds.'templates'.$ds;
$controller_name = getOptVal('--controller-name', $argv);
} else {

if($controller_name === '') {
if (
(
$argc === 5
&& ( in_array('--controller-name', $argv) || in_array('-c', $argv) )
&& ( in_array('--path-to-src-folder', $argv) || in_array('-p', $argv) )
)
||
(
$argc >= 7
&& ( in_array('--controller-name', $argv) || in_array('-c', $argv) )
&& ( in_array('--path-to-src-folder', $argv) || in_array('-p', $argv) )
&& ( in_array('--extends-controller', $argv) || in_array('-e', $argv) )
)
) {
$templates_dir = dirname(__DIR__).$ds.'templates'.$ds;
$controller_name = getOptVal('--controller-name', $argv);

$controller_name = getOptVal('-c', $argv);
}
if($controller_name === '') {

$studly_controller_name = \SlimMvcTools\Functions\Str\dashesToStudly($controller_name);
$controller_name = getOptVal('-c', $argv);
}

$dashed_controller_name = mb_strtolower($controller_name, 'UTF-8');
$studly_controller_name = \SlimMvcTools\Functions\Str\dashesToStudly($controller_name);

if( !isValidClassName($studly_controller_name) ) {
$dashed_controller_name = mb_strtolower($controller_name, 'UTF-8');

printError("Invalid controller class name `$controller_name` supplied. Goodbye!!");
return;
}
if( !isValidClassName($studly_controller_name) ) {

$src_folder_path = getOptVal('--path-to-src-folder', $argv);
printError("Invalid controller class name `$controller_name` supplied. Goodbye!!");
return;
}

if($src_folder_path === '') {
$src_folder_path = getOptVal('--path-to-src-folder', $argv);

$src_folder_path = getOptVal('-p', $argv);
}
if($src_folder_path === '') {

$src_folder_path = normalizeFolderPathForOs($src_folder_path);
$src_folder_path = getOptVal('-p', $argv);
}

if( !file_exists($src_folder_path) || !is_dir($src_folder_path) ) {
$src_folder_path = normalizeFolderPathForOs($src_folder_path);

printError("The src folder path `$src_folder_path` supplied is a non-existent directory. Goodbye!!");
return;
}
if( !file_exists($src_folder_path) || !is_dir($src_folder_path) ) {

////////////////////////////////////////////////////////////////////////////
$default_controller_2_extend = '\\' . \SlimMvcTools\Controllers\BaseController::class;
printError("The src folder path `$src_folder_path` supplied is a non-existent directory. Goodbye!!");
return;
}

$controller_2_extend = getOptVal('--extends-controller', $argv);
////////////////////////////////////////////////////////////////////////////
$default_controller_2_extend = '\\' . \SlimMvcTools\Controllers\BaseController::class;

if($controller_2_extend === '') {
$controller_2_extend = getOptVal('--extends-controller', $argv);

$controller_2_extend = getOptVal('-e', $argv);
if($controller_2_extend === '') {

if ($controller_2_extend !== '') {
$controller_2_extend = getOptVal('-e', $argv);

if( !isValidExtendsClassName($controller_2_extend) ) {
if ($controller_2_extend !== '') {

printError("Invalid controller class name `$controller_2_extend` for extension supplied. Goodbye!!");
return;
}
if( !isValidExtendsClassName($controller_2_extend) ) {

} else {
printError("Invalid controller class name `$controller_2_extend` for extension supplied. Goodbye!!");
return;
}

} else {

//use default controller class to be extended
$controller_2_extend = $default_controller_2_extend;
}
} elseif( !isValidExtendsClassName($controller_2_extend) ) {

//use default controller class to be extended
$controller_2_extend = $default_controller_2_extend;
printError("Invalid controller class name `$controller_2_extend` for extension supplied. Goodbye!!");
return;
}
} elseif( !isValidExtendsClassName($controller_2_extend) ) {

printError("Invalid controller class name `$controller_2_extend` for extension supplied. Goodbye!!");
return;
}
////////////////////////////////////////////////////////////////////////////
$namepace_declaration = '';
//omit namespace declaration by default
$namepace_4_controller = getOptVal('--namespace-4-controller', $argv);

if($namepace_4_controller === '') {

////////////////////////////////////////////////////////////////////////////
$namepace_declaration = '';
//omit namespace declaration by default
$namepace_4_controller = getOptVal('--namespace-4-controller', $argv);
$namepace_4_controller = getOptVal('-n', $argv);

if($namepace_4_controller === '') {
if($namepace_4_controller !== '') {

$namepace_4_controller = getOptVal('-n', $argv);
if( !isValidNamespaceName($namepace_4_controller) ) {

if($namepace_4_controller !== '') {
printError("Invalid namespace `$namepace_4_controller` supplied. Goodbye!!");
return;
}

//validation passed
$namepace_4_controller = normalizeNameSpaceName($namepace_4_controller);
$namepace_declaration = "namespace {$namepace_4_controller};";

} else {
$namepace_4_controller = '';
}
} else {

if( !isValidNamespaceName($namepace_4_controller) ) {

Expand All @@ -352,118 +369,102 @@ function createController($argc, array $argv) {
//validation passed
$namepace_4_controller = normalizeNameSpaceName($namepace_4_controller);
$namepace_declaration = "namespace {$namepace_4_controller};";

} else {
$namepace_4_controller = '';
}
} else {

if( !isValidNamespaceName($namepace_4_controller) ) {
//read template controller and substitute __TEMPLTATE_CONTROLLER__ with given controller name \SlimMvcTools\Functions\Str\dashesToStudly($controller_name_from_cli)
//write processed controller file to SMVC_APP_ROOT_PATH.$ds.'src'.$ds.'controllers'.$ds

printError("Invalid namespace `$namepace_4_controller` supplied. Goodbye!!");
//make the dir SMVC_APP_ROOT_PATH.$ds.'src'.$ds.'views'.$ds.\SlimMvcTools\Functions\Str\toDashes($controller_name_from_cli)
//read template controller index view and substitute __TEMPLTATE_CONTROLLER__ with given controller name \SlimMvcTools\Functions\Str\dashesToStudly($controller_name_from_cli)
//write processed controller file to SMVC_APP_ROOT_PATH.$ds.'src'.$ds.'views'.$ds.\SlimMvcTools\Functions\Str\toDashes($controller_name_from_cli)

$template_controller_file = $templates_dir.'controller-class-template.php.tpl';
$dest_controller_class_file_folder = $src_folder_path.'controllers'.$ds;
$dest_controller_class_file = $dest_controller_class_file_folder."{$studly_controller_name}.php";

if(
!file_exists($dest_controller_class_file_folder)
&& !mkdir($dest_controller_class_file_folder, 0775, true)
) {
printError("Failed to create `$dest_controller_class_file_folder`; the folder supposed to contain the controller named `$studly_controller_name`. Goodbye!!");
return;
}

//validation passed
$namepace_4_controller = normalizeNameSpaceName($namepace_4_controller);
$namepace_declaration = "namespace {$namepace_4_controller};";
}
$template_view_file = $templates_dir.'index-view-template.php';
$dest_view_file_folder = $src_folder_path.'views'.$ds."{$dashed_controller_name}{$ds}";
$dest_view_file = "{$dest_view_file_folder}index.php";

//read template controller and substitute __TEMPLTATE_CONTROLLER__ with given controller name \SlimMvcTools\Functions\Str\dashesToStudly($controller_name_from_cli)
//write processed controller file to SMVC_APP_ROOT_PATH.$ds.'src'.$ds.'controllers'.$ds
if(
!file_exists($dest_view_file_folder)
&& !mkdir($dest_view_file_folder, 0775, true)
) {
printError("Failed to create `$dest_view_file_folder`; the folder supposed to contain views for the controller named `$studly_controller_name`. Goodbye!!");
return;
}

//make the dir SMVC_APP_ROOT_PATH.$ds.'src'.$ds.'views'.$ds.\SlimMvcTools\Functions\Str\toDashes($controller_name_from_cli)
//read template controller index view and substitute __TEMPLTATE_CONTROLLER__ with given controller name \SlimMvcTools\Functions\Str\dashesToStudly($controller_name_from_cli)
//write processed controller file to SMVC_APP_ROOT_PATH.$ds.'src'.$ds.'views'.$ds.\SlimMvcTools\Functions\Str\toDashes($controller_name_from_cli)
if( file_exists($dest_controller_class_file) ) {

$template_controller_file = $templates_dir.'controller-class-template.php.tpl';
$dest_controller_class_file_folder = $src_folder_path.'controllers'.$ds;
$dest_controller_class_file = $dest_controller_class_file_folder."{$studly_controller_name}.php";
printError("Controller class `$studly_controller_name` already exists in `$dest_controller_class_file`. Goodbye!!");
return;
}

if(
!file_exists($dest_controller_class_file_folder)
&& !mkdir($dest_controller_class_file_folder, 0775, true)
) {
printError("Failed to create `$dest_controller_class_file_folder`; the folder supposed to contain the controller named `$studly_controller_name`. Goodbye!!");
return;
}
if( file_exists($dest_view_file) ) {

$template_view_file = $templates_dir.'index-view-template.php';
$dest_view_file_folder = $src_folder_path.'views'.$ds."{$dashed_controller_name}{$ds}";
$dest_view_file = "{$dest_view_file_folder}index.php";
printError("View file `$dest_view_file` already exists for Controller class `$studly_controller_name`. Goodbye!!");
return;
}

if(
!file_exists($dest_view_file_folder)
&& !mkdir($dest_view_file_folder, 0775, true)
) {
printError("Failed to create `$dest_view_file_folder`; the folder supposed to contain views for the controller named `$studly_controller_name`. Goodbye!!");
return;
}
printInfo("Creating Controller Class `$studly_controller_name` in `{$dest_controller_class_file}` ....");

if( file_exists($dest_controller_class_file) ) {
////////////////////////////////////////////////////////////////////////////
$replaces = [
'__CONTROLLER_2_EXTEND__' => $controller_2_extend,
'__TEMPLTATE_CONTROLLER__' => $studly_controller_name,
'namespace __NAMESPACE_2_REPLACE__;' => $namepace_declaration,
"'__login_success_redirect_controller__'" => "'{$dashed_controller_name}'",
];

printError("Controller class `$studly_controller_name` already exists in `$dest_controller_class_file`. Goodbye!!");
return;
}
if( processTemplateFile($template_controller_file, $dest_controller_class_file, $replaces) === false ) {

if( file_exists($dest_view_file) ) {
printError("Failed transforming template controller `$template_controller_file` to `$dest_controller_class_file`. Goodbye!!");

printError("View file `$dest_view_file` already exists for Controller class `$studly_controller_name`. Goodbye!!");
return;
}
} else {

printInfo("Creating Controller Class `$studly_controller_name` in `{$dest_controller_class_file}` ....");
printInfo("Successfully created `{$dest_controller_class_file}` ....".PHP_EOL);
}

////////////////////////////////////////////////////////////////////////////
$replaces = [
'__CONTROLLER_2_EXTEND__' => $controller_2_extend,
'__TEMPLTATE_CONTROLLER__' => $studly_controller_name,
'namespace __NAMESPACE_2_REPLACE__;' => $namepace_declaration,
"'__login_success_redirect_controller__'" => "'{$dashed_controller_name}'",
];
printInfo("Creating index view for `{$studly_controller_name}::actionIndex()` in `{$dest_view_file}` ....");

if( processTemplateFile($template_controller_file, $dest_controller_class_file, $replaces) === false ) {
$replaces['__TEMPLTATE_CONTROLLER__'] = rtrim($namepace_4_controller, '\\').'\\'.$studly_controller_name;

printError("Failed transforming template controller `$template_controller_file` to `$dest_controller_class_file`. Goodbye!!");
if( processTemplateFile($template_view_file, $dest_view_file, $replaces) === false ) {

} else {
printError("Failed creating index view for `{$studly_controller_name}::actionIndex()` in `{$dest_view_file}`.");
printInfo("Deleting `{$dest_controller_class_file}` ....");

printInfo("Successfully created `{$dest_controller_class_file}` ....".PHP_EOL);
}
if( !unlink($dest_controller_class_file) ) {

printInfo("Creating index view for `{$studly_controller_name}::actionIndex()` in `{$dest_view_file}` ....");
printInfo("Failed to delete `{$dest_controller_class_file}`. Please delete it manually. Goodbye!!");

$replaces['__TEMPLTATE_CONTROLLER__'] = rtrim($namepace_4_controller, '\\').'\\'.$studly_controller_name;
} else {

if( processTemplateFile($template_view_file, $dest_view_file, $replaces) === false ) {

printError("Failed creating index view for `{$studly_controller_name}::actionIndex()` in `{$dest_view_file}`.");
printInfo("Deleting `{$dest_controller_class_file}` ....");

if( !unlink($dest_controller_class_file) ) {
printInfo("Goodbye!!");
}

printInfo("Failed to delete `{$dest_controller_class_file}`. Please delete it manually. Goodbye!!");
return;

} else {

printInfo("Goodbye!!");
printInfo("Successfully created `{$dest_view_file}` ....".PHP_EOL);
}

return;
printInfo("All done!!");
printInfo("Remember to run `composer dumpautoload` so that composer can pick up the newly created controller class `$studly_controller_name` in `{$dest_controller_class_file}`.");

} else {

printInfo("Successfully created `{$dest_view_file}` ....".PHP_EOL);
/** @psalm-suppress MixedArgument */
displayHelp(basename($argv[0]));
}

printInfo("All done!!");

printInfo("Remember to run `composer dumpautoload` so that composer can pick up the newly created controller class `$studly_controller_name` in `{$dest_controller_class_file}`.");
//we are done

} else {
/** @psalm-suppress MixedArgument */
displayHelp(basename($argv[0]));
}
//////////////////////////////////
///END: COMMAND PROCESSING
Expand Down

0 comments on commit 85ebcea

Please sign in to comment.