Skip to content
This repository was archived by the owner on Mar 20, 2025. It is now read-only.

Commit 4171975

Browse files
committed
Bootstrap default data on app load
1 parent 1cdee79 commit 4171975

File tree

5 files changed

+53
-51
lines changed

5 files changed

+53
-51
lines changed

box.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
{
22
"directories": [
33
"src",
4-
"vendor"
4+
"vendor",
5+
"config"
56
],
67
"files": [
78
"composer.json"

config/defaults.php

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
<?php
2+
3+
return [
4+
'tasks' => [
5+
'anonymous-migrations' => \Shift\Cli\Tasks\AnonymousMigrations::class,
6+
'check-lint' => \Shift\Cli\Tasks\CheckLint::class,
7+
'class-strings' => \Shift\Cli\Tasks\ClassStrings::class,
8+
'debug-calls' => \Shift\Cli\Tasks\DebugCalls::class,
9+
'declare-strict' => \Shift\Cli\Tasks\DeclareStrictTypes::class,
10+
'down-migration' => \Shift\Cli\Tasks\DownMigration::class,
11+
'explicit-orderby' => \Shift\Cli\Tasks\ExplicitOrderBy::class,
12+
'facade-aliases' => \Shift\Cli\Tasks\FacadeAliases::class,
13+
'faker-methods' => \Shift\Cli\Tasks\FakerMethods::class,
14+
'laravel-carbon' => \Shift\Cli\Tasks\LaravelCarbon::class,
15+
'latest-oldest' => \Shift\Cli\Tasks\LatestOldest::class,
16+
'model-table' => \Shift\Cli\Tasks\ModelTableName::class,
17+
'order-model' => \Shift\Cli\Tasks\OrderModel::class,
18+
'remove-docblocks' => \Shift\Cli\Tasks\RemoveDocBlocks::class,
19+
'rules-arrays' => \Shift\Cli\Tasks\RulesArrays::class,
20+
],
21+
22+
'run' => [
23+
'anonymous-migrations',
24+
'class-strings',
25+
'explicit-orderby',
26+
'facade-aliases',
27+
'faker-methods',
28+
'model-table',
29+
'rules-arrays',
30+
],
31+
32+
];

shift-cli

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,18 @@ require __DIR__ . '/vendor/autoload.php';
66
use Shift\Cli\Commands\DiscoverCommand;
77
use Shift\Cli\Commands\PublishCommand;
88
use Shift\Cli\Commands\RunCommand;
9+
use Shift\Cli\Sdk\Facades\Configuration;
910
use Shift\Cli\Support\TaskManifest;
1011
use Symfony\Component\Console\Application;
1112

12-
$taskManifest = new TaskManifest(getenv('COMPOSER_VENDOR_DIR') ?: getcwd() . '/vendor');
13+
$defaults = require __DIR__ . '/config/defaults.php';
14+
15+
$taskManifest = new TaskManifest(
16+
getenv('COMPOSER_VENDOR_DIR') ?: getcwd() . '/vendor',
17+
$defaults['tasks'],
18+
);
19+
20+
Configuration::setDefaults($defaults['run']);
1321

1422
$application = new Application();
1523
$application->add(new DiscoverCommand($taskManifest));

src/Support/TaskManifest.php

Lines changed: 5 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,11 @@ class TaskManifest
1010

1111
private string $vendorPath;
1212

13-
public function __construct(string $vendorPath)
13+
private array $defaultTasks;
14+
15+
public function __construct(string $vendorPath, array $defaultTasks)
1416
{
17+
$this->defaultTasks = $defaultTasks;
1518
$this->vendorPath = $vendorPath;
1619
$this->manifestPath = $vendorPath . DIRECTORY_SEPARATOR . 'shift-tasks.php';
1720
}
@@ -46,31 +49,10 @@ public function build(): void
4649
return $package['extra']['shift']['tasks'] ?? [];
4750
})
4851
->filter()
49-
->merge($this->defaultTasks())
52+
->merge($this->defaultTasks)
5053
->all());
5154
}
5255

