Skip to content

Commit b395e90

Browse files
committed
Prevent task overwrite
1 parent 835887e commit b395e90

File tree

3 files changed

+19
-8
lines changed

3 files changed

+19
-8
lines changed

src/Builder/MachineBuilder.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
namespace TaskMachine\Builder;
44

55
use Shrink0r\PhpSchema\Builder;
6+
use Shrink0r\PhpSchema\Exception;
67
use Shrink0r\PhpSchema\SchemaInterface;
78

89
class MachineBuilder extends Builder
@@ -28,4 +29,14 @@ public function build(array $defaults = [])
2829
{
2930
return $this->context->build();
3031
}
32+
33+
/** @inheritdoc */
34+
public function __set($key, $value)
35+
{
36+
if (parent::__isset($key)) {
37+
throw new Exception("Trying to overwrite task '$key'.");
38+
}
39+
40+
parent::__set($key, $value);
41+
}
3142
}

src/Builder/TaskMachineBuilder.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -77,14 +77,14 @@ public function build(): TaskMachineInterface
7777
private function mergeMachineTasks(array $schema): array
7878
{
7979
foreach ($schema as $name => $config) {
80-
$alias = $config['alias'] ?? $name;
81-
if (!isset($this->tasks[$alias])) {
82-
throw new ConfigError("Task definition for '$alias' not found");
80+
$task = $config['task'] ?? $name;
81+
if (!isset($this->tasks[$task])) {
82+
throw new ConfigError("Task definition for '$task' not found");
8383
}
8484

85-
$taskConfig = $this->tasks[$alias];
85+
$taskConfig = $this->tasks[$task];
8686
if ($taskConfig instanceof TaskBuilder) {
87-
$result = $this->tasks[$alias]->_build();
87+
$result = $this->tasks[$task]->_build();
8888
if ($result instanceof Error) {
8989
throw new ConfigError('Invalid task configuration given: '.print_r($result->unwrap(), true));
9090
}

src/Schema/MachineSchema.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ private function getTaskSchema(): array
8484
'type' => 'assoc' ,
8585
'required' => false,
8686
'properties' => [
87-
'alias' => [ 'type' => 'string', 'required' => false ],
87+
'task' => [ 'type' => 'string', 'required' => false ],
8888
'handler' => [ 'type' => 'any', 'required' => false ], // @todo callable, object or null
8989
'initial' => [ 'type' => 'bool', 'required' => false ],
9090
'final' => [ 'type' => 'bool', 'required' => false ],
@@ -103,11 +103,11 @@ private function getTaskSchema(): array
103103
':any_name:' => [ 'type' => 'any' ]
104104
]
105105
],
106-
'transition' => [
106+
'transition' => [
107107
'type' => 'any', //@todo array or string
108108
'required' => false //@todo required
109109
],
110-
'validate' => [
110+
'validate' => [
111111
'type' => 'assoc',
112112
'required' => false,
113113
'properties' => [

0 commit comments

Comments
 (0)