Completed
Push — master ( 61e32e...af20bf )
by Craig
06:24 queued 12s
created

ManuallyInstallAssets::install()   A

Complexity

Conditions 4
Paths 4

Size

Total Lines 19
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 4
eloc 13
nc 4
nop 1
dl 0
loc 19
rs 9.8333
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
/*
6
 * This file is part of the Zikula package.
7
 *
8
 * Copyright Zikula Foundation - https://ziku.la/
9
 *
10
 * For the full copyright and license information, please view the LICENSE
11
 * file that was distributed with this source code.
12
 */
13
14
namespace Zikula\ExtensionsModule\Composer;
15
16
use Composer\Script\Event;
17
use Symfony\Component\Filesystem\Filesystem;
18
19
/**
20
 * Class ManuallyInstallAssets
21
 *
22
 * Manually install vendor assets to a defined path in the web directory.
23
 */
24
class ManuallyInstallAssets
25
{
26
    /**
27
     * @var array
28
     * The list of assets. [[vendorPath => destinationPath]]
29
     */
30
    protected static $assets = [
31
        '/frdh/mmenu.js/dist/mmenu.js' => '/mmenu/js/mmenu.js',
32
        '/frdh/mmenu.js/dist/mmenu.css' => '/mmenu/css/mmenu.css',
33
        '/itsjavi/fontawesome-iconpicker/dist/css/fontawesome-iconpicker.css' => '/fontawesome-iconpicker/fontawesome-iconpicker.css',
34
        '/itsjavi/fontawesome-iconpicker/dist/css/fontawesome-iconpicker.min.css' => '/fontawesome-iconpicker/fontawesome-iconpicker.min.css',
35
        '/itsjavi/fontawesome-iconpicker/dist/js/fontawesome-iconpicker.js' => '/fontawesome-iconpicker/fontawesome-iconpicker.js',
36
        '/itsjavi/fontawesome-iconpicker/dist/js/fontawesome-iconpicker.min.js' => '/fontawesome-iconpicker/fontawesome-iconpicker.min.js',
37
        '/dimsemenov/magnific-popup/dist/jquery.magnific-popup.js' => '/magnific-popup/jquery.magnific-popup.js',
38
        '/dimsemenov/magnific-popup/dist/jquery.magnific-popup.min.js' => '/magnific-popup/jquery.magnific-popup.min.js',
39
        '/dimsemenov/magnific-popup/dist/magnific-popup.css' => '/magnific-popup/magnific-popup.css',
40
    ];
41
42
    public static function install(Event $event): void
43
    {
44
        $webDir = $event->getComposer()->getPackage()->getExtra()['symfony-web-dir'];
45
        if (!is_dir($webDir)) {
46
            $event->getIO()->write(sprintf('The %s (%s) specified in composer.json was not found in %s, can not %s.', 'symfony-web-dir', $webDir, getcwd(), 'manually install assets'));
47
48
            return;
49
        }
50
        $vendorDir = $event->getComposer()->getConfig()->get('vendor-dir');
51
        if (!is_dir($vendorDir)) {
52
            $event->getIO()->write(sprintf('The %s (%s) specified in composer.json was not found in %s, can not %s.', 'vendor-dir', $vendorDir, getcwd(), 'manually install assets'));
53
54
            return;
55
        }
56
        $fs = new Filesystem();
57
        $event->getIO()->write('<info>Zikula manually installing assets:</info>');
58
        foreach (static::$assets as $assetPath => $destinationPath) {
59
            $fs->copy($vendorDir . $assetPath, $webDir . $destinationPath, true);
60
            $event->getIO()->write(sprintf('Zikula installed <comment>%s</comment> in <comment>%s</comment>', $assetPath, $webDir . $destinationPath));
61
        }
62
    }
63
}
64