feat core
filesystems
: Add new ExtensionFS feature which will create filesystems for each extension automatically.
This commit is contained in:
parent
efecf45fd6
commit
8621647ba4
8 changed files with 187 additions and 33 deletions
100
app/Providers/AppServiceProvider.php
Normal file
100
app/Providers/AppServiceProvider.php
Normal file
|
@ -0,0 +1,100 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Pterodactyl\Providers;
|
||||||
|
|
||||||
|
use Pterodactyl\Models;
|
||||||
|
use Illuminate\Support\Str;
|
||||||
|
use Illuminate\Support\Facades\URL;
|
||||||
|
use Illuminate\Pagination\Paginator;
|
||||||
|
use Illuminate\Support\Facades\View;
|
||||||
|
use Illuminate\Support\Facades\Cache;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
use Illuminate\Support\ServiceProvider;
|
||||||
|
use Pterodactyl\Extensions\Themes\Theme;
|
||||||
|
use Illuminate\Database\Eloquent\Relations\Relation;
|
||||||
|
|
||||||
|
class AppServiceProvider extends ServiceProvider
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Bootstrap any application services.
|
||||||
|
*/
|
||||||
|
public function boot(): void
|
||||||
|
{
|
||||||
|
Schema::defaultStringLength(191);
|
||||||
|
|
||||||
|
View::share('appVersion', $this->versionData()['version'] ?? 'undefined');
|
||||||
|
View::share('appIsGit', $this->versionData()['is_git'] ?? false);
|
||||||
|
|
||||||
|
Paginator::useBootstrap();
|
||||||
|
|
||||||
|
// If the APP_URL value is set with https:// make sure we force it here. Theoretically
|
||||||
|
// this should just work with the proxy logic, but there are a lot of cases where it
|
||||||
|
// doesn't, and it triggers a lot of support requests, so lets just head it off here.
|
||||||
|
//
|
||||||
|
// @see https://github.com/pterodactyl/panel/issues/3623
|
||||||
|
if (Str::startsWith(config('app.url') ?? '', 'https://')) {
|
||||||
|
URL::forceScheme('https');
|
||||||
|
}
|
||||||
|
|
||||||
|
Relation::enforceMorphMap([
|
||||||
|
'allocation' => Models\Allocation::class,
|
||||||
|
'api_key' => Models\ApiKey::class,
|
||||||
|
'backup' => Models\Backup::class,
|
||||||
|
'database' => Models\Database::class,
|
||||||
|
'egg' => Models\Egg::class,
|
||||||
|
'egg_variable' => Models\EggVariable::class,
|
||||||
|
'schedule' => Models\Schedule::class,
|
||||||
|
'server' => Models\Server::class,
|
||||||
|
'ssh_key' => Models\UserSSHKey::class,
|
||||||
|
'task' => Models\Task::class,
|
||||||
|
'user' => Models\User::class,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Register application service providers.
|
||||||
|
*/
|
||||||
|
public function register(): void
|
||||||
|
{
|
||||||
|
// Merge Blueprint configurations with existing configurations.
|
||||||
|
$this->mergeConfigFrom(base_path('config/ExtensionFS.php'), 'filesystems');
|
||||||
|
|
||||||
|
// Only load the settings service provider if the environment
|
||||||
|
// is configured to allow it.
|
||||||
|
if (!config('pterodactyl.load_environment_only', false) && $this->app->environment() !== 'testing') {
|
||||||
|
$this->app->register(SettingsServiceProvider::class);
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->app->singleton('extensions.themes', function () {
|
||||||
|
return new Theme();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return version information for the footer.
|
||||||
|
*/
|
||||||
|
protected function versionData(): array
|
||||||
|
{
|
||||||
|
return Cache::remember('git-version', 5, function () {
|
||||||
|
if (file_exists(base_path('.git/HEAD'))) {
|
||||||
|
$head = explode(' ', file_get_contents(base_path('.git/HEAD')));
|
||||||
|
|
||||||
|
if (array_key_exists(1, $head)) {
|
||||||
|
$path = base_path('.git/' . trim($head[1]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($path) && file_exists($path)) {
|
||||||
|
return [
|
||||||
|
'version' => substr(file_get_contents($path), 0, 8),
|
||||||
|
'is_git' => true,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
return [
|
||||||
|
'version' => config('app.version'),
|
||||||
|
'is_git' => false,
|
||||||
|
];
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
108
blueprint.sh
108
blueprint.sh
|
@ -49,6 +49,8 @@ export BLUEPRINT__FOLDER=$FOLDER
|
||||||
export BLUEPRINT__VERSION=$VERSION
|
export BLUEPRINT__VERSION=$VERSION
|
||||||
export BLUEPRINT__DEBUG="$FOLDER"/.blueprint/extensions/blueprint/private/debug/logs.txt
|
export BLUEPRINT__DEBUG="$FOLDER"/.blueprint/extensions/blueprint/private/debug/logs.txt
|
||||||
export NODE_OPTIONS=--openssl-legacy-provider
|
export NODE_OPTIONS=--openssl-legacy-provider
|
||||||
|
# Write internal variables.
|
||||||
|
__BuildDir=".blueprint/extensions/blueprint/private/build"
|
||||||
|
|
||||||
# Automatically navigate to the Pterodactyl directory when running the core.
|
# Automatically navigate to the Pterodactyl directory when running the core.
|
||||||
cd $FOLDER || return
|
cd $FOLDER || return
|
||||||
|
@ -217,8 +219,8 @@ if [[ $1 != "-bash" ]]; then
|
||||||
# Flush cache.
|
# Flush cache.
|
||||||
PRINT INFO "Flushing view, config and route cache.."
|
PRINT INFO "Flushing view, config and route cache.."
|
||||||
{
|
{
|
||||||
php artisan view:clear
|
php artisan view:cache
|
||||||
php artisan config:clear
|
php artisan config:cache
|
||||||
php artisan route:cache
|
php artisan route:cache
|
||||||
php artisan cache:clear
|
php artisan cache:clear
|
||||||
} &>> $BLUEPRINT__DEBUG
|
} &>> $BLUEPRINT__DEBUG
|
||||||
|
@ -787,14 +789,14 @@ if [[ ( $2 == "-i" ) || ( $2 == "-install" ) || ( $2 == "-add" ) ]]; then VCMD="
|
||||||
if [[ $Components_Navigation_Routes_ != "" ]]; then
|
if [[ $Components_Navigation_Routes_ != "" ]]; then
|
||||||
PRINT INFO "Linking navigation routes.."
|
PRINT INFO "Linking navigation routes.."
|
||||||
|
|
||||||
ImportConstructor=".blueprint/extensions/blueprint/private/build/extensions/routes/importConstructor.bak"
|
ImportConstructor="$__BuildDir/extensions/routes/importConstructor.bak"
|
||||||
AccountRouteConstructor=".blueprint/extensions/blueprint/private/build/extensions/routes/accountRouteConstructor.bak"
|
AccountRouteConstructor="$__BuildDir/extensions/routes/accountRouteConstructor.bak"
|
||||||
ServerRouteConstructor=".blueprint/extensions/blueprint/private/build/extensions/routes/serverRouteConstructor.bak"
|
ServerRouteConstructor="$__BuildDir/extensions/routes/serverRouteConstructor.bak"
|
||||||
|
|
||||||
{
|
{
|
||||||
cp ".blueprint/extensions/blueprint/private/build/extensions/routes/importConstructor" "$ImportConstructor"
|
cp "$__BuildDir/extensions/routes/importConstructor" "$ImportConstructor"
|
||||||
cp ".blueprint/extensions/blueprint/private/build/extensions/routes/accountRouteConstructor" "$AccountRouteConstructor"
|
cp "$__BuildDir/extensions/routes/accountRouteConstructor" "$AccountRouteConstructor"
|
||||||
cp ".blueprint/extensions/blueprint/private/build/extensions/routes/serverRouteConstructor" "$ServerRouteConstructor"
|
cp "$__BuildDir/extensions/routes/serverRouteConstructor" "$ServerRouteConstructor"
|
||||||
} 2>> $BLUEPRINT__DEBUG
|
} 2>> $BLUEPRINT__DEBUG
|
||||||
|
|
||||||
sed -i "s~\[id\^]~""${identifier^}""~g" $ImportConstructor
|
sed -i "s~\[id\^]~""${identifier^}""~g" $ImportConstructor
|
||||||
|
@ -959,16 +961,18 @@ if [[ ( $2 == "-i" ) || ( $2 == "-install" ) || ( $2 == "-add" ) ]]; then VCMD="
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Prepare build files.
|
# Prepare build files.
|
||||||
AdminControllerConstructor=".blueprint/extensions/blueprint/private/build/extensions/controller.build.bak"
|
AdminControllerConstructor="$__BuildDir/extensions/controller.build.bak"
|
||||||
AdminBladeConstructor=".blueprint/extensions/blueprint/private/build/extensions/admin.blade.php.bak"
|
AdminBladeConstructor="$__BuildDir/extensions/admin.blade.php.bak"
|
||||||
AdminRouteConstructor=".blueprint/extensions/blueprint/private/build/extensions/route.php.bak"
|
AdminRouteConstructor="$__BuildDir/extensions/route.php.bak"
|
||||||
AdminButtonConstructor=".blueprint/extensions/blueprint/private/build/extensions/button.blade.php.bak"
|
AdminButtonConstructor="$__BuildDir/extensions/button.blade.php.bak"
|
||||||
|
ConfigExtensionFS="$__BuildDir/extensions/config/ExtensionFS.build.bak"
|
||||||
|
|
||||||
{
|
{
|
||||||
if [[ $controller_type == "default" ]]; then cp ".blueprint/extensions/blueprint/private/build/extensions/controller.build" "$AdminControllerConstructor"; fi
|
if [[ $controller_type == "default" ]]; then cp "$__BuildDir/extensions/controller.build" "$AdminControllerConstructor"; fi
|
||||||
cp ".blueprint/extensions/blueprint/private/build/extensions/admin.blade.php" "$AdminBladeConstructor"
|
cp "$__BuildDir/extensions/admin.blade.php" "$AdminBladeConstructor"
|
||||||
cp ".blueprint/extensions/blueprint/private/build/extensions/route.php" "$AdminRouteConstructor"
|
cp "$__BuildDir/extensions/route.php" "$AdminRouteConstructor"
|
||||||
cp ".blueprint/extensions/blueprint/private/build/extensions/button.blade.php" "$AdminButtonConstructor"
|
cp "$__BuildDir/extensions/button.blade.php" "$AdminButtonConstructor"
|
||||||
|
cp "$__BuildDir/extensions/config/ExtensionFS.build" "$ConfigExtensionFS"
|
||||||
} 2>> $BLUEPRINT__DEBUG;
|
} 2>> $BLUEPRINT__DEBUG;
|
||||||
|
|
||||||
|
|
||||||
|
@ -1067,14 +1071,18 @@ if [[ ( $2 == "-i" ) || ( $2 == "-install" ) || ( $2 == "-add" ) ]]; then VCMD="
|
||||||
# Construct admin controller
|
# Construct admin controller
|
||||||
if [[ $controller_type == "default" ]]; then sed -i "s~\[id\]~$identifier~g" "$AdminControllerConstructor"; fi
|
if [[ $controller_type == "default" ]]; then sed -i "s~\[id\]~$identifier~g" "$AdminControllerConstructor"; fi
|
||||||
|
|
||||||
|
# Construct ExtensionFS
|
||||||
|
sed -i \
|
||||||
|
-e "s~\[id\]~$identifier~g" \
|
||||||
|
-e "s~\[id\^\]~${identifier^}~g" \
|
||||||
|
"$ConfigExtensionFS"
|
||||||
|
|
||||||
# Read final results.
|
# Read final results.
|
||||||
ADMINVIEW_RESULT=$(<"$AdminBladeConstructor")
|
ADMINVIEW_RESULT=$(<"$AdminBladeConstructor")
|
||||||
ADMINROUTE_RESULT=$(<"$AdminRouteConstructor")
|
ADMINROUTE_RESULT=$(<"$AdminRouteConstructor")
|
||||||
ADMINBUTTON_RESULT=$(<"$AdminButtonConstructor")
|
ADMINBUTTON_RESULT=$(<"$AdminButtonConstructor")
|
||||||
if [[ $controller_type == "default" ]]; then
|
if [[ $controller_type == "default" ]]; then ADMINCONTROLLER_RESULT=$(<"$AdminControllerConstructor"); fi
|
||||||
ADMINCONTROLLER_RESULT=$(<"$AdminControllerConstructor")
|
CONFIGEXTENSIONFS_RESULT=$(<"$ConfigExtensionFS")
|
||||||
fi
|
|
||||||
ADMINCONTROLLER_NAME="${identifier}ExtensionController.php"
|
ADMINCONTROLLER_NAME="${identifier}ExtensionController.php"
|
||||||
|
|
||||||
# Place admin extension view.
|
# Place admin extension view.
|
||||||
|
@ -1146,18 +1154,36 @@ if [[ ( $2 == "-i" ) || ( $2 == "-install" ) || ( $2 == "-add" ) ]]; then VCMD="
|
||||||
sed -i "/<\!-- wrapper:insert -->/r .blueprint/tmp/$n/$admin_wrapper" "resources/views/blueprint/admin/admin.blade.php"
|
sed -i "/<\!-- wrapper:insert -->/r .blueprint/tmp/$n/$admin_wrapper" "resources/views/blueprint/admin/admin.blade.php"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Create extension filesystem (ExtensionFS)
|
||||||
|
PRINT INFO "Creating and linking extension filesystem.."
|
||||||
|
mkdir -p ".blueprint/extensions/$identifier/fs"
|
||||||
|
ln -s -T $FOLDER/.blueprint/extensions/"$identifier"/fs "$FOLDER/storage/extensions/$identifier" 2>> $BLUEPRINT__DEBUG
|
||||||
|
ln -s -T $FOLDER/storage/extensions/"$identifier" "$FOLDER/public/fs/$identifier" 2>> $BLUEPRINT__DEBUG
|
||||||
|
if [[ $DUPLICATE == "y" ]]; then
|
||||||
|
sed -i \
|
||||||
|
-e "s/\/\* ${identifier^}Start \*\/.*\/\* ${identifier^}End \*\///" \
|
||||||
|
-e "s~/\* ${identifier^}Start \*/~~g" \
|
||||||
|
-e "s~/\* ${identifier^}End \*/~~g" \
|
||||||
|
"config/ExtensionFS.php"
|
||||||
|
fi
|
||||||
|
sed -i "s~\/\* blueprint/disks \*\/~/* blueprint/disks */$CONFIGEXTENSIONFS_RESULT~g" config/ExtensionFS.php
|
||||||
|
|
||||||
# Create backup of generated values.
|
# Create backup of generated values.
|
||||||
mkdir -p ".blueprint/extensions/$identifier/private/.store/build"
|
mkdir -p \
|
||||||
cp ".blueprint/extensions/blueprint/private/build/extensions/button.blade.php.bak" ".blueprint/extensions/$identifier/private/.store/build/button.blade.php"
|
".blueprint/extensions/$identifier/private/.store/build" \
|
||||||
cp ".blueprint/extensions/blueprint/private/build/extensions/route.php.bak" ".blueprint/extensions/$identifier/private/.store/build/route.php"
|
".blueprint/extensions/$identifier/private/.store/build/config"
|
||||||
|
cp "$__BuildDir/extensions/button.blade.php.bak" ".blueprint/extensions/$identifier/private/.store/build/button.blade.php"
|
||||||
|
cp "$__BuildDir/extensions/route.php.bak" ".blueprint/extensions/$identifier/private/.store/build/route.php"
|
||||||
|
cp "$__BuildDir/extensions/config/ExtensionFS.build.bak" ".blueprint/extensions/$identifier/private/.store/build/config/ExtensionFS.build"
|
||||||
|
|
||||||
# Remove temporary build files.
|
# Remove temporary build files.
|
||||||
PRINT INFO "Cleaning up build files.."
|
PRINT INFO "Cleaning up build files.."
|
||||||
if [[ $controller_type == "default" ]]; then rm ".blueprint/extensions/blueprint/private/build/extensions/controller.build.bak"; fi
|
if [[ $controller_type == "default" ]]; then rm "$__BuildDir/extensions/controller.build.bak"; fi
|
||||||
rm \
|
rm \
|
||||||
"$AdminBladeConstructor" \
|
"$AdminBladeConstructor" \
|
||||||
"$AdminRouteConstructor" \
|
"$AdminRouteConstructor" \
|
||||||
"$AdminButtonConstructor"
|
"$AdminButtonConstructor" \
|
||||||
|
"$ConfigExtensionFS"
|
||||||
rm -R ".blueprint/tmp/$n"
|
rm -R ".blueprint/tmp/$n"
|
||||||
|
|
||||||
if [[ $database_migrations != "" ]]; then
|
if [[ $database_migrations != "" ]]; then
|
||||||
|
@ -1191,11 +1217,15 @@ if [[ ( $2 == "-i" ) || ( $2 == "-install" ) || ( $2 == "-add" ) ]]; then VCMD="
|
||||||
$FOLDER/routes \
|
$FOLDER/routes \
|
||||||
$FOLDER/storage
|
$FOLDER/storage
|
||||||
|
|
||||||
|
# Link filesystems
|
||||||
|
PRINT INFO "Linking filesystems.."
|
||||||
|
php artisan storage:link &>> $BLUEPRINT__DEBUG
|
||||||
|
|
||||||
# Flush cache.
|
# Flush cache.
|
||||||
PRINT INFO "Flushing view, config and route cache.."
|
PRINT INFO "Flushing view, config and route cache.."
|
||||||
{
|
{
|
||||||
php artisan view:clear
|
php artisan view:cache
|
||||||
php artisan config:clear
|
php artisan config:cache
|
||||||
php artisan route:cache
|
php artisan route:cache
|
||||||
php artisan cache:clear
|
php artisan cache:clear
|
||||||
} &>> $BLUEPRINT__DEBUG
|
} &>> $BLUEPRINT__DEBUG
|
||||||
|
@ -1506,6 +1536,18 @@ if [[ ( $2 == "-r" ) || ( $2 == "-remove" ) ]]; then VCMD="y"
|
||||||
".blueprint/extensions/$identifier/assets" \
|
".blueprint/extensions/$identifier/assets" \
|
||||||
"public/assets/extensions/$identifier"
|
"public/assets/extensions/$identifier"
|
||||||
|
|
||||||
|
# Remove extension filesystem (ExtensionFS)
|
||||||
|
PRINT INFO "Removing and unlinking extension filesystem.."
|
||||||
|
rm -r \
|
||||||
|
".blueprint/extensions/$identifier/fs" \
|
||||||
|
"storage/extensions/sysautomation" \
|
||||||
|
"storage/extensions"
|
||||||
|
sed -i \
|
||||||
|
-e "s/\/\* ${identifier^}Start \*\/.*\/\* ${identifier^}End \*\///" \
|
||||||
|
-e "s~/\* ${identifier^}Start \*/~~g" \
|
||||||
|
-e "s~/\* ${identifier^}End \*/~~g" \
|
||||||
|
"config/ExtensionFS.php"
|
||||||
|
|
||||||
# Remove extension directory
|
# Remove extension directory
|
||||||
PRINT INFO "Removing extension folder.."
|
PRINT INFO "Removing extension folder.."
|
||||||
rm -R ".blueprint/extensions/$identifier"
|
rm -R ".blueprint/extensions/$identifier"
|
||||||
|
@ -1529,11 +1571,15 @@ if [[ ( $2 == "-r" ) || ( $2 == "-remove" ) ]]; then VCMD="y"
|
||||||
$FOLDER/routes \
|
$FOLDER/routes \
|
||||||
$FOLDER/storage
|
$FOLDER/storage
|
||||||
|
|
||||||
|
# Link filesystems
|
||||||
|
PRINT INFO "Linking filesystems.."
|
||||||
|
php artisan storage:link &>> $BLUEPRINT__DEBUG
|
||||||
|
|
||||||
# Flush cache.
|
# Flush cache.
|
||||||
PRINT INFO "Flushing view, config and route cache.."
|
PRINT INFO "Flushing view, config and route cache.."
|
||||||
{
|
{
|
||||||
php artisan view:clear
|
php artisan view:cache
|
||||||
php artisan config:clear
|
php artisan config:cache
|
||||||
php artisan route:cache
|
php artisan route:cache
|
||||||
php artisan cache:clear
|
php artisan cache:clear
|
||||||
} &>> $BLUEPRINT__DEBUG
|
} &>> $BLUEPRINT__DEBUG
|
||||||
|
@ -1694,11 +1740,11 @@ if [[ ( $2 == "-init" || $2 == "-I" ) ]]; then VCMD="y"
|
||||||
rm -R tmp/templates
|
rm -R tmp/templates
|
||||||
cd ${FOLDER} || cdhalt
|
cd ${FOLDER} || cdhalt
|
||||||
|
|
||||||
eval "$(parse_yaml .blueprint/extensions/blueprint/private/build/templates/"${tnum}"/TemplateConfiguration.yml t_)"
|
eval "$(parse_yaml $__BuildDir/templates/"${tnum}"/TemplateConfiguration.yml t_)"
|
||||||
|
|
||||||
PRINT INFO "Building template.."
|
PRINT INFO "Building template.."
|
||||||
mkdir -p .blueprint/tmp/init
|
mkdir -p .blueprint/tmp/init
|
||||||
cp -R .blueprint/extensions/blueprint/private/build/templates/"${tnum}"/contents/* .blueprint/tmp/init/
|
cp -R $__BuildDir/templates/"${tnum}"/contents/* .blueprint/tmp/init/
|
||||||
|
|
||||||
sed -i \
|
sed -i \
|
||||||
-e "s~␀name␀~${ASKNAME}~g" \
|
-e "s~␀name␀~${ASKNAME}~g" \
|
||||||
|
@ -1722,7 +1768,7 @@ if [[ ( $2 == "-init" || $2 == "-I" ) ]]; then VCMD="y"
|
||||||
PRINT INFO "Cleaning up build files.."
|
PRINT INFO "Cleaning up build files.."
|
||||||
rm -R \
|
rm -R \
|
||||||
".blueprint/tmp" \
|
".blueprint/tmp" \
|
||||||
".blueprint/extensions/blueprint/private/build/templates/"*
|
"$__BuildDir/templates/"*
|
||||||
mkdir -p .blueprint/tmp
|
mkdir -p .blueprint/tmp
|
||||||
|
|
||||||
sendTelemetry "INITIALIZE_DEVELOPMENT_EXTENSION" >> $BLUEPRINT__DEBUG
|
sendTelemetry "INITIALIZE_DEVELOPMENT_EXTENSION" >> $BLUEPRINT__DEBUG
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
/* [id^]Start */ 'blueprint:[id]' => [ 'driver' => 'local', 'root' => storage_path('extensions/[id]'), 'url' => env('APP_URL') . '/storage/extensions/[id]', 'visibility' => 'public', 'throw' => false, ], /* [id^]End */
|
|
@ -18,7 +18,8 @@ PRINT() {
|
||||||
if [[ $TYPE == "FATAL" ]]; then PRIMARY=$(tput setaf 1); fi
|
if [[ $TYPE == "FATAL" ]]; then PRIMARY=$(tput setaf 1); fi
|
||||||
if [[ $TYPE == "SUCCESS" ]]; then PRIMARY=$(tput setaf 2); fi
|
if [[ $TYPE == "SUCCESS" ]]; then PRIMARY=$(tput setaf 2); fi
|
||||||
if [[ $TYPE == "INPUT" ]]; then PRIMARY=$(tput setaf 5); fi
|
if [[ $TYPE == "INPUT" ]]; then PRIMARY=$(tput setaf 5); fi
|
||||||
|
if [[ $TYPE == "DEBUG" ]]; then PRIMARY="$SECONDARY"; fi
|
||||||
|
|
||||||
echo -e "${BOLD}${SECONDARY}$DATE${RESET} ${PRIMARY}${TYPE}:${RESET} $MESSAGE"
|
if [[ $TYPE != "DEBUG" ]]; then echo -e "${BOLD}${SECONDARY}$DATE${RESET} ${PRIMARY}${TYPE}:${RESET} $MESSAGE"; fi
|
||||||
echo -e "${BOLD}${SECONDARY}$DATEDEBUG${RESET} ${PRIMARY}${TYPE}:${RESET} $MESSAGE" >> "$FOLDER"/.blueprint/extensions/blueprint/private/debug/logs.txt
|
echo -e "${BOLD}${SECONDARY}$DATEDEBUG${RESET} ${PRIMARY}${TYPE}:${RESET} $MESSAGE" >> "$FOLDER"/.blueprint/extensions/blueprint/private/debug/logs.txt
|
||||||
}
|
}
|
7
config/ExtensionFS.php
Normal file
7
config/ExtensionFS.php
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
return [
|
||||||
|
'disks' => [
|
||||||
|
/* blueprint/disks */
|
||||||
|
],
|
||||||
|
];
|
0
public/fs/.gitkeep
Normal file
0
public/fs/.gitkeep
Normal file
|
@ -1 +0,0 @@
|
||||||
Might be utilized in the future.
|
|
0
storage/extensions/.gitkeep
Normal file
0
storage/extensions/.gitkeep
Normal file
Loading…
Reference in a new issue