diff --git a/bin/wpinit b/bin/wpinit new file mode 100755 index 0000000000000000000000000000000000000000..ddddb470a1f133790b74c4bf2128ea6bae1ae15a --- /dev/null +++ b/bin/wpinit @@ -0,0 +1,55 @@ +#!/usr/bin/env php +<?php + +use WPDesk\Init\Util\PhpFileDumper; +use WPDesk\Init\Plugin\DefaultHeaderParser; + +$autoloadPath = $_composer_autoload_path ?? __DIR__ . '/../vendor/autoload.php'; +if (!file_exists($autoloadPath)) { + echo "\033[31mError: Autoloader not found. Please run composer install.\033[0m\n"; + exit(1); +} +require_once $autoloadPath; + +function displayHelp() { + echo "Usage: " . basename(__FILE__) . " <plugin_file> <cache_dir>\n"; + 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"; +} + +if (in_array('--help', $argv) || in_array('-h', $argv)) { + displayHelp(); + exit(0); +} + +if ($argc < 3 || 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], '/\\') . '/'; + +// Check if input file exists +if (!file_exists($inputFile)) { + echo "\033[31mError: Input file '$inputFile' does not exist.\033[0m\n"; + exit(1); +} + +try { + $parser = new DefaultHeaderParser(); + $data = $parser->parse($inputFile); + + $dumper = new PhpFileDumper(); + $dumper->dump($data, $outputDir . 'plugin.php'); + + echo "\033[32mSuccess: Plugin data generated.\033[0m\n"; + exit(0); +} catch (Exception $e) { + echo "\033[31mError: " . $e->getMessage() . "\n" . $e->getTraceAsString() . "\033[0m\n"; + exit(1); +} diff --git a/composer.json b/composer.json index d033a98f4c23295d217fe47bf23d7e7ad464ddd4..c6376b433a58ee9e8110b58394ec0b09389c6efd 100644 --- a/composer.json +++ b/composer.json @@ -9,6 +9,9 @@ "plugin", "bootstrap" ], + "bin": [ + "bin/wpinit" + ], "authors": [ { "name": "WPDesk",