Skip to content
This repository was archived by the owner on Jan 28, 2026. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions app/Actions/QuestionsAction.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,10 @@
use PackageWizard\Installer\Data\ReplaceData;
use PackageWizard\Installer\Enums\ConditionOperatorEnum;
use PackageWizard\Installer\Enums\TypeEnum;
use PackageWizard\Installer\Fillers\AskFiller;
use PackageWizard\Installer\Fillers\Questions\AuthorFiller;
use PackageWizard\Installer\Fillers\Questions\LicenseFiller;
use PackageWizard\Installer\Fillers\Questions\SelectFiller;
use PackageWizard\Installer\Fillers\Questions\TextFiller;
use PackageWizard\Installer\Replacers\AskReplacer;
use PackageWizard\Installer\Replacers\AuthorReplacer;
use PackageWizard\Installer\Replacers\LicenseReplacer;
Expand Down Expand Up @@ -67,9 +68,10 @@ protected function question(QuestionData $question): void
protected function getValue(QuestionData $question): array|Data|null
{
return match ($question->type) {
TypeEnum::Ask => AskReplacer::get(AskFiller::make(data: $question), true),
TypeEnum::Author => AuthorReplacer::get(AuthorFiller::make(data: $question), true),
TypeEnum::License => LicenseReplacer::get(LicenseFiller::make(data: $question), true),
TypeEnum::Select => AskReplacer::get(SelectFiller::make(data: $question), true),
TypeEnum::Text => AskReplacer::get(TextFiller::make(data: $question), true),
};
}

Expand Down
29 changes: 4 additions & 25 deletions app/Data/Casts/QuestionsCast.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,10 @@
namespace PackageWizard\Installer\Data\Casts;

use PackageWizard\Installer\Concerns\Data\ChoiceData;
use PackageWizard\Installer\Data\Questions\QuestionAskSelectData;
use PackageWizard\Installer\Data\Questions\QuestionAskTextData;
use PackageWizard\Installer\Data\Questions\QuestionAuthorData;
use PackageWizard\Installer\Data\Questions\QuestionLicenseData;
use PackageWizard\Installer\Enums\PromptEnum;
use PackageWizard\Installer\Data\Questions\QuestionSelectData;
use PackageWizard\Installer\Data\Questions\QuestionTextData;
use PackageWizard\Installer\Enums\TypeEnum;
use Spatie\LaravelData\Casts\Cast;
use Spatie\LaravelData\Data;
Expand All @@ -21,31 +20,11 @@ class QuestionsCast implements Cast
protected function map(string|TypeEnum $type, array $item): Data
{
return match ($this->type($type)) {
TypeEnum::Ask => $this->ask($item),
TypeEnum::Author => QuestionAuthorData::from($item),
TypeEnum::License => QuestionLicenseData::from($item),
TypeEnum::Select => QuestionSelectData::from($item),
TypeEnum::Text => QuestionTextData::from($item),
default => $this->throw($type)
};
}

protected function ask(array $item): Data
{
return match ($this->prompt($item['prompt'] ?? null)) {
PromptEnum::Select => QuestionAskSelectData::from($item),
default => QuestionAskTextData::from($item)
};
}

