#1188 Advanced customizations: allow to define a new constant or a brand new class as part of a delta

SVN:trunk[4222]
This commit is contained in:
Romain Quetiez
2016-06-16 15:25:05 +00:00
parent ff5a96f92d
commit 12857ceba1

View File

@@ -196,6 +196,10 @@ class MFCompiler
// Push the other module files
SetupUtils::copydir($sModuleRootDir, $sTempTargetDir.'/'.$sRelativeDir, $bUseSymbolicLinks);
}
else
{
$sRelativeDir = '';
}
$sCompiledCode = '';
@@ -361,33 +365,36 @@ EOF;
//
if (strlen($sCompiledCode) > 0)
{
// We have compiled something: write the result file
// We have compiled something: write the code somewhere
//
$sResultFile = $sTempTargetDir.'/'.$sRelativeDir.'/model.'.$sModuleName.'.php';
if (is_file($sResultFile))
if (strlen($sRelativeDir) > 0)
{
$this->Log("Updating $sResultFile for module $sModuleName in version $sModuleVersion ($iClassCount classes)");
}
else
{
$sResultDir = dirname($sResultFile);
if (!is_dir($sResultDir))
// Write the code into the given module as model.<module>.php
//
$sResultFile = $sTempTargetDir.'/'.$sRelativeDir.'/model.'.$sModuleName.'.php';
if (is_file($sResultFile))
{
$this->Log("Creating directory $sResultDir");
mkdir($sResultDir, 0777, true);
$this->Log("Updating $sResultFile for module $sModuleName in version $sModuleVersion ($iClassCount classes)");
} else
{
$sResultDir = dirname($sResultFile);
if (!is_dir($sResultDir))
{
$this->Log("Creating directory $sResultDir");
mkdir($sResultDir, 0777, true);
}
$this->Log("Creating $sResultFile for module $sModuleName in version $sModuleVersion ($iClassCount classes)");
}
$this->Log("Creating $sResultFile for module $sModuleName in version $sModuleVersion ($iClassCount classes)");
}
// Compile the module into a single file
//
$sId = $sModuleName;
$sCurrDate = date(DATE_ISO8601);
$sAuthor = 'iTop compiler';
$sLicence = 'http://opensource.org/licenses/AGPL-3.0';
$sFileHeader =
<<<EOF
<?php
// Compile the module into a single file
//
$sId = $sModuleName;
$sCurrDate = date(DATE_ISO8601);
$sAuthor = 'iTop compiler';
$sLicence = 'http://opensource.org/licenses/AGPL-3.0';
$sFileHeader =
<<<EOF
<?php
//
// File generated by ... on the $sCurrDate
// Please do not edit manually
@@ -401,13 +408,27 @@ EOF;
*/
EOF;
$ret = file_put_contents($sResultFile, $sFileHeader.$sCompiledCode);
if ($ret === false)
$ret = file_put_contents($sResultFile, $sFileHeader.$sCompiledCode);
if ($ret === false)
{
$iLen = strlen($sFileHeader.$sCompiledCode);
$fFree = @disk_free_space(dirname($sResultFile));
$aErr = error_get_last();
throw new Exception("Failed to write '$sResultFile'. Last error: '{$aErr['message']}', content to write: $iLen bytes, available free space on disk: $fFree.");
}
}
else
{
$iLen = strlen($sFileHeader.$sCompiledCode);
$fFree = @disk_free_space(dirname($sResultFile));
$aErr = error_get_last();
throw new Exception("Failed to write '$sResultFile'. Last error: '{$aErr['message']}', content to write: $iLen bytes, available free space on disk: $fFree.");
// Write the code into core/main.php
//
$this->sMainPHPCode .=
<<<EOF
/**
* Data model from the delta file
*/
EOF;
$this->sMainPHPCode .= $sCompiledCode;
}
}
else