Updated to Drupal 8.5. Core Media not yet in use.
[yaffs-website] / vendor / drush / drush / src / Utils / FsUtils.php
diff --git a/vendor/drush/drush/src/Utils/FsUtils.php b/vendor/drush/drush/src/Utils/FsUtils.php
new file mode 100644 (file)
index 0000000..b16d08f
--- /dev/null
@@ -0,0 +1,80 @@
+<?php
+
+namespace Drush\Utils;
+
+use Drush\Drush;
+use Drush\Sql\SqlBase;
+use Symfony\Component\Filesystem\Filesystem;
+use Webmozart\PathUtil\Path;
+
+class FsUtils
+{
+
+    /**
+     * Decide where our backup directory should go
+     *
+     * @param string $subdir
+     *   The name of the desired subdirectory(s) under drush-backups.
+     *   Usually a database name.
+     *
+     * @return
+     *   A path to the backup directory.
+     * @throws \Exception
+     */
+    public static function getBackupDir($subdir = null)
+    {
+        // Try to use db name as subdir if none was provided.
+        if (empty($subdir)) {
+            $subdir = 'unknown';
+            if ($sql = SqlBase::create()) {
+                $db_spec = $sql->getDbSpec();
+                $subdir = $db_spec['database'];
+            }
+        }
+
+        // Save the date to be used in the backup directory's path name.
+        $date = gmdate('YmdHis', $_SERVER['REQUEST_TIME']);
+        return Path::join(
+            Drush::config()->home(),
+            'drush-backups',
+            $subdir,
+            $date
+        );
+    }
+
+    /**
+     * Prepare a backup directory.
+     *
+     * @param string $subdir
+     *   A string naming the subdirectory of the backup directory.
+     *
+     * @return string
+     *   Path to the specified backup directory.
+     * @throws \Exception
+     */
+    public static function prepareBackupDir($subdir = null)
+    {
+        $fs = new Filesystem();
+        $backup_dir = self::getBackupDir($subdir);
+        $fs->mkdir($backup_dir);
+        return $backup_dir;
+    }
+
+    /**
+     * Returns canonicalized absolute pathname.
+     *
+     * The difference between this and PHP's realpath() is that this will
+     * return the original path even if it doesn't exist.
+     *
+     * @param string $path
+     *   The path being checked.
+     *
+     * @return string
+     *   The canonicalized absolute pathname.
+     */
+    public static function realpath($path)
+    {
+        $realpath = realpath($path);
+        return $realpath ?: $path;
+    }
+}