generator: use a proper destination
authorMichael Wallner <mike@php.net>
Tue, 25 Jan 2022 08:19:30 +0000 (09:19 +0100)
committerMichael Wallner <mike@php.net>
Tue, 25 Jan 2022 08:19:30 +0000 (09:19 +0100)
bin/stub2ref
composer.json
mdref/Generator.php

index f0d11b197151010aabe88d58a8c81793aecc5890..37e55f23b241cb17b8086c1d42511ed4d010c5c2 100755 (executable)
@@ -6,25 +6,30 @@ namespace mdref;
 require_once $_composer_autoload_path ?? __DIR__."/../vendor/autoload.php";
 
 if ($argc < 3) {
-       fprintf(STDERR, "Usage: cd ref-<ns> && %s <ns> <stub.php>\n", $argv[0]);
+       fprintf(STDERR, "Usage: %s <ns> <stub.php> [<destination>]\n", $argv[0]);
        exit(1);
 }
 
 $namespace = $argv[1];
 require_once $argv[2];
+$destination = ($argc > 3) ? $argv[3] : ".";
 
-if (!file_exists("$namespace.mdref")) {
-       fprintf(STDERR, "Missing $namespace.mdref; generated default.\n");
-       file_put_contents("$namespace.mdref", "./%s");
+if (!is_dir($destination)) {
+       fprintf(STDERR, "Missing $destination/; Making dir.");
+       mkdir($destination) || exit -1;
 }
-if (!file_exists("$namespace.md")) {
-       fprintf(STDERR, "Missing $namespace.md; hard linking README.md\n");
-       link(dirname($argv[2]) . "/README.md", "$namespace.md");
+if (!file_exists("$destination/$namespace.mdref")) {
+       fprintf(STDERR, "Missing $destination/$namespace.mdref; generated default.\n");
+       file_put_contents("$destination/$namespace.mdref", "./%s") || exit -2;
+}
+if (!file_exists("$destination/$namespace.md")) {
+       fprintf(STDERR, "Missing $destination/$namespace.md; hard linking README.md\n");
+       link(dirname($argv[2]) . "/README.md", "$destination/$namespace.md") || exit -3;
 }
 
 $inspector = new Inspector;
 $inspector->inspectNamespace($namespace);
 
-$generator = new Generator;
+$generator = new Generator($destination);
 $generator->generateFunctions($inspector->getFunctions());
 $generator->generateClasses($inspector->getClasses());
index 4a4999983bf2e0dd5777abb3c3e565b0076efd05..a66e582af4cebbdfcd418f812252632d7c874dc3 100644 (file)
@@ -20,7 +20,7 @@
         }
     },
     "require": {
-        "php": "^7.3 || ^8.0",
+        "php": "^7.4 || ^8.0",
         "ext-ctype": "*",
         "ext-filter": "*",
         "ext-pcre": "*",
index 84a323e522aef859437a51d0443edccdfbf1bba5..8cd96bd96215e0f54e4e61c865ac44a980c2f1a8 100644 (file)
@@ -5,13 +5,19 @@ namespace mdref;
 use mdref\Generator\{Cls, Func};
 
 class Generator {
+       protected string $destination;
+
+       public function __construct(string $destination = ".") {
+               $this->destination = $destination;
+       }
+
        /**
         * @param array<string, array<string, \ReflectionFunctionAbstract>> $functions
         * @return void
         */
        public function generateFunctions(array $functions) : void {
                foreach ($functions as $ns => $funcs) {
-                       $ns_path = strtr($ns, "\\", "/");
+                       $ns_path = $this->destination . "/" . strtr($ns, "\\", "/");
                        foreach ($funcs as $fn => $rf) {
                                $fn_file = "$ns_path/$fn.md";
                                fprintf(STDERR, "Generating %s\n", $fn_file);
@@ -27,7 +33,7 @@ class Generator {
         */
        public function generateClasses(array $classes) : void {
                foreach ($classes as $ns => $cls) {
-                       $ns_path = strtr($ns, "\\", "/");
+                       $ns_path = $this->destination . "/" . strtr($ns, "\\", "/");
                        foreach ($cls as $cn => $rc) {
                                $cn_path = "$ns_path/$cn";
                                $cn_file = "$cn_path.md";