vanilophp/framework

Konekt\Concord\ConcordServiceProvider not publishable

Closed this issue · 16 comments

After running composer require vanilo/framework I check the vendor list and konekt does not show up so unable to do

php artisan vendor:publish --provider="Konekt\Concord\ConcordServiceProvider" --tag=config

Not sure what I'm doing wrong

PHP 7.4.16
Laravel Framework 8.36.1
PyroCMS v3.9
Composer 1.10.21

Hmmm 🤔 - I've made a fresh install using PHP 7.4 and couldn't (yet) reproduce it.

What if you simply run php artisan vendor:publish without arguments, do you see Concord in the list?

image

Btw, you can do this step manually by creating the file config/concord.php with the following content:

<?php

return [
    'modules' => [
        /**
         * Example:
         * VendorA\ModuleX\Providers\ModuleServiceProvider::class,
         * VendorB\ModuleY\Providers\ModuleServiceProvider::class
         *
         */
    ],
    'register_route_models' => true
];
Which provider or tag's files would you like to publish?:
  [0 ] Publish files from all providers and tags listed below
  [1 ] Provider: Barryvdh\HttpCache\ServiceProvider
  [2 ] Provider: Illuminate\Foundation\Providers\FoundationServiceProvider
  [3 ] Provider: Illuminate\Mail\MailServiceProvider
  [4 ] Provider: Illuminate\Notifications\NotificationServiceProvider
  [5 ] Provider: Illuminate\Pagination\PaginationServiceProvider
  [6 ] Provider: Intervention\Image\ImageServiceProviderLaravelRecent
  [7 ] Provider: Laravel\Scout\ScoutServiceProvider
  [8 ] Provider: Laravelium\Sitemap\SitemapServiceProvider
  [9 ] Tag: config
  [10] Tag: laravel-errors
  [11] Tag: laravel-mail
  [12] Tag: laravel-notifications
  [13] Tag: laravel-pagination
  [14] Tag: public
  [15] Tag: views

ok I've added the concord.php file manually, didn't know if that was sufficient

@yat0tv From what I see, the installation of vanilo/framework and its dependencies didn't complete.

Does composer show vanilo/framework display the package?

If not: do you see any errors if you run composer require vanilo/framework?

Using version ^2.1 for vanilo/framework
./composer.json has been updated
Running composer update vanilo/framework
Loading composer repositories with package information
Updating dependencies
Nothing to modify in lock file
Installing dependencies from lock file (including require-dev)
Nothing to install, update or remove
Package asm89/twig-cache-extension is abandoned, you should avoid using it. Use twig/cache-extension instead.
Package fzaninotto/faker is abandoned, you should avoid using it. No replacement was suggested.
Generating optimized autoload files
Class StringTemplate\Test\EngineTest located in ./vendor/nicmart/string-template/tests/StringTemplate/EngineTest.php does not comply with psr-0 autoloading standard. Skipping.
Class StringTemplate\Test\ObjectMock located in ./vendor/nicmart/string-template/tests/StringTemplate/EngineTest.php does not comply with psr-0 autoloading standard. Skipping.
Class StringTemplate\Test\NestedKeyArrayTest located in ./vendor/nicmart/string-template/tests/StringTemplate/NestedKeyArrayTest.php does not comply with psr-0 autoloading standard. Skipping.
Class StringTemplate\Test\NestedKeyIteratorTest located in ./vendor/nicmart/string-template/tests/StringTemplate/NestedKeyIteratorTest.php does not comply with psr-0 autoloading standard. Skipping.
Class StringTemplate\Test\RecursiveArrayOnlyIteratorTest located in ./vendor/nicmart/string-template/tests/StringTemplate/RecursiveArrayOnlyIteratorTest.php does not comply with psr-0 autoloading standard. Skipping.
Class StringTemplate\Test\SprintfEngineTest located in ./vendor/nicmart/string-template/tests/StringTemplate/SprintfEngineTest.php does not comply with psr-0 autoloading standard. Skipping.
Class StringTemplate\Test\ObjectMockForSprintf located in ./vendor/nicmart/string-template/tests/StringTemplate/SprintfEngineTest.php does not comply with psr-0 autoloading standard. Skipping.
Class ParsedownExtraTest located in ./vendor/erusev/parsedown-extra/test/ParsedownExtraTest.php does not comply with psr-0 autoloading standard. Skipping.

It's in the package, and yes there are a few errors/warnings

Ok, it looks like it got installed; those warnings are apparently not failing the installation.

Did the provider already show up in php artisan vendor:publish?

If not, does it show up after running the commands below?

php artisan cache:clear
composer dump-autoload

What does php artisan concord:modules -a give?

