Added new dynamic constant %BUILD_OUTPUT_PATH%
which can be used as %BUILD_OUTPUT_PATH%:release
to show the output path of a specific build configuration
This commit is contained in:
parent
f5433c6bf9
commit
c40c7ce8fe
3 changed files with 53 additions and 4 deletions
|
@ -10,7 +10,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||||
This update introduces minor bug fixes & improvements
|
This update introduces minor bug fixes & improvements
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
- Added new constant '%DEFAULT_BUILD_CONFIGURATION%' which points to the project's default build configuration
|
- Added new constant `%DEFAULT_BUILD_CONFIGURATION%` which points to the project's default build configuration
|
||||||
|
- Added new dynamic constant `%BUILD_OUTPUT_PATH%` which can be used as `%BUILD_OUTPUT_PATH%:release` to show the
|
||||||
|
output path of a specific build configuration
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
- ncc will now correctly handle package execution where the main unit is not defined in the package instead of
|
- ncc will now correctly handle package execution where the main unit is not defined in the package instead of
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
|
|
||||||
namespace ncc\Classes\NccExtension;
|
namespace ncc\Classes\NccExtension;
|
||||||
|
|
||||||
|
use InvalidArgumentException;
|
||||||
use ncc\Enums\SpecialConstants\BuildConstants;
|
use ncc\Enums\SpecialConstants\BuildConstants;
|
||||||
use ncc\Enums\SpecialConstants\DateTimeConstants;
|
use ncc\Enums\SpecialConstants\DateTimeConstants;
|
||||||
use ncc\Enums\SpecialConstants\GeneralConstants;
|
use ncc\Enums\SpecialConstants\GeneralConstants;
|
||||||
|
@ -53,6 +54,14 @@
|
||||||
return $input;
|
return $input;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Compiles general constants from the given input string based on the provided project configuration.
|
||||||
|
*
|
||||||
|
* @param string|null $input The input string containing constants to be compiled.
|
||||||
|
* @param ProjectConfiguration $project_configuration The project configuration used to resolve constants.
|
||||||
|
* @return string|null The input string with constants replaced, or null if the input was null.
|
||||||
|
*/
|
||||||
public static function compileGeneralConstants(?string $input, ProjectConfiguration $project_configuration): ?string
|
public static function compileGeneralConstants(?string $input, ProjectConfiguration $project_configuration): ?string
|
||||||
{
|
{
|
||||||
if ($input === null)
|
if ($input === null)
|
||||||
|
@ -60,16 +69,49 @@
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
return str_replace(
|
// Replace %DEFAULT_BUILD_CONFIGURATION%
|
||||||
|
$input = str_replace(
|
||||||
[
|
[
|
||||||
GeneralConstants::DEFAULT_BUILD_CONFIGURATION->value
|
GeneralConstants::DEFAULT_BUILD_CONFIGURATION->value
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
$project_configuration->getBuild()->getDefaultConfiguration()
|
$project_configuration->getBuild()->getDefaultConfiguration()
|
||||||
],
|
],
|
||||||
|
|
||||||
$input
|
$input
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if (str_starts_with($input, GeneralConstants::BUILD_OUTPUT_PATH->value))
|
||||||
|
{
|
||||||
|
$build_name = null;
|
||||||
|
if (preg_match('/' . preg_quote(GeneralConstants::BUILD_OUTPUT_PATH->value, '/') . ':(\S+)/', $input, $matches))
|
||||||
|
{
|
||||||
|
$build_name = $matches[1];
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($build_name === null)
|
||||||
|
{
|
||||||
|
Console::outWarning(sprintf("Cannot compile constant %s because it's not valid, usage: %%CONSTANT%%:<name>", $input));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
$output_path = $project_configuration->getBuild()->getBuildConfiguration($build_name)->getOutput();
|
||||||
|
$input = preg_replace(
|
||||||
|
'/' . preg_quote(GeneralConstants::BUILD_OUTPUT_PATH->value, '/') . ':\S+/',
|
||||||
|
$output_path,
|
||||||
|
$input,
|
||||||
|
1
|
||||||
|
);
|
||||||
|
}
|
||||||
|
catch (InvalidArgumentException $e)
|
||||||
|
{
|
||||||
|
Console::outError(sprintf("Cannot compile constant %s because it does not point to an existing build configuration name", $input));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $input;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -29,4 +29,9 @@
|
||||||
* The project's default build configuration
|
* The project's default build configuration
|
||||||
*/
|
*/
|
||||||
case DEFAULT_BUILD_CONFIGURATION = '%DEFAULT_BUILD_CONFIGURATION%';
|
case DEFAULT_BUILD_CONFIGURATION = '%DEFAULT_BUILD_CONFIGURATION%';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Configurable build output path
|
||||||
|
*/
|
||||||
|
case BUILD_OUTPUT_PATH = '%BUILD_OUTPUT_PATH%';
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue