diff --git a/Neos.ContentRepository.BehavioralTests/Classes/Command/PerformanceMeasurementCommandController.php b/Neos.ContentRepository.BehavioralTests/Classes/Command/PerformanceMeasurementCommandController.php
index 5423f286e0f..20b95cb0281 100644
--- a/Neos.ContentRepository.BehavioralTests/Classes/Command/PerformanceMeasurementCommandController.php
+++ b/Neos.ContentRepository.BehavioralTests/Classes/Command/PerformanceMeasurementCommandController.php
@@ -37,7 +37,11 @@ public function __construct(
}
/**
- * @throws \Throwable
+ * Prepare the performance test by removing existing data and creating nodes for the test.
+ *
+ * @param int $nodesPerLevel The number of nodes to create per level.
+ * @param int $levels The number of levels in the node tree.
+ * @internal
*/
public function preparePerformanceTestCommand(int $nodesPerLevel, int $levels): void
{
@@ -51,7 +55,9 @@ public function preparePerformanceTestCommand(int $nodesPerLevel, int $levels):
}
/**
- * @throws \Throwable
+ * Test the performance of forking a content stream and measure the time taken.
+ *
+ * @internal
*/
public function testPerformanceCommand(): void
{
diff --git a/Neos.ContentRepository.BehavioralTests/Classes/ProjectionRaceConditionTester/Command/RaceConditionTrackerCommandController.php b/Neos.ContentRepository.BehavioralTests/Classes/ProjectionRaceConditionTester/Command/RaceConditionTrackerCommandController.php
index bd96c289904..6c50a6f55af 100644
--- a/Neos.ContentRepository.BehavioralTests/Classes/ProjectionRaceConditionTester/Command/RaceConditionTrackerCommandController.php
+++ b/Neos.ContentRepository.BehavioralTests/Classes/ProjectionRaceConditionTester/Command/RaceConditionTrackerCommandController.php
@@ -35,12 +35,23 @@ final class RaceConditionTrackerCommandController extends CommandController
*/
protected $configuration;
+ /**
+ * Reset the race condition tracker by clearing the stored traces in Redis.
+ * @internal
+ */
public function resetCommand(): void
{
RedisInterleavingLogger::connect($this->configuration['redis']['host'], $this->configuration['redis']['port']);
RedisInterleavingLogger::reset();
}
+
+ /**
+ * Analyze the stored trace and detect race conditions and double-processed events.
+ *
+ * @param string|null $storeTrace The path to store the full trace in NDJSON format (optional).
+ * @internal
+ */
public function analyzeTraceCommand(string $storeTrace = null): void
{
RedisInterleavingLogger::connect($this->configuration['redis']['host'], $this->configuration['redis']['port']);
diff --git a/Neos.ContentRepositoryRegistry/Classes/Command/ContentCommandController.php b/Neos.ContentRepositoryRegistry/Classes/Command/ContentCommandController.php
index 62005598387..c32ebe72467 100644
--- a/Neos.ContentRepositoryRegistry/Classes/Command/ContentCommandController.php
+++ b/Neos.ContentRepositoryRegistry/Classes/Command/ContentCommandController.php
@@ -39,6 +39,15 @@ public function __construct(
parent::__construct();
}
+ /**
+ * Refreshes the root node dimensions in the specified content repository for the specified workspace.
+ *
+ * In the content repository, the root node has to cover all existing dimension space points.
+ * With this command, the root node can be updated such that it represents all configured dimensions
+ *
+ * @param string $contentRepository The content repository identifier. (Default: 'default')
+ * @param string $workspace The workspace name. (Default: 'live')
+ */
public function refreshRootNodeDimensionsCommand(string $contentRepository = 'default', string $workspace = WorkspaceName::WORKSPACE_NAME_LIVE): void
{
$contentRepositoryId = ContentRepositoryId::fromString($contentRepository);
@@ -72,6 +81,22 @@ public function refreshRootNodeDimensionsCommand(string $contentRepository = 'de
$this->outputLine('Done!');
}
+ /**
+ * Moves a dimension space point from the source to the target in the specified workspace and content repository.
+ *
+ * With this command all nodes for a given content dimension can be moved to a different dimension. This can be necessary
+ * if a dimension configuration has been added or renamed.
+ *
+ * *Note:* source and target dimensions have to be specified as JSON, for example:
+ * ```
+ * ./flow content:movedimensionspacepoint '{"language": "de"}' '{"language": "en"}'
+ * ```
+ *
+ * @param string $source The JSON representation of the source dimension space point. (Example: '{"language": "de"}')
+ * @param string $target The JSON representation of the target dimension space point. (Example: '{"language": "en"}')
+ * @param string $contentRepository The content repository identifier. (Default: 'default')
+ * @param string $workspace The workspace name. (Default: 'live')
+ */
public function moveDimensionSpacePointCommand(string $source, string $target, string $contentRepository = 'default', string $workspace = WorkspaceName::WORKSPACE_NAME_LIVE): void
{
$contentRepositoryId = ContentRepositoryId::fromString($contentRepository);
@@ -98,6 +123,21 @@ public function moveDimensionSpacePointCommand(string $source, string $target, s
$this->outputLine('Done!');
}
+ /**
+ * Creates node variants recursively from the source to the target dimension space point in the specified workspace and content repository.
+ *
+ * This can be necessary if a new content dimension specialization was added (for example a more specific language)
+ *
+ * *Note:* source and target dimensions have to be specified as JSON, for example:
+ * ```
+ * ./flow content:createvariantsrecursively '{"language": "de"}' '{"language": "de_ch"}'
+ * ```
+ *
+ * @param string $source The JSON representation of the source dimension space point. (Example: '{"language": "de"}')
+ * @param string $target The JSON representation of the target origin dimension space point. (Example: '{"language": "en"}')
+ * @param string $contentRepository The content repository identifier. (Default: 'default')
+ * @param string $workspace The workspace name. (Default: 'live')
+ */
public function createVariantsRecursivelyCommand(string $source, string $target, string $contentRepository = 'default', string $workspace = WorkspaceName::WORKSPACE_NAME_LIVE): void
{
$contentRepositoryId = ContentRepositoryId::fromString($contentRepository);
diff --git a/Neos.ContentRepositoryRegistry/Classes/Command/CrCommandController.php b/Neos.ContentRepositoryRegistry/Classes/Command/CrCommandController.php
index c50a34e0289..593904438c7 100644
--- a/Neos.ContentRepositoryRegistry/Classes/Command/CrCommandController.php
+++ b/Neos.ContentRepositoryRegistry/Classes/Command/CrCommandController.php
@@ -90,6 +90,12 @@ public function replayAllCommand(string $contentRepository = 'default', bool $qu
}
}
+ /**
+ * This will completely prune the data of the specified content repository.
+ *
+ * @param string $contentRepository name of the content repository where the data should be pruned from.
+ * @return void
+ */
public function pruneCommand(string $contentRepository = 'default'): void
{
if (!$this->output->askConfirmation(sprintf("This will prune your content repository \"%s\". Are you sure to proceed? (y/n) ", $contentRepository), false)) {
diff --git a/Neos.ContentRepositoryRegistry/Classes/Command/StructureAdjustmentsCommandController.php b/Neos.ContentRepositoryRegistry/Classes/Command/StructureAdjustmentsCommandController.php
index c99472ac8c2..401b5cd830e 100644
--- a/Neos.ContentRepositoryRegistry/Classes/Command/StructureAdjustmentsCommandController.php
+++ b/Neos.ContentRepositoryRegistry/Classes/Command/StructureAdjustmentsCommandController.php
@@ -29,6 +29,13 @@ final class StructureAdjustmentsCommandController extends CommandController
*/
protected $contentRepositoryRegistry;
+
+ /**
+ * Detect required structure adjustments for the specified node type in the given content repository.
+ *
+ * @param string|null $nodeType The node type to find structure adjustments for. If not provided, all adjustments will be shown. (Default: null)
+ * @param string $contentRepositoryIdentifier The content repository identifier. (Default: 'default')
+ */
public function detectCommand(string $nodeType = null, string $contentRepositoryIdentifier = 'default'): void
{
$contentRepositoryId = ContentRepositoryId::fromString($contentRepositoryIdentifier);
@@ -45,6 +52,13 @@ public function detectCommand(string $nodeType = null, string $contentRepository
$this->printErrors($errors);
}
+ /**
+ * Apply required structure adjustments for the specified node type in the given content repository.
+ *
+ * @param string|null $nodeType The node type to apply structure adjustments for. If not provided, all found adjustments will be applied. (Default: null)
+ * @param string $contentRepositoryIdentifier The content repository identifier. (Default: 'default')
+ * @return void
+ */
public function fixCommand(string $nodeType = null, string $contentRepositoryIdentifier = 'default'): void
{
$contentRepositoryId = ContentRepositoryId::fromString($contentRepositoryIdentifier);
diff --git a/Neos.ContentRepositoryRegistry/Classes/Command/SubprocessProjectionCatchUpCommandController.php b/Neos.ContentRepositoryRegistry/Classes/Command/SubprocessProjectionCatchUpCommandController.php
index b0ec9ee2d39..a654d053fcc 100644
--- a/Neos.ContentRepositoryRegistry/Classes/Command/SubprocessProjectionCatchUpCommandController.php
+++ b/Neos.ContentRepositoryRegistry/Classes/Command/SubprocessProjectionCatchUpCommandController.php
@@ -22,6 +22,11 @@ class SubprocessProjectionCatchUpCommandController extends CommandController
*/
protected $contentRepositoryRegistry;
+ /**
+ * @param string $contentRepositoryIdentifier
+ * @param string $projectionClassName fully qualified class name of the projection to catch up
+ * @internal
+ */
public function catchupCommand(string $contentRepositoryIdentifier, string $projectionClassName): void
{