registerNamespaces(); $this->registerModules(); } /** * Register the service provider. */ public function register() { $this->registerServices(); $this->setupStubPath(); $this->registerProviders(); } /** * Setup stub path. */ public function setupStubPath() { Stub::setBasePath(__DIR__ . '/Commands/stubs'); $this->app->booted(function ($app) { /** @var RepositoryInterface $moduleRepository */ $moduleRepository = $app[RepositoryInterface::class]; if ($moduleRepository->config('stubs.enabled') === true) { Stub::setBasePath($moduleRepository->config('stubs.path')); } }); } /** * {@inheritdoc} */ protected function registerServices() { $this->app->singleton(Contracts\RepositoryInterface::class, function ($app) { $path = $app['config']->get('modules.paths.modules'); return new Laravel\LaravelFileRepository($app, $path); }); $this->app->alias(Contracts\RepositoryInterface::class, 'modules'); } }