1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
|
<?php
/*
* $Id: 4d1292a8411d80ef7a4c09cbd730984d045fbdce $
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* This software consists of voluntary contributions made by many individuals
* and is licensed under the LGPL. For more information please see
* <http://phing.info>.
*/
require_once 'phing/Task.php';
include_once 'phing/system/io/PhingFile.php';
/**
* Task to create a directory.
*
* @author Andreas Aderhold, andi@binarycloud.com
* @version $Id: 4d1292a8411d80ef7a4c09cbd730984d045fbdce $
* @package phing.tasks.system
*/
class MkdirTask extends Task {
/** directory to create*/
private $dir;
/**
* Mode to create directory with
* @var integer
*/
private $mode = 0;
/**
* Sets up this object internal stuff. i.e. the default mode
*
* @return object The MkdirTask instance
* @access public
*/
function __construct() {
$this->mode = 0777 - umask();
}
/**
* create the directory and all parents
*
* @throws BuildException if dir is somehow invalid, or creation failed.
*/
function main() {
if ($this->dir === null) {
throw new BuildException("dir attribute is required", $this->location);
}
if ($this->dir->isFile()) {
throw new BuildException("Unable to create directory as a file already exists with that name: " . $this->dir->getAbsolutePath());
}
if (!$this->dir->exists()) {
$result = $this->dir->mkdirs($this->mode);
if (!$result) {
if ($this->dir->exists()) {
$this->log("A different process or task has already created " . $this->dir->getAbsolutePath());
return;
}
$msg = "Directory " . $this->dir->getAbsolutePath() . " creation was not successful for an unknown reason";
throw new BuildException($msg, $this->location);
}
$this->log("Created dir: " . $this->dir->getAbsolutePath());
}
}
/** the directory to create; required. */
function setDir(PhingFile $dir) {
$this->dir = $dir;
}
/**
* Sets mode to create directory with
* @param mixed $mode
*/
function setMode($mode)
{
$this->mode = base_convert((int) $mode, 8, 10);
}
}
|