From 11f17f99af993508382bd6edba26442108a52734 Mon Sep 17 00:00:00 2001
From: Bart Jaskulski <bjaskulski@protonmail.com>
Date: Sun, 10 Mar 2024 01:49:27 +0100
Subject: [PATCH] feat: include default extensions in runtime

Signed-off-by: Bart Jaskulski <bjaskulski@protonmail.com>
---
 src/Extension/ExtensionsSet.php  |  6 ++++++
 src/Init.php                     | 18 ++++++++----------
 src/Resources/bindings/index.php |  2 ++
 3 files changed, 16 insertions(+), 10 deletions(-)

diff --git a/src/Extension/ExtensionsSet.php b/src/Extension/ExtensionsSet.php
index b09c8cf..650560e 100644
--- a/src/Extension/ExtensionsSet.php
+++ b/src/Extension/ExtensionsSet.php
@@ -12,6 +12,12 @@ class ExtensionsSet implements \IteratorAggregate {
 	/** @var array<class-string<Extension>, Extension> */
 	private $extensions = [];
 
+	public function __construct( Extension ...$extensions ) {
+		foreach ( $extensions as $extension ) {
+			$this->add( $extension );
+		}
+	}
+
 	public function add( Extension $extension ): void {
 		$class                      = \get_class( $extension );
 		$this->extensions[ $class ] = $extension;
diff --git a/src/Init.php b/src/Init.php
index 96e310f..b0b8a47 100644
--- a/src/Init.php
+++ b/src/Init.php
@@ -56,19 +56,17 @@ final class Init {
 		$backtrace = \debug_backtrace( \DEBUG_BACKTRACE_IGNORE_ARGS, 1 );
 		$filename  = $backtrace[0]['file'];
 
-		$extensions = new ExtensionsSet();
-		$this->discover_extensions( $extensions );
-
-		$kernel = new Kernel( $filename, $this->config, $extensions );
-		$kernel->boot();
-	}
-
-	private function discover_extensions( $extensions ) {
-		$extensions->add( new ConfigExtension() );
-		$extensions->add( new BuiltinExtension() );
+		$extensions = new ExtensionsSet(
+			new BuiltinExtension(),
+			new ConfigExtension(),
+			new ConditionalExtension()
+		);
 
 		if ( class_exists( \WPDesk_Plugin_Info::class ) ) {
 			$extensions->add( new LegacyExtension() );
 		}
+
+		$kernel = new Kernel( $filename, $this->config, $extensions );
+		$kernel->boot();
 	}
 }
diff --git a/src/Resources/bindings/index.php b/src/Resources/bindings/index.php
index 12db3d1..1fd46fc 100644
--- a/src/Resources/bindings/index.php
+++ b/src/Resources/bindings/index.php
@@ -2,8 +2,10 @@
 
 use WPDesk\Init\Extension\CommonBinding\I18n;
 use WPDesk\Init\Extension\CommonBinding\RequirementsCheck;
+use WPDesk\Init\Extension\CommonBinding\CustomOrderTableCompatibility;
 
 return [
 	RequirementsCheck::class,
 	I18n::class,
+	CustomOrderTableCompatibility::class,
 ];
-- 
GitLab