Initial Drupal 11 with DDEV setup
This commit is contained in:
72
vendor/consolidation/robo/src/Task/File/TmpFile.php
vendored
Normal file
72
vendor/consolidation/robo/src/Task/File/TmpFile.php
vendored
Normal file
@ -0,0 +1,72 @@
|
||||
<?php
|
||||
|
||||
namespace Robo\Task\File;
|
||||
|
||||
use Robo\Contract\CompletionInterface;
|
||||
|
||||
/**
|
||||
* Create a temporary file that is automatically cleaned up
|
||||
* once the task collection is is part of completes. When created,
|
||||
* it is given a random filename.
|
||||
*
|
||||
* This temporary file may be manipulated exacatly like taskWrite().
|
||||
* It is deleted as soon as the collection it is a part of completes
|
||||
* or rolls back.
|
||||
*
|
||||
* ``` php
|
||||
* <?php
|
||||
* $collection = $this->collectionBuilder();
|
||||
* $tmpFilePath = $collection->taskTmpFile()
|
||||
* ->line('-----')
|
||||
* ->line(date('Y-m-d').' '.$title)
|
||||
* ->line('----')
|
||||
* ->getPath();
|
||||
* $collection->run();
|
||||
* ?>
|
||||
* ```
|
||||
*/
|
||||
class TmpFile extends Write implements CompletionInterface
|
||||
{
|
||||
/**
|
||||
* @param string $filename
|
||||
* @param string $extension
|
||||
* @param string $baseDir
|
||||
* @param bool $includeRandomPart
|
||||
*/
|
||||
public function __construct($filename = 'tmp', $extension = '', $baseDir = '', $includeRandomPart = true)
|
||||
{
|
||||
if (empty($baseDir)) {
|
||||
$baseDir = sys_get_temp_dir();
|
||||
}
|
||||
if ($includeRandomPart) {
|
||||
$random = static::randomString();
|
||||
$filename = "{$filename}_{$random}";
|
||||
}
|
||||
$filename .= $extension;
|
||||
parent::__construct("{$baseDir}/{$filename}");
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate a suitably random string to use as the suffix for our
|
||||
* temporary file.
|
||||
*
|
||||
* @param int $length
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
private static function randomString($length = 12)
|
||||
{
|
||||
return substr(str_shuffle('23456789abcdefghjkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'), 0, $length);
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete this file when our collection completes.
|
||||
* If this temporary file is not part of a collection,
|
||||
* then it will be deleted when the program terminates,
|
||||
* presuming that it was created by taskTmpFile() or _tmpFile().
|
||||
*/
|
||||
public function complete()
|
||||
{
|
||||
unlink($this->getPath());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user