final tweaks before testing

This commit is contained in:
Adam Weston
2023-07-16 10:17:14 -04:00
parent af17c6f6ae
commit a76b5a4634
17 changed files with 186 additions and 166 deletions

15
.gitattributes vendored
View File

@@ -10,17 +10,18 @@
/.package-lock.json export-ignore /.package-lock.json export-ignore
/.editorconfig export-ignore /.editorconfig export-ignore
/.php_cs.dist.php export-ignore /.php_cs.dist.php export-ignore
/phpunit.xml.dist export-ignore /.vscode export-ignore
/art export-ignore /art export-ignore
/docs export-ignore /docs export-ignore
/images export-ignore
/tests export-ignore /tests export-ignore
/package.json export-ignore
/phpstan-baseline.neon export-ignore
/phpstan.neon.dist export-ignore
/postcss.config.js export-ignore
/phpunit.xml.dist export-ignore
/psalm.xml export-ignore /psalm.xml export-ignore
/psalm.xml.dist export-ignore /psalm.xml.dist export-ignore
/tailwind.config.js export-ignore
/testbench.yaml export-ignore /testbench.yaml export-ignore
/UPGRADING.md export-ignore /UPGRADING.md export-ignore
/phpstan.neon.dist export-ignore
/phpstan-baseline.neon export-ignore
/images export-ignore
/package.json export-ignore
/postcss.config.js export-ignore
/tailwind.config.js export-ignore

View File

@@ -14,7 +14,7 @@ Please be considerate towards maintainers when raising issues or presenting pull
world that developers are civilized and selfless people. world that developers are civilized and selfless people.
It's the duty of the maintainer to ensure that all submissions to the project are of sufficient It's the duty of the maintainer to ensure that all submissions to the project are of sufficient
quality to benefit the project. Many developers have different skillsets, strengths, and weaknesses. Respect the maintainer's decision, and do not be upset or abusive if your submission is not used. quality to benefit the project. Many developers have different skills, strengths, and weaknesses. Respect the maintainer's decision, and do not be upset or abusive if your submission is not used.
## Viability ## Viability

66
.github/ISSUE_TEMPLATE/bug.yml vendored Normal file
View File

@@ -0,0 +1,66 @@
name: Bug Report
description: Report an Issue or Bug with the Package
title: "[Bug]: "
labels: ["bug"]
body:
- type: markdown
attributes:
value: |
We're sorry to hear you have a problem. Can you help us solve it by providing the following details.
- type: textarea
id: what-happened
attributes:
label: What happened?
description: What did you expect to happen?
placeholder: I cannot currently do X thing because when I do, it breaks X thing.
validations:
required: true
- type: textarea
id: how-to-reproduce
attributes:
label: How to reproduce the bug
description: How did this occur, please add any config values used and provide a set of reliable steps if possible.
placeholder: When I do X I see Y.
validations:
required: true
- type: input
id: package-version
attributes:
label: Package Version
description: What version of our Package are you running? Please be as specific as possible
placeholder: 2.0.0
validations:
required: true
- type: input
id: php-version
attributes:
label: PHP Version
description: What version of PHP are you running? Please be as specific as possible
placeholder: 8.2.0
validations:
required: true
- type: input
id: laravel-version
attributes:
label: Laravel Version
description: What version of Laravel are you running? Please be as specific as possible
placeholder: 9.0.0
validations:
required: true
- type: dropdown
id: operating-systems
attributes:
label: Which operating systems does with happen with?
description: You may select more than one.
multiple: true
options:
- macOS
- Windows
- Linux
- type: textarea
id: notes
attributes:
label: Notes
description: Use this field to provide any other notes that you feel might be relevant to the issue.
validations:
required: false

View File

@@ -9,6 +9,3 @@ contact_links:
- name: Report a security issue - name: Report a security issue
url: https://github.com/:vendor_name/:package_name/security/policy url: https://github.com/:vendor_name/:package_name/security/policy
about: Learn how to notify us for sensitive bugs about: Learn how to notify us for sensitive bugs
- name: Report a bug
url: https://github.com/:vendor_name/:package_name/issues/new
about: Report a reproducible bug

