Вход Регистрация
Файл: gapps/vendor/laravel/framework/src/Illuminate/Foundation/Console/VendorPublishCommand.php
Строк: 121
<?php

namespace IlluminateFoundationConsole;

use 
IlluminateConsoleCommand;
use 
LeagueFlysystemMountManager;
use 
IlluminateFilesystemFilesystem;
use 
IlluminateSupportServiceProvider;
use 
LeagueFlysystemFilesystem as Flysystem;
use 
LeagueFlysystemAdapterLocal as LocalAdapter;

class 
VendorPublishCommand extends Command
{
    
/**
     * The filesystem instance.
     *
     * @var IlluminateFilesystemFilesystem
     */
    
protected $files;

    
/**
     * The console command signature.
     *
     * @var string
     */
    
protected $signature 'vendor:publish {--force : Overwrite any existing files.}
            {--provider= : The service provider that has assets you want to publish.}
            {--tag=* : One or many tags that have assets you want to publish.}'
;

    
/**
     * The console command description.
     *
     * @var string
     */
    
protected $description 'Publish any publishable assets from vendor packages';

    
/**
     * Create a new command instance.
     *
     * @param  IlluminateFilesystemFilesystem  $files
     * @return void
     */
    
public function __construct(Filesystem $files)
    {
        
parent::__construct();

        
$this->files $files;
    }

    
/**
     * Execute the console command.
     *
     * @return void
     */
    
public function fire()
    {
        
$tags $this->option('tag');

        
$tags $tags ?: [null];

        foreach ((array) 
$tags as $tag) {
            
$this->publishTag($tag);
        }
    }

    
/**
     * Publishes the assets for a tag.
     *
     * @param  string  $tag
     * @return mixed
     */
    
private function publishTag($tag)
    {
        
$paths ServiceProvider::pathsToPublish(
            
$this->option('provider'), $tag
        
);

        if (empty(
$paths)) {
            return 
$this->comment("Nothing to publish for tag [{$tag}].");
        }

        foreach (
$paths as $from => $to) {
            if (
$this->files->isFile($from)) {
                
$this->publishFile($from$to);
            } elseif (
$this->files->isDirectory($from)) {
                
$this->publishDirectory($from$to);
            } else {
                
$this->error("Can't locate path: <{$from}>");
            }
        }

        
$this->info("Publishing complete for tag [{$tag}]!");
    }

    
/**
     * Publish the file to the given path.
     *
     * @param  string  $from
     * @param  string  $to
     * @return void
     */
    
protected function publishFile($from$to)
    {
        if (
$this->files->exists($to) && ! $this->option('force')) {
            return;
        }

        
$this->createParentDirectory(dirname($to));

        
$this->files->copy($from$to);

        
$this->status($from$to'File');
    }

    
/**
     * Publish the directory to the given directory.
     *
     * @param  string  $from
     * @param  string  $to
     * @return void
     */
    
protected function publishDirectory($from$to)
    {
        
$manager = new MountManager([
            
'from' => new Flysystem(new LocalAdapter($from)),
            
'to' => new Flysystem(new LocalAdapter($to)),
        ]);

        foreach (
$manager->listContents('from://'true) as $file) {
            if (
$file['type'] === 'file' && (! $manager->has('to://'.$file['path']) || $this->option('force'))) {
                
$manager->put('to://'.$file['path'], $manager->read('from://'.$file['path']));
            }
        }

        
$this->status($from$to'Directory');
    }

    
/**
     * Create the directory to house the published files if needed.
     *
     * @param  string  $directory
     * @return void
     */
    
protected function createParentDirectory($directory)
    {
        if (! 
$this->files->isDirectory($directory)) {
            
$this->files->makeDirectory($directory0755true);
        }
    }

    
/**
     * Write a status message to the console.
     *
     * @param  string  $from
     * @param  string  $to
     * @param  string  $type
     * @return void
     */
    
protected function status($from$to$type)
    {
        
$from str_replace(base_path(), ''realpath($from));

        
$to str_replace(base_path(), ''realpath($to));

        
$this->line('<info>Copied '.$type.'</info> <comment>['.$from.']</comment> <info>To</info> <comment>['.$to.']</comment>');
    }
}
Онлайн: 1
Реклама