From b54903624bc035d4a5269c005919a862af9095c3 Mon Sep 17 00:00:00 2001 From: Jeremy Postlethwaite Date: Sun, 26 Nov 2023 13:58:05 -0800 Subject: [PATCH] PG-15 (#2) v73.0.0 --- .gitattributes | 16 +++-- .php-cs-fixer.dist | 4 +- README.md | 68 ++++++++++-------- composer.json | 18 +---- ...tisan-about-playground-matrix-resource.png | Bin 0 -> 41014 bytes src/ServiceProvider.php | 21 +++++- swagger.json | 7 +- 7 files changed, 78 insertions(+), 56 deletions(-) create mode 100644 resources/docs/artisan-about-playground-matrix-resource.png diff --git a/.gitattributes b/.gitattributes index 8e54dc9..83b0074 100644 --- a/.gitattributes +++ b/.gitattributes @@ -2,15 +2,23 @@ # https://www.kernel.org/pub/software/scm/git/docs/gitattributes.html # Ignore all test and documentation with "export-ignore". +/.editorconfig export-ignore /.github export-ignore /.gitattributes export-ignore /.gitignore export-ignore -/.phpunit.cache export-ignore -/phpunit.xml export-ignore -/tests export-ignore -/.editorconfig export-ignore /.php-cs-fixer.cache export-ignore /.php-cs-fixer.dist export-ignore +/.phpunit.cache export-ignore +# Database components are for testing only. +/database export-ignore +/docs export-ignore +/resources/docs export-ignore +/tests export-ignore +/vendor export-ignore +/composer.lock export-ignore +/package.json export-ignore +/phpunit.xml export-ignore +/phpunit.xml.dist export-ignore /psalm.xml export-ignore /psalm.xml.dist export-ignore /testbench.yaml export-ignore diff --git a/.php-cs-fixer.dist b/.php-cs-fixer.dist index 7a92df2..775e50e 100644 --- a/.php-cs-fixer.dist +++ b/.php-cs-fixer.dist @@ -214,11 +214,13 @@ $rules_laravel = [ $finder = PhpCsFixer\Finder::create() ->in([ __DIR__ . '/config', + // __DIR__ . '/database', // __DIR__ . '/lang', // __DIR__ . '/resources', __DIR__ . '/routes', __DIR__ . '/src', - __DIR__ . '/tests', + // __DIR__ . '/tests/Feature', + __DIR__ . '/tests/Unit', ]) ->name('*.php') ->notName('*.blade.php') diff --git a/README.md b/README.md index 5902549..38806a2 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,15 @@ -# playground-matrix-resource +# Playground Matrix Resource -The playground-matrix-resource Laravel package. +The `playground-matrix-resource` Laravel package. -This package provides an API and a Blade UI for interacting with the Playground Matrix. +This package provides an API and a Blade UI for interacting with the [Playground Matrix](https://github.com/gammamatrix/playground-matrix), a project management and task system. + +If you only need the JSON API, the Blade UI may be disabled. + +This application provides Swagger documentation: [swagger.json](swagger.json). +- See the [Playground Matrix Resource swagger.json on the Swagger Editor.](https://editor.swagger.io/?url=https://raw.githubusercontent.com/gammamatrix/playground-matrix-resource/develop/swagger.json) +- The endpoint models support locks, trash with force delete, restoring and more. +- Index endpoints support advanced query filtering. ## Installation @@ -13,18 +20,22 @@ composer require gammamatrix/playground-matrix-resource ``` You can publish the config file with: + ```bash php artisan vendor:publish --provider="GammaMatrix\Playground\Matrix\Resource\ServiceProvider" --tag="playground-config" ``` +## Configuration + +All routes are enabled by default. They may be disabled via enviroment variable or the configuration. + See the contents of the published config file: [config/playground-matrix-resource.php](config/playground-matrix-resource.php) You can publish the routes file with: ```bash php artisan vendor:publish --provider="GammaMatrix\Playground\Matrix\Resource\ServiceProvider" --tag="playground-routes" ``` - -See the authentication routes: [routes](routes) +- The routes while be published in a folder at `routes/playground-matrix-resource` ### Environment Variables @@ -37,7 +48,7 @@ See the authentication routes: [routes](routes) If you do not want to use the flexible policies available in Playground, you may publish the routes to your base application and customize them and the middleware. -The default middleware is set in [config/playground-matrix-resource.php](config/playground-matrix-resource.php) (may also be published): `'auth:sanctum,web'` +The default middleware is set in [config/playground-matrix-resource.php](config/playground-matrix-resource.php) (may also be published): `auth:sanctum,web` If you wish to use your own policies, copy from [src/Policies](src/Policies). @@ -51,23 +62,25 @@ If you wish to use your own policies, copy from [src/Policies](src/Policies). ##### Routes -| env() | config() | -|------------------------------------------------|---------------------------------------| -| `PLAYGROUND_MATRIX_RESOURCE_ROUTES_MATRIX` | `playground-matrix.routes.matrix` | -| `PLAYGROUND_MATRIX_RESOURCE_ROUTES_BOARDS` | `playground-matrix.routes.backlogs` | -| `PLAYGROUND_MATRIX_RESOURCE_ROUTES_EPICS` | `playground-matrix.routes.boards` | -| `PLAYGROUND_MATRIX_RESOURCE_ROUTES_FLOWS` | `playground-matrix.routes.epics` | -| `PLAYGROUND_MATRIX_RESOURCE_ROUTES_MILESTONES` | `playground-matrix.routes.milestones` | -| `PLAYGROUND_MATRIX_RESOURCE_ROUTES_NOTES` | `playground-matrix.routes.notes` | -| `PLAYGROUND_MATRIX_RESOURCE_ROUTES_PROJECTS` | `playground-matrix.routes.projects` | -| `PLAYGROUND_MATRIX_RESOURCE_ROUTES_RELEASES` | `playground-matrix.routes.releases` | -| `PLAYGROUND_MATRIX_RESOURCE_ROUTES_ROADMAPS` | `playground-matrix.routes.roadmaps` | -| `PLAYGROUND_MATRIX_RESOURCE_ROUTES_SOURCES` | `playground-matrix.routes.sources` | -| `PLAYGROUND_MATRIX_RESOURCE_ROUTES_SPRINTS` | `playground-matrix.routes.sprints` | -| `PLAYGROUND_MATRIX_RESOURCE_ROUTES_TAGS` | `playground-matrix.routes.tags` | -| `PLAYGROUND_MATRIX_RESOURCE_ROUTES_TEAMS` | `playground-matrix.routes.teams` | -| `PLAYGROUND_MATRIX_RESOURCE_ROUTES_TICKETS` | `playground-matrix.routes.tickets` | -| `PLAYGROUND_MATRIX_RESOURCE_ROUTES_VERSIONS` | `playground-matrix.routes.versions` | +See the matrix routes: [routes](routes) + +| env() | config() | +|------------------------------------------------|------------------------------------------------| +| `PLAYGROUND_MATRIX_RESOURCE_ROUTES_MATRIX` | `playground-matrix-resource.routes.matrix` | +| `PLAYGROUND_MATRIX_RESOURCE_ROUTES_BOARDS` | `playground-matrix-resource.routes.backlogs` | +| `PLAYGROUND_MATRIX_RESOURCE_ROUTES_EPICS` | `playground-matrix-resource.routes.boards` | +| `PLAYGROUND_MATRIX_RESOURCE_ROUTES_FLOWS` | `playground-matrix-resource.routes.epics` | +| `PLAYGROUND_MATRIX_RESOURCE_ROUTES_MILESTONES` | `playground-matrix-resource.routes.milestones` | +| `PLAYGROUND_MATRIX_RESOURCE_ROUTES_NOTES` | `playground-matrix-resource.routes.notes` | +| `PLAYGROUND_MATRIX_RESOURCE_ROUTES_PROJECTS` | `playground-matrix-resource.routes.projects` | +| `PLAYGROUND_MATRIX_RESOURCE_ROUTES_RELEASES` | `playground-matrix-resource.routes.releases` | +| `PLAYGROUND_MATRIX_RESOURCE_ROUTES_ROADMAPS` | `playground-matrix-resource.routes.roadmaps` | +| `PLAYGROUND_MATRIX_RESOURCE_ROUTES_SOURCES` | `playground-matrix-resource.routes.sources` | +| `PLAYGROUND_MATRIX_RESOURCE_ROUTES_SPRINTS` | `playground-matrix-resource.routes.sprints` | +| `PLAYGROUND_MATRIX_RESOURCE_ROUTES_TAGS` | `playground-matrix-resource.routes.tags` | +| `PLAYGROUND_MATRIX_RESOURCE_ROUTES_TEAMS` | `playground-matrix-resource.routes.teams` | +| `PLAYGROUND_MATRIX_RESOURCE_ROUTES_TICKETS` | `playground-matrix-resource.routes.tickets` | +| `PLAYGROUND_MATRIX_RESOURCE_ROUTES_VERSIONS` | `playground-matrix-resource.routes.versions` | ### UI @@ -80,11 +93,6 @@ If you wish to use your own policies, copy from [src/Policies](src/Policies). | `PLAYGROUND_MATRIX_RESOURCE_SITEMAP_USER` | `playground-matrix-resource.sitemap.user` | | `PLAYGROUND_MATRIX_RESOURCE_SITEMAP_VIEW` | `playground-matrix-resource.sitemap.view` | -## Configuration - -All routes are enabled by default. They may be disabled via enviroment variable or the configuration. - -See the contents of the published config file: [config/playground-matrix-resource.php](.config/playground-matrix-resource.php) ## Migrations @@ -95,7 +103,11 @@ This package requires the migrations in [playground-matrix](https://github.com/g ```sh composer test ``` +## About + +Playground provides information in the `artisan about` command. +screenshot of artisan about command with Playground Matrix Resource. ## Changelog diff --git a/composer.json b/composer.json index c8c939b..65bab22 100644 --- a/composer.json +++ b/composer.json @@ -13,7 +13,6 @@ ], "homepage": "https://github.com/gammamatrix/playground-matrix-resource", "license": "MIT", - "version": "73.0.0", "authors": [ { "name": "Jeremy Postlethwaite", @@ -21,20 +20,6 @@ "role": "Developer" } ], - "repositories": [ - { - "type": "vcs", - "url": "git@github.com:gammamatrix/playground.git" - }, - { - "type": "vcs", - "url": "git@github.com:gammamatrix/playground-matrix.git" - }, - { - "type": "vcs", - "url": "git@github.com:gammamatrix/playground-test.git" - } - ], "require": { "php": "^8.1", "gammamatrix/playground": "dev-develop|dev-master|^73.0", @@ -43,6 +28,9 @@ "require-dev": { "gammamatrix/playground-test": "dev-develop|dev-master|^73.0" }, + "suggest": { + "gammamatrix/playground-matrix": "Provides the models used by the Resource API in this package." + }, "minimum-stability": "dev", "prefer-stable": true, "autoload": { diff --git a/resources/docs/artisan-about-playground-matrix-resource.png b/resources/docs/artisan-about-playground-matrix-resource.png new file mode 100644 index 0000000000000000000000000000000000000000..e8a315b766bdc55d5520f820fe68df52bfb73494 GIT binary patch literal 41014 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 + // dirname(__DIR__).'/resources/lang', + // 'playground-matrix-resource' + // ); + if (!empty($config['load']['policies'])) { $this->setPolicyNamespace($config); $this->registerPolicies(); @@ -74,9 +79,15 @@ public function boot() if ($this->app->runningInConsole()) { // Publish configuration $this->publishes([ - dirname(__DIR__).'/config/'.$this->package.'.php' + dirname(__DIR__).'/config/playground-matrix-resource.php' => config_path($this->package.'.php') ], 'playground-config'); + + // Publish routes + $this->publishes([ + dirname(__DIR__).'/routes' + => base_path('routes/playground-matrix-resource') + ], 'playground-routes'); } } @@ -91,7 +102,7 @@ public function boot() public function register() { $this->mergeConfigFrom( - dirname(__DIR__) . '/config/'.$this->package.'.php', + dirname(__DIR__) . '/config/playground-matrix-resource.php', $this->package ); } @@ -157,10 +168,11 @@ public function about() $redirect = defined('\App\Providers\RouteServiceProvider::HOME') ? \App\Providers\RouteServiceProvider::HOME : null; AboutCommand::add('Playground Matrix Resource', fn () => [ + 'Load Policies' => !empty($config['load']['policies']) ? 'ENABLED' : 'DISABLED', 'Load Routes' => !empty($config['load']['routes']) ? 'ENABLED' : 'DISABLED', 'Load Views' => !empty($config['load']['views']) ? 'ENABLED' : 'DISABLED', - 'View Layout' => $config['layout'], + 'View [layout]' => sprintf('[%s]', $config['layout']), 'View [prefix]' => sprintf('[%s]', $config['view']), 'Sitemap Views' => !empty($config['sitemap']['enable']) ? 'ENABLED' : 'DISABLED', @@ -168,6 +180,9 @@ public function about() 'Sitemap User' => !empty($config['sitemap']['user']) ? 'ENABLED' : 'DISABLED', 'Sitemap [view]' => sprintf('[%s]', $config['sitemap']['view']), + 'Policy [Middleware]' => sprintf('[%s]', implode(', ', $config['middleware'])), + 'Policy [namespace]' => sprintf('[%s]', $config['policy_namespace']), + 'Package' => $this->package, 'Version' => $version, ]); diff --git a/swagger.json b/swagger.json index ca0d54a..e0237ff 100644 --- a/swagger.json +++ b/swagger.json @@ -15,13 +15,10 @@ } ], "info": { - "title": "Stub", + "title": "Playground Matrix Resource", "description": "", "termsOfService": "", - "contact": { - "email": "support@example.com" - }, - "version": "1.0.0" + "version": "73.0.0" }, "externalDocs": { "description": "",