protected function prompt(PromptEnum|string|null $prompt): ?PromptEnum
{
if ($prompt === null) {
return null;
}

if ($prompt instanceof PromptEnum) {
return $prompt;
}

return PromptEnum::tryFrom($prompt);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,12 @@

use PackageWizard\Installer\Data\Casts\ArrayWrapCast;
use PackageWizard\Installer\Data\Casts\TranslatableCast;
use PackageWizard\Installer\Enums\PromptEnum;
use PackageWizard\Installer\Enums\TypeEnum;
use Spatie\LaravelData\Attributes\WithCast;

class QuestionAskSelectData extends QuestionData
class QuestionSelectData extends QuestionData
{
public TypeEnum $type = TypeEnum::Ask;

public PromptEnum $prompt = PromptEnum::Select;
public TypeEnum $type = TypeEnum::Select;

#[WithCast(ArrayWrapCast::class)]
public array $replace;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,12 @@
use PackageWizard\Installer\Data\Casts\ToStringCast;
use PackageWizard\Installer\Data\Casts\TranslatableCast;
use PackageWizard\Installer\Data\Casts\ValidationCast;
use PackageWizard\Installer\Enums\PromptEnum;
use PackageWizard\Installer\Enums\TypeEnum;
use Spatie\LaravelData\Attributes\WithCast;

class QuestionAskTextData extends QuestionData
class QuestionTextData extends QuestionData
{
public TypeEnum $type = TypeEnum::Ask;

public PromptEnum $prompt = PromptEnum::Text;
public TypeEnum $type = TypeEnum::Text;

#[WithCast(ArrayWrapCast::class)]
public array $replace;
Expand Down
1 change: 1 addition & 0 deletions app/Enums/PromptEnum.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

namespace PackageWizard\Installer\Enums;

/** @deprecated */
enum PromptEnum: string
{
case Text = 'text';
Expand Down
3 changes: 2 additions & 1 deletion app/Enums/TypeEnum.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,12 @@

enum TypeEnum: string
{
case Ask = 'ask';
case Author = 'author';
case Date = 'date';
case License = 'license';
case Rename = 'rename';
case Select = 'select';
case Text = 'text';
case Year = 'year';
case YearRange = 'yearRange';
}
27 changes: 0 additions & 27 deletions app/Fillers/AskFiller.php

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,18 @@

namespace PackageWizard\Installer\Fillers\Questions;

use PackageWizard\Installer\Data\Questions\QuestionAskSelectData;
use PackageWizard\Installer\Data\Questions\QuestionSelectData;
use PackageWizard\Installer\Data\ReplaceData;
use PackageWizard\Installer\Fillers\Filler;
use Spatie\LaravelData\Data;

use function Laravel\Prompts\select;

/** @method static make(QuestionAskSelectData|Data $data) */
class AskSelectFiller extends Filler
/** @method static make(QuestionSelectData|Data $data) */
class SelectFiller extends Filler
{
public function __construct(
protected QuestionAskSelectData $data
protected QuestionSelectData $data
) {}

public function get(): ReplaceData
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,19 +6,19 @@

use Closure;
use Illuminate\Support\Str;
use PackageWizard\Installer\Data\Questions\QuestionAskTextData;
use PackageWizard\Installer\Data\Questions\QuestionTextData;
use PackageWizard\Installer\Data\ReplaceData;
use PackageWizard\Installer\Fillers\Filler;
use PackageWizard\Installer\Helpers\ValidationHelper;
use Spatie\LaravelData\Data;

use function Laravel\Prompts\text;

/** @method static make(QuestionAskTextData|Data $data) */
class AskTextFiller extends Filler
/** @method static make(QuestionTextData|Data $data) */
class TextFiller extends Filler
{
public function __construct(
protected QuestionAskTextData $data
protected QuestionTextData $data
) {}

public function get(): ?ReplaceData
Expand Down
17 changes: 6 additions & 11 deletions resources/schemas/example-v2.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
"clean": true
},
"authors": [
[],
{ },
{
"name": "John Doe",
"email": "john@example.com",
Expand Down Expand Up @@ -170,8 +170,7 @@
"operator": "!=",
"value": "MIT License"
},
"type": "ask",
"prompt": "text",
"type": "text",
"question": "Some question",
"replace": ":some_answer:",
"placeholder": "Some kind of auxiliary information"
Expand All @@ -181,8 +180,7 @@
"for": "author123",
"value": "John Doe <john@example.com>"
},
"type": "ask",
"prompt": "text",
"type": "text",
"question": "form.question.name",
"placeholder": "form.eg.name",
"default": "foo",
Expand All @@ -194,8 +192,7 @@
]
},
{
"type": "ask",
"prompt": "select",
"type": "select",
"question": "Select one of the options",
"options": [
100,
Expand All @@ -206,8 +203,7 @@
"replace": ":foo:"
},
{
"type": "ask",
"prompt": "select",
"type": "select",
"question": "Select one of the options",
"options": [
100,
Expand All @@ -218,8 +214,7 @@
"replace": ":foo:"
},
{
"type": "ask",
"prompt": "select",
"type": "select",
"question": "Select one of the options",
"options": {
"100": "foo",
Expand Down
Loading