/** * Handle the command. * * @param InstallExtension|Kernel $console * @param AddonManager $manager * @param Dispatcher $dispatcher * @param ExtensionRepositoryInterface $extensions * @return bool */ public function handle(Kernel $console, AddonManager $manager, Dispatcher $dispatcher, ExtensionRepositoryInterface $extensions) { $this->extension->fire('installing'); $options = ['--addon' => $this->extension->getNamespace(), '--force' => true]; $console->call('migrate:refresh', $options); $extensions->install($this->extension); $manager->register(); if ($this->seed) { $console->call('db:seed', $options); } $this->extension->fire('installed'); $dispatcher->fire(new ExtensionWasInstalled($this->extension)); return true; }
/** * Execute the console command. */ public function fire(AddonManager $addons) { $namespace = $this->argument('namespace'); if (!str_is('*.*.*', $namespace)) { throw new \Exception("The namespace should be snake case and formatted like: {vendor}.{type}.{slug}"); } list($vendor, $type, $slug) = array_map(function ($value) { return str_slug(strtolower($value), '_'); }, explode('.', $namespace)); $type = str_singular($type); $path = $this->dispatch(new MakeAddonPaths($vendor, $type, $slug, $this)); $this->dispatch(new WriteAddonLang($path, $type, $slug)); $this->dispatch(new WriteAddonClass($path, $type, $slug, $vendor)); $this->dispatch(new WriteAddonComposer($path, $type, $slug, $vendor)); $this->dispatch(new WriteAddonServiceProvider($path, $type, $slug, $vendor)); $addons->register(); if ($type == 'module' || $this->option('migration')) { $this->call('make:migration', ['name' => 'create_' . $slug . '_fields', '--addon' => "{$vendor}.{$type}.{$slug}", '--fields' => true]); } }
/** * Execute the console command. */ public function fire(Dispatcher $events, Application $application, AddonManager $manager) { $this->dispatch(new ConfirmLicense($this)); $data = new Collection(); $this->dispatch(new SetStreamsData($data)); $this->dispatch(new SetDatabaseData($data, $this)); $this->dispatch(new SetApplicationData($data, $this)); $this->dispatch(new SetAdminData($data, $this)); $this->dispatch(new SetOtherData($data, $this)); $this->dispatch(new WriteEnvironmentFile($data->all())); $this->dispatch(new ReloadEnvironmentFile()); $this->dispatch(new ConfigureDatabase()); $this->dispatch(new SetDatabasePrefix()); $this->dispatch(new LocateApplication()); $installers = new InstallerCollection(); $this->dispatch(new LoadCoreInstallers($installers)); $this->dispatch(new LoadApplicationInstallers($installers)); $this->dispatch(new LoadModuleInstallers($installers)); $this->dispatch(new LoadExtensionInstallers($installers)); $this->dispatch(new RunInstallers($installers, $this)); $this->call('env:set', ['line' => 'INSTALLED=true']); $this->dispatch(new ReloadEnvironmentFile()); $installers->add(new Installer('streams::installer.running_migrations', function (Kernel $console) { $console->call('migrate', ['--force' => true, '--no-addons' => true]); })); $manager->register(); // Register all of our addons. $events->fire(new StreamsHasInstalled($installers)); $this->info('Running post installation tasks.'); $this->dispatch(new LoadModuleSeeders($installers)); $this->dispatch(new LoadExtensionSeeders($installers)); $installers->add(new Installer('streams::installer.running_seeds', function (Kernel $console) { $console->call('db:seed', ['--force' => true]); })); $this->dispatch(new RunInstallers($installers, $this)); }