diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7e625905ec..f8f611c146 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -45,6 +45,7 @@ jobs: # Copy project files. cp -r ../themes/* themes + cp -r ../plugins/* plugins cp -r ../docker/php/config/* config # Fix up the config for CI. sed -i "s/'host' => 'mariadb'/'host' => 'localhost'/g" config/database.php diff --git a/.gitignore b/.gitignore index 7d9df14cb6..90007032a4 100644 --- a/.gitignore +++ b/.gitignore @@ -21,6 +21,8 @@ node_modules # Winter CMS files # Themes !/themes +# Custom plugins +!/plugins # Docker /docker/mariadb/init/*.sql diff --git a/.prettierignore b/.prettierignore index 7dfb891838..6d12d200d1 100644 --- a/.prettierignore +++ b/.prettierignore @@ -8,6 +8,7 @@ !/.github/ !/docker/ !/themes/ +!/plugins/ !/ISSUE_TEMPLATE.md !/README.md !/lighthouserc.js diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index ead4a3cd0b..01643bf8af 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -34,3 +34,4 @@ services: - "8080:80" volumes: - ../themes/godotengine:/var/www/html/themes/godotengine + - ../plugins/godotengine:/var/www/html/plugins/godotengine diff --git a/docker/php/init/init.sh b/docker/php/init/init.sh index 40be5ab942..d939a57001 100644 --- a/docker/php/init/init.sh +++ b/docker/php/init/init.sh @@ -21,6 +21,8 @@ if [ ! -e $CONTAINER_ALREADY_STARTED ]; then php artisan plugin:install "pikanji.agent" php artisan plugin:install "rainlab.blog" php artisan plugin:install "sobored.rss" + # Make sure custom plugins are properly initialized. + php artisan plugin:refresh "godotengine.utility" echo "Updating file permissions for newly created files..." chown www-data:www-data -R . diff --git a/plugins/godotengine/utility/Plugin.php b/plugins/godotengine/utility/Plugin.php new file mode 100644 index 0000000000..f4dca353a9 --- /dev/null +++ b/plugins/godotengine/utility/Plugin.php @@ -0,0 +1,21 @@ + 'GodotEngine Utility', + 'description' => 'Provides utility functions for Godot Engine website.', + 'author' => 'Godot Engine', + 'icon' => 'icon-leaf', + 'homepage' => 'https://godotengine.org' + ]; + } + + public function register() + { + $this->registerConsoleCommand('godotengine.ping', 'GodotEngine\Utility\Console\Ping'); + } +} diff --git a/plugins/godotengine/utility/composer.json b/plugins/godotengine/utility/composer.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/plugins/godotengine/utility/composer.json @@ -0,0 +1 @@ +{} diff --git a/plugins/godotengine/utility/console/Ping.php b/plugins/godotengine/utility/console/Ping.php new file mode 100644 index 0000000000..18e2ade08d --- /dev/null +++ b/plugins/godotengine/utility/console/Ping.php @@ -0,0 +1,45 @@ +output->writeln('GodotEngine.Utility pongs in response!'); + } +}