master

laravel/framework

Last updated at: 29/12/2023 09:23

LangPublishCommand.php

TLDR

This file (LangPublishCommand.php) is part of the Demo Projects project and contains the LangPublishCommand class. This class represents a console command that publishes customizable language files.

Methods

There are no additional methods in this file.

Classes

LangPublishCommand

The LangPublishCommand class extends the Command class and represents a console command. It is responsible for publishing customizable language files using the lang:publish command.

This class has the following properties:

  • $signature: The name and signature of the console command.
  • $description: The console command description.

This class has the following method:

  • handle(): This method is responsible for executing the console command. It creates the necessary directory if it doesn't exist, defines the language file mappings, and copies the language files to the corresponding directory. Finally, it displays a success message.
<?php

namespace Illuminate\Foundation\Console;

use Illuminate\Console\Command;
use Illuminate\Filesystem\Filesystem;
use Symfony\Component\Console\Attribute\AsCommand;

#[AsCommand(name: 'lang:publish')]
class LangPublishCommand extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'lang:publish
                    {--existing : Publish and overwrite only the files that have already been published}
                    {--force : Overwrite any existing files}';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Publish all language files that are available for customization';

    /**
     * Execute the console command.
     *
     * @return void
     */
    public function handle()
    {
        if (! is_dir($langPath = $this->laravel->basePath('lang/en'))) {
            (new Filesystem)->makeDirectory($langPath, recursive: true);
        }

        $stubs = [
            realpath(__DIR__.'/../../Translation/lang/en/auth.php') => 'auth.php',
            realpath(__DIR__.'/../../Translation/lang/en/pagination.php') => 'pagination.php',
            realpath(__DIR__.'/../../Translation/lang/en/passwords.php') => 'passwords.php',
            realpath(__DIR__.'/../../Translation/lang/en/validation.php') => 'validation.php',
        ];

        foreach ($stubs as $from => $to) {
            $to = $langPath.DIRECTORY_SEPARATOR.ltrim($to, DIRECTORY_SEPARATOR);

            if ((! $this->option('existing') && (! file_exists($to) || $this->option('force')))
                || ($this->option('existing') && file_exists($to))) {
                file_put_contents($to, file_get_contents($from));
            }
        }

        $this->components->info('Language files published successfully.');
    }
}