53-
private function defaultTasks(): array
54-
{
55-
return [
56-
'anonymous-migrations' => \Shift\Cli\Tasks\AnonymousMigrations::class,
57-
'check-lint' => \Shift\Cli\Tasks\CheckLint::class,
58-
'class-strings' => \Shift\Cli\Tasks\ClassStrings::class,
59-
'debug-calls' => \Shift\Cli\Tasks\DebugCalls::class,
60-
'declare-strict' => \Shift\Cli\Tasks\DeclareStrictTypes::class,
61-
'down-migration' => \Shift\Cli\Tasks\DownMigration::class,
62-
'explicit-orderby' => \Shift\Cli\Tasks\ExplicitOrderBy::class,
63-
'facade-aliases' => \Shift\Cli\Tasks\FacadeAliases::class,
64-
'faker-methods' => \Shift\Cli\Tasks\FakerMethods::class,
65-
'laravel-carbon' => \Shift\Cli\Tasks\LaravelCarbon::class,
66-
'latest-oldest' => \Shift\Cli\Tasks\LatestOldest::class,
67-
'model-table' => \Shift\Cli\Tasks\ModelTableName::class,
68-
'order-model' => \Shift\Cli\Tasks\OrderModel::class,
69-
'remove-docblocks' => \Shift\Cli\Tasks\RemoveDocBlocks::class,
70-
'rules-arrays' => \Shift\Cli\Tasks\RulesArrays::class,
71-
];
72-
}
73-
7456
protected function write(array $manifest): void
7557
{
7658
if (! is_writable($dirname = dirname($this->manifestPath))) {

tests/Feature/Support/TaskManifestTest.php

Lines changed: 5 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ public function list_returns_existing_manifest()
1818
'shift-tasks.php' => '<?php return ["task-name" => "fqcn"];',
1919
]);
2020

21-
$taskManifest = new TaskManifest($this->currentSnapshotPath());
21+
$taskManifest = new TaskManifest($this->currentSnapshotPath(), []);
2222

2323
$this->assertSame(['task-name' => 'fqcn'], $taskManifest->list());
2424
}
@@ -28,9 +28,9 @@ public function list_returns_default_tasks_for_no_manifest()
2828
{
2929
$this->fakeProject([]);
3030

31-
$taskManifest = new TaskManifest($this->currentSnapshotPath());
31+
$taskManifest = new TaskManifest($this->currentSnapshotPath(), ['task-name' => 'Fully\\Qualified\\Class\\Name']);
3232

33-
$this->assertSame($this->defaultTasks(), $taskManifest->list());
33+
$this->assertSame(['task-name' => 'Fully\\Qualified\\Class\\Name'], $taskManifest->list());
3434
$this->assertFileExists($this->currentSnapshotPath() . DIRECTORY_SEPARATOR . 'shift-tasks.php');
3535
}
3636

@@ -58,34 +58,13 @@ public function build_returns_merged_tasks_from_packages()
5858
]),
5959
]);
6060

61-
$taskManifest = new TaskManifest($this->currentSnapshotPath());
61+
$taskManifest = new TaskManifest($this->currentSnapshotPath(), ['task-name' => 'Fully\\Qualified\\Class\\Name']);
6262

6363
$this->assertEqualsCanonicalizing(
64-
array_merge(['package1-task' => '\\Package1\\Task', 'package2-task' => '\\Package2\\Task'], $this->defaultTasks()),
64+
['task-name' => 'Fully\\Qualified\\Class\\Name', 'package1-task' => '\\Package1\\Task', 'package2-task' => '\\Package2\\Task'],
6565
$taskManifest->list()
6666
);
6767

6868
$this->assertFileExists($this->currentSnapshotPath() . DIRECTORY_SEPARATOR . 'shift-tasks.php');
6969
}
70-
71-
private function defaultTasks()
72-
{
73-
return [
74-
'anonymous-migrations' => \Shift\Cli\Tasks\AnonymousMigrations::class,
75-
'check-lint' => \Shift\Cli\Tasks\CheckLint::class,
76-
'class-strings' => \Shift\Cli\Tasks\ClassStrings::class,
77-
'debug-calls' => \Shift\Cli\Tasks\DebugCalls::class,
78-
'declare-strict' => \Shift\Cli\Tasks\DeclareStrictTypes::class,
79-
'down-migration' => \Shift\Cli\Tasks\DownMigration::class,
80-
'explicit-orderby' => \Shift\Cli\Tasks\ExplicitOrderBy::class,
81-
'facade-aliases' => \Shift\Cli\Tasks\FacadeAliases::class,
82-
'faker-methods' => \Shift\Cli\Tasks\FakerMethods::class,
83-
'laravel-carbon' => \Shift\Cli\Tasks\LaravelCarbon::class,
84-
'latest-oldest' => \Shift\Cli\Tasks\LatestOldest::class,
85-
'model-table' => \Shift\Cli\Tasks\ModelTableName::class,
86-
'order-model' => \Shift\Cli\Tasks\OrderModel::class,
87-
'remove-docblocks' => \Shift\Cli\Tasks\RemoveDocBlocks::class,
88-
'rules-arrays' => \Shift\Cli\Tasks\RulesArrays::class,
89-
];
90-
}
9170
}

0 commit comments

Comments
 (0)