View File

@@ -1,4 +1,4 @@
name: Dependabot Auto Merge name: "Dependabot Auto-Merge"
on: pull_request_target on: pull_request_target
@@ -14,7 +14,7 @@ jobs:
- name: Dependabot metadata - name: Dependabot metadata
id: metadata id: metadata
uses: dependabot/fetch-metadata@v1.4.0 uses: dependabot/fetch-metadata@v1.6.0
with: with:
github-token: "${{ secrets.GITHUB_TOKEN }}" github-token: "${{ secrets.GITHUB_TOKEN }}"

View File

@@ -1,6 +1,12 @@
name: Fix PHP Code Styling name: "Fix PHP Code Styling"
on: [push] on:
push:
paths:
- '**.php'
permissions:
contents: write
jobs: jobs:
php-code-styling: php-code-styling:

View File

@@ -23,4 +23,4 @@ jobs:
uses: ramsey/composer-install@v2 uses: ramsey/composer-install@v2
- name: Run PHPStan - name: Run PHPStan
run: ./vendor/bin/phpstan --error-format=github run: ./vendor/bin/phpstan --error-format=github

View File

@@ -1,8 +1,10 @@
name: Run Tests name: run-tests
on: on:
push: push:
branches: [main]
pull_request: pull_request:
branches: [main]
jobs: jobs:
test: test:
@@ -12,13 +14,12 @@ jobs:
matrix: matrix:
os: [ubuntu-latest, windows-latest] os: [ubuntu-latest, windows-latest]
php: [8.2, 8.1] php: [8.2, 8.1]
laravel: [10.*, 9.*] laravel: [10.*]
stability: [prefer-stable] stability: [prefer-lowest, prefer-stable]
include: include:
- laravel: 10.* - laravel: 10.*
testbench: 8.* testbench: 8.*
- laravel: 9.* carbon: ^2.63
testbench: 7.*
name: P${{ matrix.php }} - L${{ matrix.laravel }} - ${{ matrix.stability }} - ${{ matrix.os }} name: P${{ matrix.php }} - L${{ matrix.laravel }} - ${{ matrix.stability }} - ${{ matrix.os }}
@@ -40,8 +41,11 @@ jobs:
- name: Install dependencies - name: Install dependencies
run: | run: |
composer require "laravel/framework:${{ matrix.laravel }}" "orchestra/testbench:${{ matrix.testbench }}" --no-interaction --no-update composer require "laravel/framework:${{ matrix.laravel }}" "orchestra/testbench:${{ matrix.testbench }}" "nesbot/carbon:${{ matrix.carbon }}" --no-interaction --no-update
composer update --${{ matrix.stability }} --prefer-dist --no-interaction composer update --${{ matrix.stability }} --prefer-dist --no-interaction
- name: List Installed Dependencies
run: composer show -D
- name: Execute tests - name: Execute tests
run: ./vendor/bin/pest --verbose run: vendor/bin/pest --ci

View File

@@ -1,9 +1,12 @@
name: Update Changelog name: "Update Changelog"
on: on:
release: release:
types: [released] types: [released]
permissions:
contents: write
jobs: jobs:
update: update:
runs-on: ubuntu-latest runs-on: ubuntu-latest
@@ -11,6 +14,8 @@ jobs:
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@v3 uses: actions/checkout@v3
with:
ref: main
- name: Update Changelog - name: Update Changelog
uses: stefanzweifel/changelog-updater-action@v1 uses: stefanzweifel/changelog-updater-action@v1
@@ -21,5 +26,6 @@ jobs:
- name: Commit updated CHANGELOG - name: Commit updated CHANGELOG
uses: stefanzweifel/git-auto-commit-action@v4 uses: stefanzweifel/git-auto-commit-action@v4
with: with:
branch: main
commit_message: Update CHANGELOG commit_message: Update CHANGELOG
file_pattern: CHANGELOG.md file_pattern: CHANGELOG.md

5
.gitignore vendored
View File

