diff --git a/src/Console/Commands/AssetsGeneratePresets.php b/src/Console/Commands/AssetsGeneratePresets.php new file mode 100644 index 00000000000..0b6af9525fa --- /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,