Updated to Drupal 8.5. Core Media not yet in use.
[yaffs-website] / vendor / consolidation / robo / src / TaskAccessor.php
diff --git a/vendor/consolidation/robo/src/TaskAccessor.php b/vendor/consolidation/robo/src/TaskAccessor.php
new file mode 100644 (file)
index 0000000..e65cd3e
--- /dev/null
@@ -0,0 +1,47 @@
+<?php
+namespace Robo;
+
+use Robo\Common\BuilderAwareTrait;
+
+trait TaskAccessor
+{
+    use BuilderAwareTrait;
+
+    /**
+     * Provides the collection builder with access to all of the
+     * protected 'task' methods available on this object.
+     *
+     * @param string $fn
+     * @param array $args
+     *
+     * @return null|\Robo\Collection\CollectionBuilder
+     */
+    public function getBuiltTask($fn, $args)
+    {
+        if (preg_match('#^task[A-Z]#', $fn)) {
+            return call_user_func_array([$this, $fn], $args);
+        }
+    }
+
+    /**
+     * Alternative access to instantiate. Use:
+     *
+     *   $this->task(Foo::class, $a, $b);
+     *
+     * instead of:
+     *
+     *   $this->taskFoo($a, $b);
+     *
+     * The later form is preferred.
+     *
+     * @return \Robo\Collection\CollectionBuilder
+     */
+    protected function task()
+    {
+        $args = func_get_args();
+        $name = array_shift($args);
+
+        $collectionBuilder = $this->collectionBuilder();
+        return $collectionBuilder->build($name, $args);
+    }
+}