In general it looks to me that composer is somehow not fully able to complete the installation properly. But I can be wrong.

List of vendors, still the same 15 that I listed before, even after doing the clear and autoload

php artisan concord:modules -a
There are no commands defined in the "concord" namespace.

OK, the installation is clearly incomplete. I suggest the followings:

  1. Delete the entire vendor/ folder
  2. Run composer install (save the errors output - if any)
  3. Run composer show konekt/concord - it should show the package
  4. if you see it's installed (1.10) then run php artisan concord:modules -a
  5. IF it gives the same error, then please paste the contents of your composer.json file

Yup no change after doing those here's the composer file contents

{
    "name": "pyrocms/pyrocms",
    "description": "Build better Laravel websites and applications faster with Pyro.",
    "type": "project",
    "keywords": [
        "cms",
        "pyro",
        "pyrocms",
        "php cms",
        "laravel cms"
    ],
    "license": "MIT",
    "authors": [
        {
            "name": "PyroCMS, Inc.",
            "email": "support@pyrocms.com"
        },
        {
            "name": "Ryan Thompson",
            "email": "ryan@pyrocms.com"
        }
    ],
    "require": {
        "anomaly/streams-platform": "~1.9.0",
        "anomaly/default_authenticator-extension": "~2.1.0",
        "anomaly/throttle_security_check-extension": "~2.1.0",
        "anomaly/private_storage_adapter-extension": "~1.1.0",
        "anomaly/default_page_handler-extension": "~2.1.0",
        "anomaly/user_security_check-extension": "~2.1.0",
        "anomaly/xml_feed_widget-extension": "~2.1.0",
        "anomaly/page_link_type-extension": "~2.1.0",
        "anomaly/url_link_type-extension": "~2.1.0",
        "anomaly/relationship-field_type": "~2.2.0",
        "anomaly/colorpicker-field_type": "~2.3.0",
        "anomaly/polymorphic-field_type": "~2.1.0",
        "anomaly/checkboxes-field_type": "~2.4.0",
        "anomaly/encrypted-field_type": "~2.1.0",
        "anomaly/datetime-field_type": "~3.0.0",
        "anomaly/repeater-field_type": "~1.3.0",
        "anomaly/language-field_type": "~2.2.0",
        "anomaly/multiple-field_type": "~2.3.0",
        "anomaly/textarea-field_type": "~2.1.0",
        "anomaly/markdown-field_type": "~3.1.0",
        "anomaly/wysiwyg-field_type": "~3.1.0",
        "anomaly/boolean-field_type": "~2.3.0",
        "anomaly/country-field_type": "~2.3.0",
        "anomaly/decimal-field_type": "~2.1.0",
        "anomaly/integer-field_type": "~2.1.0",
        "anomaly/editor-field_type": "~3.1.0",
        "anomaly/select-field_type": "~2.3.0",
        "anomaly/slider-field_type": "~3.0.0",
        "anomaly/addon-field_type": "~2.2.0",
        "anomaly/email-field_type": "~2.1.0",
        "anomaly/state-field_type": "~2.3.0",
        "anomaly/files-field_type": "~2.3.0",
        "anomaly/tags-field_type": "~2.4.0",
        "anomaly/slug-field_type": "~2.1.0",
        "anomaly/text-field_type": "~2.2.0",
        "anomaly/file-field_type": "~2.2.0",
        "anomaly/url-field_type": "~2.2.0",
        "anomaly/configuration-module": "~2.1.0",
        "anomaly/preferences-module": "~2.2.0",
        "anomaly/navigation-module": "~2.4.0",
        "anomaly/dashboard-module": "~2.2.0",
        "anomaly/redirects-module": "~2.3.0",
        "anomaly/variables-module": "~2.4.0",
        "anomaly/settings-module": "~2.4.0",
        "anomaly/addons-module": "~2.3.0",
        "anomaly/blocks-module": "~1.3.0",
        "anomaly/search-module": "~3.0.0",
        "anomaly/system-module": "~1.1.0",
        "anomaly/streams-module": "~1.3.0",
        "anomaly/users-module": "~2.5.0",
        "anomaly/pages-module": "~2.6.0",
        "anomaly/posts-module": "~2.6.0",
        "anomaly/files-module": "~2.6.0",
        "anomaly/contact-plugin": "~1.2.0",
        "anomaly/helper-plugin": "~2.1.0",
        "anomaly/robots-extension": "~2.1.0",
        "anomaly/sitemap-extension": "~2.3.0",
        "anomaly/html_block-extension": "~1.0.0",
        "anomaly/wysiwyg_block-extension": "~1.0.0",
        "pyrocms/starter-theme": "~1.0.0",
        "pyrocms/accelerant-theme": "~1.2.0",
        "vanilo/framework": "^2.1",
        "vanilo/cart": "^2.1"
    },
    "require-dev": {
        "filp/whoops": "~2.0",
        "phpunit/phpunit": "^9.0",
        "fzaninotto/faker": "~1.4",
        "mockery/mockery": "0.9.*",
        "symfony/css-selector": "3.1.*",
        "symfony/dom-crawler": "3.1.*",
        "anomaly/installer-module": "~2.4.0"
    },
    "repositories": [
        {
            "type": "composer",
            "url": "https://packages.pyrocms.com"
        },
        {
            "type": "composer",
            "url": "https://community.pyrocms.com"
        }
    ],
    "autoload": {
        "classmap": [
            "database"
        ],
        "psr-4": {
            "App\\": "app/"
        }
    },
    "autoload-dev": {
        "classmap": [
            "tests/TestCase.php"
        ]
    },
    "extra": {
        "merge-plugin": {
            "include": [
                "addons/*/*/*/composer.json",
                "core/*/*/composer.json"
            ],
            "recurse": true,
            "replace": false
        },
        "laravel": {
            "dont-discover": [
                "*"
            ]
        }
    },
    "config": {
        "bin-dir": "bin",
        "preferred-install": "dist",
        "optimize-autoloader": true
    }
}

