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

Commit 14e2751

Browse files
committed
Move name and description into Task
1 parent 4f50672 commit 14e2751

25 files changed

+138
-27
lines changed

config/defaults.php

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,21 @@
22

33
return [
44
'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,
5+
\Shift\Cli\Tasks\AnonymousMigrations::class,
6+
\Shift\Cli\Tasks\CheckLint::class,
7+
\Shift\Cli\Tasks\ClassStrings::class,
8+
\Shift\Cli\Tasks\DebugCalls::class,
9+
\Shift\Cli\Tasks\DeclareStrictTypes::class,
10+
\Shift\Cli\Tasks\DownMigration::class,
11+
\Shift\Cli\Tasks\ExplicitOrderBy::class,
12+
\Shift\Cli\Tasks\FacadeAliases::class,
13+
\Shift\Cli\Tasks\FakerMethods::class,
14+
\Shift\Cli\Tasks\LaravelCarbon::class,
15+
\Shift\Cli\Tasks\LatestOldest::class,
16+
\Shift\Cli\Tasks\ModelTableName::class,
17+
\Shift\Cli\Tasks\OrderModel::class,
18+
\Shift\Cli\Tasks\RemoveDocBlocks::class,
19+
\Shift\Cli\Tasks\RulesArrays::class,
2020
],
2121

2222
'run' => [

src/Commands/DiscoverCommand.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
#[AsCommand(
1212
name: 'discover',
13-
description: 'Load any additional automated tasks within the project',
13+
description: 'Register any additional automated tasks within the project',
1414
)]
1515
class DiscoverCommand extends Command
1616
{

src/Commands/RunCommand.php

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
use Shift\Cli\Support\TaskManifest;
1010
use Symfony\Component\Console\Attribute\AsCommand;
1111
use Symfony\Component\Console\Command\Command;
12+
use Symfony\Component\Console\Helper\Table;
1213
use Symfony\Component\Console\Input\InputArgument;
1314
use Symfony\Component\Console\Input\InputInterface;
1415
use Symfony\Component\Console\Input\InputOption;
@@ -32,12 +33,19 @@ public function __construct(TaskManifest $taskManifest)
3233
protected function configure(): void
3334
{
3435
$this->addArgument('task', InputArgument::IS_ARRAY | InputArgument::OPTIONAL, 'The name of the automated task');
36+
$this->addOption('tasks', mode: InputOption::VALUE_NONE, description: 'List the available tasks');
3537
$this->addOption('dirty', mode: InputOption::VALUE_NONE, description: 'Scan only dirty files');
3638
$this->addOption('path', mode: InputOption::VALUE_REQUIRED | InputArgument::OPTIONAL | InputOption::VALUE_IS_ARRAY, description: 'The paths to scan');
3739
}
3840

3941
protected function execute(InputInterface $input, OutputInterface $output): int
4042
{
43+
if ($input->getOption('tasks')) {
44+
$this->listTasks($output);
45+
46+
return 0;
47+
}
48+
4149
$tasks = empty($input->getArgument('task')) ? Configuration::get('tasks', []) : $input->getArgument('task');
4250

4351
foreach ($tasks as $task) {
@@ -100,4 +108,17 @@ private function taskRegistry(string $task): string
100108

101109
return $tasks[$task];
102110
}
111+
112+
private function listTasks(OutputInterface $output)
113+
{
114+
$output->writeln('<comment>Available tasks:</comment>');
115+
116+
$tasks = collect($this->taskManifest->list())
117+
->map(fn ($fqcn) => [' <info>' . $fqcn::$name . '</info> ', $fqcn::$description])
118+
->all();
119+
120+
(new Table($output))->setStyle('compact')
121+
->setRows($tasks)
122+
->render();
123+
}
103124
}

src/Support/TaskManifest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,10 +56,10 @@ public function build(): void
5656

5757
$this->write(collect($packages)
5858
->mapWithKeys(function ($package) {
59-
return $package['extra']['shift']['tasks'] ?? [];
59+
return collect($package['extra']['shift']['tasks'] ?? [])->mapWithKeys(fn ($task) => [$task::$name => $task]);
6060
})
6161
->filter()
62-
->merge($this->defaultTasks)
62+
->merge(collect($this->defaultTasks)->mapWithKeys(fn ($task) => [$task::$name => $task]))
6363
->all());
6464
}
6565

src/Tasks/AnonymousMigrations.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ class AnonymousMigrations implements Task
1010
{
1111
use FindsFiles;
1212

13+
public static string $name = 'anonymous-migrations';
14+
15+
public static string $description = 'Converts migrations to use anonymous classes';
16+
1317
public function perform(): int
1418
{
1519
$this->updateMigrations();

src/Tasks/CheckLint.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ class CheckLint implements Task
1010
{
1111
use FindsFiles;
1212

13+
public static string $name = 'check-lint';
14+
15+
public static string $description = 'Checks PHP files for syntax errors';
16+
1317
public function perform(): int
1418
{
1519
$files = $this->findFiles();

src/Tasks/ClassStrings.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ class ClassStrings implements Task
1010
{
1111
use FindsFiles;
1212

13+
public static string $name = 'class-strings';
14+
15+
public static string $description = 'Converts string class references to use `::class` constant';
16+
1317
public function perform(): int
1418
{
1519
$namespaces = $this->psr4Namespaces();

src/Tasks/DebugCalls.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@ class DebugCalls implements Task
1111
{
1212
use FindsFiles;
1313

14+
public static string $name = 'debug-calls';
15+
16+
public static string $description = 'Removes calls to common debugging functions';
17+
1418
public function perform(): int
1519
{
1620
$files = $this->findFiles();

src/Tasks/DeclareStrictTypes.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ class DeclareStrictTypes implements Task
1010
{
1111
use FindsFiles;
1212

13+
public static string $name = 'declare-strict';
14+
15+
public static string $description = 'Adds `strict_types` declaration to PHP files';
16+
1317
public function perform(): int
1418
{
1519
$files = $this->findFiles();

src/Tasks/DownMigration.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ class DownMigration implements Task
1010
{
1111
use FindsFiles;
1212

13+
public static string $name = 'down-migration';
14+
15+
public static string $description = 'Removes the `down` method from migrations';
16+
1317
public function perform(): int
1418
{
1519
$this->updateMigrations();

0 commit comments

Comments
 (0)