diff --git a/bin/wpinit b/bin/wpinit index ddddb470a1f133790b74c4bf2128ea6bae1ae15a..f0f4db8d445475e07a7d66bc09c4d72fc7cdbdd5 100755 --- a/bin/wpinit +++ b/bin/wpinit @@ -16,36 +16,57 @@ function displayHelp() { echo "Initialize a WordPress plugin by parsing the input file and generating output.\n"; echo "\n"; echo "Arguments:\n"; - echo " <plugin_file> Path to the input file to parse\n"; echo " <cache_dir> Path to the output file to generate\n"; } +function get_possible_plugin_files(): array { + $plugins_dir = opendir(getcwd()); + $plugin_files = []; + while ( ( $file = readdir( $plugins_dir ) ) !== false ) { + if ( str_starts_with( $file, '.' ) || str_ends_with( $file, '.php' ) === false || is_dir( $file ) ) { + continue; + } + + $plugin_files[] = $file; + } + + closedir( $plugins_dir ); + + return $plugin_files; +} + if (in_array('--help', $argv) || in_array('-h', $argv)) { displayHelp(); exit(0); } -if ($argc < 3 || in_array('--help', $argv) || in_array('-h', $argv)) { +if ($argc < 2 || in_array('--help', $argv) || in_array('-h', $argv)) { echo "\033[31mError: Missing required arguments.\033[0m\n"; displayHelp(); exit(1); } -$inputFile = $argv[1]; -$outputDir = rtrim($argv[2], '/\\') . '/'; +$outputDir = rtrim($argv[1], '/\\') . '/'; -// Check if input file exists -if (!file_exists($inputFile)) { - echo "\033[31mError: Input file '$inputFile' does not exist.\033[0m\n"; - exit(1); +$parser = new DefaultHeaderParser(); +$plugin_header = []; + +foreach (get_possible_plugin_files() as $file) { + $plugin_header = $parser->parse($file); + + if (! empty($plugin_header)) { + break; + } } -try { - $parser = new DefaultHeaderParser(); - $data = $parser->parse($inputFile); +if (empty($plugin_header)) { + echo "\033[31mError: No plugin data found. File has to be accessible from project's root folder and include required WordPress plugin headers.\033[0m\n"; + exit(1); +} +try { $dumper = new PhpFileDumper(); - $dumper->dump($data, $outputDir . 'plugin.php'); + $dumper->dump($plugin_header, $outputDir . 'plugin.php'); echo "\033[32mSuccess: Plugin data generated.\033[0m\n"; exit(0);