Ok, here's the problem:

        "laravel": {
            "dont-discover": [
                "*"
            ]
        }

Package auto discovery is disabled.
It means you need to add all the the external packages one by one to config/app.php

The folks at PyroCMS have disabled this base Laravel feature:
https://pyrocms.com/documentation/pyrocms/3.7/prologue/release-notes#disabled-laravel-package-discovery

Here's the reasoning behind:

Some addons like our new System module leverage package dependencies that would otherwise be auto-discovered. We need to retain control over registration in general so make sure to disable auto-discover for Laravel packages.

Is there a convent way to know which packages I should manually add, looking at a plain install separate from pyro I'm seeing

Providers:

Konekt\Concord\ConcordServiceProvider::class,
Konekt\Enum\Eloquent\EnumServiceProvider::class,
Konekt\Gears\Providers\GearsServiceProvider::class,
Konekt\LaravelMigrationCompatibility\LaravelMigrationCompatibilityProvider::class,
Konekt\Menu\MenuServiceProvider::class,

Alias':

'Concord' => Konekt\Concord\Facades\Concord::class,
'Helper' => Konekt\Concord\Facades\Helper::class,
'Menu' => Konekt\Menu\Facades\Menu::class,
'Cart' => Vanilo\Cart\Facades\Cart::class,

I think the Spatie Media Library package, the Eloquent Sluggable and the Breadcrumbs package needs to be added as well.

I made a fresh install and composer reports the following discovered packages:

Discovered Package: cviebrock/eloquent-sluggable
Discovered Package: diglactic/laravel-breadcrumbs
Discovered Package: facade/ignition
Discovered Package: fideloper/proxy
Discovered Package: fruitcake/laravel-cors
Discovered Package: intervention/image
Discovered Package: konekt/concord
Discovered Package: konekt/enum-eloquent
Discovered Package: konekt/gears
Discovered Package: konekt/laravel-migration-compatibility
Discovered Package: konekt/menu
Discovered Package: laracasts/flash
Discovered Package: laravel/sail
Discovered Package: laravel/tinker
Discovered Package: laravelcollective/html
Discovered Package: nesbot/carbon
Discovered Package: nunomaduro/collision
Discovered Package: spatie/laravel-medialibrary
Discovered Package: vanilo/cart

of which these are coming with a stock Laravel installation:

Discovered Package: facade/ignition
Discovered Package: fideloper/proxy
Discovered Package: fruitcake/laravel-cors
Discovered Package: laravel/sail
Discovered Package: laravel/tinker
Discovered Package: nesbot/carbon
Discovered Package: nunomaduro/collision

thus the diff is the list of these packages:

Discovered Package: cviebrock/eloquent-sluggable
Discovered Package: diglactic/laravel-breadcrumbs
Discovered Package: intervention/image
Discovered Package: konekt/concord
Discovered Package: konekt/enum-eloquent
Discovered Package: konekt/gears
Discovered Package: konekt/laravel-migration-compatibility
Discovered Package: konekt/menu
Discovered Package: laracasts/flash
Discovered Package: laravelcollective/html
Discovered Package: spatie/laravel-medialibrary
Discovered Package: vanilo/cart

Unfortunately, you need to check each packages composer.json files and add the service providers and facades(aliases) to config/app.php.

eg.:

stale commented

This issue has been automatically marked as stale because it has not had recent activity. It will be closed within 3 days if no further activity occurs. Thank you for your contributions.