From 39e40ded90c460b73031c960fe4a851b49dd6a21 Mon Sep 17 00:00:00 2001 From: Arthur Perton Date: Tue, 24 Nov 2020 17:25:25 +0100 Subject: [PATCH 1/2] Add assets:generate-presets command --- .../Commands/AssetsGeneratePresets.php | 114 ++++++++++++++++++ src/Providers/ConsoleServiceProvider.php | 1 + 2 files changed, 115 insertions(+) create mode 100644 src/Console/Commands/AssetsGeneratePresets.php diff --git a/src/Console/Commands/AssetsGeneratePresets.php b/src/Console/Commands/AssetsGeneratePresets.php new file mode 100644 index 00000000000..fa7fda08ae1 --- /dev/null +++ b/src/Console/Commands/AssetsGeneratePresets.php @@ -0,0 +1,114 @@ +imageGenerator = $imageGenerator; + + $this->imageAssets = Asset::all()->filter(function ($asset) { + return $asset->isImage(); + }); + + $this->generateUserPresets(); + + $this->generateCpThumbnails(); + } + + /** + * Generate user provided presets + * + * @return void + */ + protected function generateUserPresets() + { + $presets = config('statamic.assets.image_manipulation.presets', []); + + if (empty($presets)) { + return $this->line('[✗] No user defined presets.'); + } + + $this->generatePresets($presets); + } + + /** + * Generate thumbnails required by the control panel + * + * @return void + */ + private function generateCpThumbnails() + { + if (! config('statamic.cp.enabled')) { + return; + } + + $this->generatePresets(Image::getCpImageManipulationPresets()); + } + + /** + * Generate supplied presets + * + * @param array $presets + * @return void + */ + private function generatePresets($presets) + { + $generator = new PresetGenerator($this->imageGenerator, $presets); + + foreach ($presets as $preset => $params) { + $bar = $this->output->createProgressBar($this->imageAssets->count()); + $bar->setFormat("[%current%/%max%] Generating $preset... %filename%"); + + foreach ($this->imageAssets as $asset) { + $bar->setMessage($asset->basename(), 'filename'); + $generator->generate($asset, $preset); + $bar->advance(); + } + + $bar->setFormat("[✓] Images generated for $preset."); + $bar->finish(); + + $this->output->newLine(); + } + } +} diff --git a/src/Providers/ConsoleServiceProvider.php b/src/Providers/ConsoleServiceProvider.php index 9bd42a3ec4b..fcb4c7a44b0 100644 --- a/src/Providers/ConsoleServiceProvider.php +++ b/src/Providers/ConsoleServiceProvider.php @@ -11,6 +11,7 @@ class ConsoleServiceProvider extends ServiceProvider protected $commands = [ Commands\ListCommand::class, Commands\AddonsDiscover::class, + Commands\AssetsGeneratePresets::class, Commands\AssetsMeta::class, Commands\GlideClear::class, Commands\Install::class, From 98adea492f328e623f1c862d36132da947fc1f81 Mon Sep 17 00:00:00 2001 From: Arthur Perton Date: Tue, 24 Nov 2020 17:30:42 +0100 Subject: [PATCH 2/2] Fix code style --- src/Console/Commands/AssetsGeneratePresets.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Console/Commands/AssetsGeneratePresets.php b/src/Console/Commands/AssetsGeneratePresets.php index fa7fda08ae1..0b6af9525fa 100644 --- a/src/Console/Commands/AssetsGeneratePresets.php +++ b/src/Console/Commands/AssetsGeneratePresets.php @@ -56,7 +56,7 @@ public function handle(ImageGenerator $imageGenerator) } /** - * Generate user provided presets + * Generate user provided presets. * * @return void */ @@ -72,7 +72,7 @@ protected function generateUserPresets() } /** - * Generate thumbnails required by the control panel + * Generate thumbnails required by the control panel. * * @return void */ @@ -86,7 +86,7 @@ private function generateCpThumbnails() } /** - * Generate supplied presets + * Generate supplied presets. * * @param array $presets * @return void