@@ -1,12 +1,13 @@
.DS_Store
.idea .idea
.phpunit.result.cache .phpunit.result.cache
.DS_Store .vscode
build build
composer.lock composer.lock
coverage coverage
docs docs
node_modules
phpunit.xml phpunit.xml
phpstan.neon phpstan.neon
testbench.yaml testbench.yaml
vendor vendor
node_modules

View File

@@ -1,8 +1,8 @@
# :package_description # :package_description
[![Latest Version on Packagist](https://img.shields.io/packagist/v/:vendor_slug/:package_slug.svg?style=flat-square)](https://packagist.org/packages/:vendor_slug/:package_slug) [![Latest Version on Packagist](https://img.shields.io/packagist/v/:vendor_slug/:package_slug.svg?style=flat-square)](https://packagist.org/packages/:vendor_slug/:package_slug)
[![GitHub Tests Action Status](https://img.shields.io/github/workflow/status/:vendor_slug/:package_slug/run-tests?label=tests)](https://github.com/:vendor_slug/:package_slug/actions?query=workflow%3Arun-tests+branch%3Amain) [![GitHub Tests Action Status](https://img.shields.io/github/actions/workflow/status/:vendor_slug/:package_slug/run-tests.yml?branch=main&label=tests&style=flat-square)](https://github.com/:vendor_slug/:package_slug/actions?query=workflow%3Arun-tests+branch%3Amain)
[![GitHub Code Style Action Status](https://img.shields.io/github/workflow/status/:vendor_slug/:package_slug/Check%20&%20fix%20styling?label=code%20style)](https://github.com/:vendor_slug/:package_slug/actions?query=workflow%3A"Check+%26+fix+styling"+branch%3Amain) [![GitHub Code Style Action Status](https://img.shields.io/github/actions/workflow/status/:vendor_slug/:package_slug/fix-php-code-style-issues.yml?branch=main&label=code%20style&style=flat-square)](https://github.com/:vendor_slug/:package_slug/actions?query=workflow%3A"Fix+PHP+code+style+issues"+branch%3Amain)
[![Total Downloads](https://img.shields.io/packagist/dt/:vendor_slug/:package_slug.svg?style=flat-square)](https://packagist.org/packages/:vendor_slug/:package_slug) [![Total Downloads](https://img.shields.io/packagist/dt/:vendor_slug/:package_slug.svg?style=flat-square)](https://packagist.org/packages/:vendor_slug/:package_slug)
<!--delete--> <!--delete-->
@@ -54,8 +54,8 @@ return [
## Usage ## Usage
```php ```php
$skeleton = new VendorName\Skeleton(); $variable = new VendorName\Skeleton();
echo $skeleton->echoPhrase('Hello, VendorName!'); echo $variable->echoPhrase('Hello, VendorName!');
``` ```
## Testing ## Testing

View File

@@ -16,18 +16,20 @@ $authorUsername = ask('Author username', $usernameGuess);
$vendorName = ask('Vendor name', $authorUsername); $vendorName = ask('Vendor name', $authorUsername);
$vendorSlug = slugify($vendorName); $vendorSlug = slugify($vendorName);
$vendorNamespace = ucwords($vendorName); $vendorNamespace = str_replace('-', '', ucwords($vendorName));
$vendorNamespace = ask('Vendor namespace', $vendorNamespace); $vendorNamespace = ask('Vendor namespace', $vendorNamespace);
$folderName = basename(getcwd()); $currentDirectory = getcwd();
$folderName = basename($currentDirectory);
$packageName = ask('Package name', $folderName); $packageName = ask('Package name', $folderName);
$packageSlug = slugify($packageName); $packageSlug = slugify($packageName);
$packageSlugWithoutPrefix = remove_prefix('filament-', $packageSlug); $packageSlugWithoutPrefix = removePrefix('filament-', $packageSlug);
$className = title_case($packageName); $className = titleCase($packageName);
$className = ask('Class name', $className); $className = ask('Class name', $className);
$description = ask('Package description'); $variableName = lcfirst($className);
$description = ask('Package description', "This is my package $packageSlug");
$usePhpStan = confirm('Enable PhpStan?', true); $usePhpStan = confirm('Enable PhpStan?', true);
$usePint = confirm('Enable Pint?', true); $usePint = confirm('Enable Pint?', true);
@@ -41,11 +43,11 @@ $tablesOnly = ! ($isTheme || $formsOnly) && confirm('Is this for Tables only?');
writeln("\r"); writeln("\r");
writeln('------'); writeln('------');
writeln("Author : \e[0;36m{$authorName} ({$authorUsername}, {$authorEmail})\e[0m"); writeln("Author : \e[0;36m$authorName ($authorUsername, $authorEmail)\e[0m");
writeln("Vendor : \e[0;36m{$vendorName} ({$vendorSlug})\e[0m"); writeln("Vendor : \e[0;36m$vendorName ($vendorSlug)\e[0m");
writeln('Package : ' . "\e[0;36m" . $packageSlug . ($description ? ' <{$description}>' : '') . "\e[0m"); writeln('Package : ' . "\e[0;36m" . $packageSlug . ($description ? ' <{$description}>' : '') . "\e[0m");
writeln("Namespace : \e[0;36m{$vendorNamespace}\\{$className}\e[0m"); writeln("Namespace : \e[0;36m$vendorNamespace\\$className\e[0m");
writeln("Class name : \e[0;36m{$className}\e[0m"); writeln("Class name : \e[0;36m$className\e[0m");
writeln('---'); writeln('---');
writeln("\e[1;37mPackages & Utilities\e[0m"); writeln("\e[1;37mPackages & Utilities\e[0m");
writeln('Larastan/PhpStan : ' . ($usePhpStan ? "\e[0;32mYes" : "\e[0;31mNo") . "\e[0m"); writeln('Larastan/PhpStan : ' . ($usePhpStan ? "\e[0;32mYes" : "\e[0;31mNo") . "\e[0m");
@@ -72,19 +74,21 @@ if (! confirm('Modify files?', true)) {
if ($formsOnly) { if ($formsOnly) {
safeUnlink(__DIR__ . '/src/SkeletonTheme.php'); safeUnlink(__DIR__ . '/src/SkeletonTheme.php');
safeUnlink(__DIR__ . '/src/SkeletonPlugin.php'); safeUnlink(__DIR__ . '/src/SkeletonPlugin.php');
safeUnlink(__DIR__ . '/package-theme.json');
remove_composer_filament_deps([ removeComposerDeps([
'filament/filament', 'filament/filament',
'filament/tables', 'filament/tables',
]); ], 'require');
} elseif ($tablesOnly) { } elseif ($tablesOnly) {
safeUnlink(__DIR__ . '/src/SkeletonTheme.php'); safeUnlink(__DIR__ . '/src/SkeletonTheme.php');
safeUnlink(__DIR__ . '/src/SkeletonPlugin.php'); safeUnlink(__DIR__ . '/src/SkeletonPlugin.php');
safeUnlink(__DIR__ . '/package-theme.json');
remove_composer_filament_deps([ removeComposerDeps([
'filament/filament', 'filament/filament',
'filament/forms', 'filament/forms',
]); ], 'require');
} else { } else {
if ($isTheme) { if ($isTheme) {
safeUnlink(__DIR__ . '/src/SkeletonServiceProvider.php'); safeUnlink(__DIR__ . '/src/SkeletonServiceProvider.php');
@@ -103,16 +107,16 @@ if ($formsOnly) {
safeUnlink(__DIR__ . '/src/SkeletonTheme.php'); safeUnlink(__DIR__ . '/src/SkeletonTheme.php');
} }
remove_composer_filament_deps([ removeComposerDeps([
'filament/forms', 'filament/forms',
'filament/tables', 'filament/tables',
]); ], 'require');
} }
$files = (str_starts_with(strtoupper(PHP_OS), 'WIN') ? replaceForWindows() : replaceForAllOtherOSes()); $files = (str_starts_with(strtoupper(PHP_OS), 'WIN') ? replaceForWindows() : replaceForAllOtherOSes());
foreach ($files as $file) { foreach ($files as $file) {
replace_in_file($file, [ replaceInFile($file, [
':author_name' => $authorName, ':author_name' => $authorName,
':author_username' => $authorUsername, ':author_username' => $authorUsername,
'author@domain.com' => $authorEmail, 'author@domain.com' => $authorEmail,
@@ -124,6 +128,8 @@ foreach ($files as $file) {
':package_slug_without_prefix' => $packageSlugWithoutPrefix, ':package_slug_without_prefix' => $packageSlugWithoutPrefix,
'Skeleton' => $className, 'Skeleton' => $className,
'skeleton' => $packageSlug, 'skeleton' => $packageSlug,
'migration_table_name' => titleSnake($packageSlug),
'variable' => $variableName,
':package_description' => $description, ':package_description' => $description,
]); ]);
@@ -135,9 +141,10 @@ foreach ($files as $file) {
str_contains($file, determineSeparator('src/Facades/Skeleton.php')) => rename($file, determineSeparator('./src/Facades/' . $className . '.php')), str_contains($file, determineSeparator('src/Facades/Skeleton.php')) => rename($file, determineSeparator('./src/Facades/' . $className . '.php')),
str_contains($file, determineSeparator('src/Commands/SkeletonCommand.php')) => rename($file, determineSeparator('./src/Commands/' . $className . 'Command.php')), str_contains($file, determineSeparator('src/Commands/SkeletonCommand.php')) => rename($file, determineSeparator('./src/Commands/' . $className . 'Command.php')),
str_contains($file, determineSeparator('src/Testing/TestsSkeleton.php')) => rename($file, determineSeparator('./src/Testing/Tests' . $className . '.php')), str_contains($file, determineSeparator('src/Testing/TestsSkeleton.php')) => rename($file, determineSeparator('./src/Testing/Tests' . $className . '.php')),
str_contains($file, determineSeparator('database/migrations/create_skeleton_table.php.stub')) => rename($file, determineSeparator('./database/migrations/create_' . $packageSlugWithoutPrefix . '_table.php.stub')), str_contains($file, determineSeparator('database/migrations/create_skeleton_table.php.stub')) => rename
($file, determineSeparator('./database/migrations/create_' . titleSnake($packageSlugWithoutPrefix) . '_table.php.stub')),
str_contains($file, determineSeparator('config/skeleton.php')) => rename($file, determineSeparator('./config/' . $packageSlugWithoutPrefix . '.php')), str_contains($file, determineSeparator('config/skeleton.php')) => rename($file, determineSeparator('./config/' . $packageSlugWithoutPrefix . '.php')),
str_contains($file, 'README.md') => remove_tag($file, 'delete'), str_contains($file, 'README.md') => removeTag($file, 'delete'),
default => [], default => [],
}; };
} }
@@ -148,7 +155,7 @@ if (! $useDependabot) {
} }
if (! $useLaravelRay) { if (! $useLaravelRay) {
remove_composer_deps(['spatie/laravel-ray']); removeComposerDeps(['spatie/laravel-ray'], 'require-dev');
} }
if (! $usePhpStan) { if (! $usePhpStan) {
@@ -156,32 +163,32 @@ if (! $usePhpStan) {
safeUnlink(__DIR__ . '/phpstan-baseline.neon'); safeUnlink(__DIR__ . '/phpstan-baseline.neon');
safeUnlink(__DIR__ . '/.github/workflows/phpstan.yml'); safeUnlink(__DIR__ . '/.github/workflows/phpstan.yml');
remove_composer_deps([ removeComposerDeps([
'phpstan/extension-installer', 'phpstan/extension-installer',
'phpstan/phpstan-deprecation-rules', 'phpstan/phpstan-deprecation-rules',
'phpstan/phpstan-phpunit', 'phpstan/phpstan-phpunit',
'nunomaduro/larastan', 'nunomaduro/larastan',
]); ], 'require-dev');
remove_composer_script(['analyse']); removeComposerDeps(['analyse'], 'scripts');
} }
if (! $usePint) { if (! $usePint) {
safeUnlink(__DIR__ . '/.github/workflows/fix-php-code-style-issues.yml'); safeUnlink(__DIR__ . '/.github/workflows/fix-php-code-style-issues.yml');
safeUnlink(__DIR__ . '/pint.json'); safeUnlink(__DIR__ . '/pint.json');
remove_composer_deps([ removeComposerDeps([
'laravel/pint', 'laravel/pint',
]); ], 'require-dev');
remove_composer_script(['format']); removeComposerDeps(['format'], 'scripts');
} }
if (! $useUpdateChangelogWorkflow) { if (! $useUpdateChangelogWorkflow) {
safeUnlink(__DIR__ . '/.github/workflows/update-changelog.yml'); safeUnlink(__DIR__ . '/.github/workflows/update-changelog.yml');
} }
confirm('Execute `composer install` and run tests?') && run('composer install && composer test'); confirm('Execute `composer install`?') && run('composer install');
if (confirm('Let this script delete itself?', true)) { if (confirm('Let this script delete itself?', true)) {
unlink(__FILE__); unlink(__FILE__);
@@ -189,7 +196,7 @@ if (confirm('Let this script delete itself?', true)) {
function ask(string $question, string $default = ''): string function ask(string $question, string $default = ''): string
{ {
$def = $default ? "\e[0;33m ({$default})" : ''; $def = $default ? "\e[0;33m ($default)" : '';
$answer = readline("\e[0;32m" . $question . $def . ": \e[0m"); $answer = readline("\e[0;32m" . $question . $def . ": \e[0m");
if (! $answer) { if (! $answer) {
@@ -217,7 +224,7 @@ function writeln(string $line): void
function run(string $command): string function run(string $command): string
{ {
return trim(shell_exec($command)); return trim((string) shell_exec($command));
} }
function slugify(string $subject): string function slugify(string $subject): string
@@ -225,12 +232,17 @@ function slugify(string $subject): string
return strtolower(trim(preg_replace('/[^A-Za-z0-9-]+/', '-', $subject), '-')); return strtolower(trim(preg_replace('/[^A-Za-z0-9-]+/', '-', $subject), '-'));
} }
function title_case(string $subject): string function titleCase(string $subject): string
{ {
return str_replace(' ', '', ucwords(str_replace(['-', '_'], ' ', $subject))); return str_replace(' ', '', ucwords(str_replace(['-', '_'], ' ', $subject)));
} }
function replace_in_file(string $file, array $replacements): void function titleSnake(string $subject, string $replace = '_'): string
{
return str_replace(['-', '_'], $replace, $subject);
}
function replaceInFile(string $file, array $replacements): void
{ {
$contents = file_get_contents($file); $contents = file_get_contents($file);
@@ -244,7 +256,7 @@ function replace_in_file(string $file, array $replacements): void
); );
} }
function remove_prefix(string $prefix, string $content): string function removePrefix(string $prefix, string $content): string
{ {
if (str_starts_with($content, $prefix)) { if (str_starts_with($content, $prefix)) {
return substr($content, strlen($prefix)); return substr($content, strlen($prefix));
@@ -253,96 +265,20 @@ function remove_prefix(string $prefix, string $content): string
return $content; return $content;
} }
function remove_composer_deps(array $names): void function removeComposerDeps(array $names, string $location): void
{ {
$data = json_decode(file_get_contents(__DIR__ . '/composer.json'), true); $data = json_decode(file_get_contents(__DIR__ . '/composer.json'), true);
foreach ($data['require-dev'] as $name => $version) { foreach ($data[$location] as $name => $version) {
if (in_array($name, $names, true)) { if (in_array($name, $names, true)) {
unset($data['require-dev'][$name]); unset($data[$location][$name]);
} }
} }
file_put_contents(__DIR__ . '/composer.json', json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE)); file_put_contents(__DIR__ . '/composer.json', json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE));
} }
function remove_composer_filament_deps(array $names): void function removeTag(string $file, string $tag): void
{
$data = json_decode(file_get_contents(__DIR__ . '/composer.json'), true);
foreach ($data['require'] as $name => $version) {
if (in_array($name, $names, true)) {
unset($data['require'][$name]);
}
}
file_put_contents(__DIR__ . '/composer.json', json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE));
}
function remove_composer_script(array $scriptNames): void
{
$data = json_decode(file_get_contents(__DIR__ . '/composer.json'), true);
foreach ($data['scripts'] as $name => $script) {
if (is_array($script)) {
foreach ($script as $k => $s) {
if (in_array($s, $scriptNames)) {
unset($data['scripts'][$name][$k]);
break;
}
}
} elseif (in_array($name, $scriptNames)) {
unset($data['scripts'][$name]);
break;
}
}
file_put_contents(__DIR__ . '/composer.json', json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE));
}
function remove_package_script(array $scriptNames): void
{
$data = json_decode(file_get_contents(__DIR__ . '/package.json'), true);
foreach ($data['scripts'] as $name => $script) {
if (is_array($script)) {
foreach ($script as $k => $s) {
if (in_array($s, $scriptNames)) {
unset($data['scripts'][$name][$k]);
break;
}
}
} elseif (in_array($name, $scriptNames)) {
unset($data['scripts'][$name]);
break;
}
}
foreach ($data['devDependencies'] as $name => $script) {
if (is_array($script)) {
foreach ($script as $k => $s) {
if (in_array($s, $scriptNames)) {
unset($data['devDependencies'][$name][$k]);
break;
}
}
} elseif (in_array($name, $scriptNames)) {
unset($data['devDependencies'][$name]);
break;
}
}
file_put_contents(__DIR__ . '/package.json', json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES |
JSON_UNESCAPED_UNICODE));
}
function remove_tag(string $file, string $tag): void
{ {
$contents = file_get_contents($file); $contents = file_get_contents($file);
@@ -366,12 +302,12 @@ function determineSeparator(string $path): string
function replaceForWindows(): array function replaceForWindows(): array
{ {
return preg_split('/\\r\\n|\\r|\\n/', run('dir /S /B * | findstr /v /i .git\ | findstr /v /i vendor | findstr /v /i ' . basename(__FILE__) . ' | findstr /r /i /M /F:/ ":author :vendor :package VendorName skeleton vendor_name vendor_slug author@domain.com"')); return preg_split('/\\r\\n|\\r|\\n/', run('dir /S /B * | findstr /v /i .git\ | findstr /v /i vendor | findstr /v /i '.basename(__FILE__).' | findstr /r /i /M /F:/ ":author :vendor :package VendorName skeleton migration_table_name vendor_name vendor_slug author@domain.com"'));
} }
function replaceForAllOtherOSes(): array function replaceForAllOtherOSes(): array
{ {
return explode(PHP_EOL, run('grep -E -r -l -i ":author|:vendor|:package|VendorName|skeleton|vendor_name|vendor_slug|author@domain.com" --exclude-dir=vendor ./* ./.github/* | grep -v ' . basename(__FILE__))); return explode(PHP_EOL, run('grep -E -r -l -i ":author|:vendor|:package|VendorName|skeleton|migration_table_name|vendor_name|vendor_slug|author@domain.com" --exclude-dir=vendor ./* ./.github/* | grep -v '.basename(__FILE__)));
} }
function removeDirectory($dir): void function removeDirectory($dir): void

View File

@@ -8,7 +8,7 @@ return new class extends Migration
{ {
public function up() public function up()
{ {
Schema::create('skeleton_table', function (Blueprint $table) { Schema::create('migration_table_name_table', function (Blueprint $table) {
$table->id(); $table->id();
// add fields // add fields

View File

@@ -5,9 +5,11 @@
"build": "npx tailwindcss -i resources/css/skeleton.css -o resources/dist/skeleton.css --postcss --minify" "build": "npx tailwindcss -i resources/css/skeleton.css -o resources/dist/skeleton.css --postcss --minify"
}, },
"devDependencies": { "devDependencies": {
"autoprefixer": "^10.4.7", "@tailwindcss/forms": "^0.5.4",
"postcss": "^8.4.14", "@tailwindcss/typography": "^0.5.9",
"postcss-import": "^15.0.0", "autoprefixer": "^10.4.14",
"tailwindcss": "^3.3.2" "postcss": "^8.4.26",
"postcss-import": "^15.1.0",
"tailwindcss": "^3.3.3"
} }
} }

View File

@@ -11,13 +11,13 @@
}, },
"devDependencies": { "devDependencies": {
"@awcodes/filament-plugin-purge": "^1.1.1", "@awcodes/filament-plugin-purge": "^1.1.1",
"autoprefixer": "^10.4.7", "autoprefixer": "^10.4.14",
"esbuild": "^0.17.19", "esbuild": "^0.17.19",
"npm-run-all": "^4.1.5", "npm-run-all": "^4.1.5",
"postcss": "^8.4.14", "postcss": "^8.4.26",
"postcss-import": "^15.0.0", "postcss-import": "^15.1.0",
"prettier": "^2.7.1", "prettier": "^2.7.1",
"prettier-plugin-tailwindcss": "^0.1.13", "prettier-plugin-tailwindcss": "^0.1.13",
"tailwindcss": "^3.3.2" "tailwindcss": "^3.3.3"
} }
} }

View File

@@ -1,14 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<phpunit <phpunit
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="vendor/phpunit/phpunit/phpunit.xsd" xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/10.2/phpunit.xsd"
backupGlobals="false" backupGlobals="false"
backupStaticAttributes="false"
bootstrap="vendor/autoload.php" bootstrap="vendor/autoload.php"
colors="true" colors="true"
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
processIsolation="false" processIsolation="false"
stopOnFailure="false" stopOnFailure="false"
executionOrder="random" executionOrder="random"
@@ -16,7 +12,8 @@
failOnRisky="true" failOnRisky="true"
failOnEmptyTestSuite="true" failOnEmptyTestSuite="true"
beStrictAboutOutputDuringTests="true" beStrictAboutOutputDuringTests="true"
verbose="true" cacheDirectory=".phpunit.cache"
backupStaticProperties="false"
> >
<testsuites> <testsuites>
<testsuite name="VendorName Test Suite"> <testsuite name="VendorName Test Suite">
@@ -24,9 +21,6 @@
</testsuite> </testsuite>
</testsuites> </testsuites>
<coverage> <coverage>
<include>
<directory suffix=".php">./src</directory>
</include>
<report> <report>
<html outputDirectory="build/coverage"/> <html outputDirectory="build/coverage"/>
<text outputFile="build/coverage.txt"/> <text outputFile="build/coverage.txt"/>
@@ -36,4 +30,9 @@
<logging> <logging>
<junit outputFile="build/report.junit.xml"/> <junit outputFile="build/report.junit.xml"/>
</logging> </logging>
<source>
<include>
<directory suffix=".php">./src</directory>
</include>
</source>
</phpunit> </phpunit>

View File

@@ -59,19 +59,21 @@ class SkeletonServiceProvider extends PackageServiceProvider
} }
} }
public function boot(): void public function packageRegistered(): void
{ {
parent::boot(); }
public function packageBooted(): void
{
// Asset Registration // Asset Registration
FilamentAsset::register( FilamentAsset::register(
$this->getAssets(), $this->getAssets(),
$this->getAssetPackage() $this->getAssetPackageName()
); );
FilamentAsset::registerScriptData( FilamentAsset::registerScriptData(
$this->getScriptData(), $this->getScriptData(),
$this->getAssetPackage() $this->getAssetPackageName()
); );
// Icon Registration // Icon Registration
@@ -90,7 +92,7 @@ class SkeletonServiceProvider extends PackageServiceProvider
TestableLivewire::mixin(new TestsSkeleton()); TestableLivewire::mixin(new TestsSkeleton());
} }
protected function getAssetPackage(): ?string protected function getAssetPackageName(): ?string
{ {
return ':vendor_slug/:package_slug'; return ':vendor_slug/:package_slug';
} }