Completed
Push — dependabot/composer/myclabs/ph... ( 9d5ce4...59e5dd )
by
unknown
01:44
created

StaticCopy::process()   A

Complexity

Conditions 4
Paths 4

Size

Total Lines 26

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 26
rs 9.504
c 0
b 0
f 0
cc 4
nc 4
nop 0
1
<?php
2
/*
3
 * Copyright (c) Arnaud Ligny <[email protected]>
4
 *
5
 * For the full copyright and license information, please view the LICENSE
6
 * file that was distributed with this source code.
7
 */
8
9
namespace Cecil\Step;
10
11
use Cecil\Util;
12
use Symfony\Component\Finder\Finder;
13
14
/**
15
 * Copy static files to site root.
16
 */
17
class StaticCopy extends AbstractStep
18
{
19
    const TMP_DIR = '.cecil';
20
    private $count = 0;
21
22
    /**
23
     * {@inheritdoc}
24
     */
25
    public function init($options)
26
    {
27
        // reset output directory
28
        Util::getFS()->remove($this->config->getOutputPath());
29
        Util::getFS()->mkdir($this->config->getOutputPath());
30
31
        $this->process = true;
32
    }
33
34
    /**
35
     * {@inheritdoc}
36
     */
37
    public function process()
38
    {
39
        call_user_func_array($this->builder->getMessageCb(), ['COPY', 'Copying static files']);
40
41
        // copy content of '<theme>/static/' dir if exists
42
        if ($this->config->hasTheme()) {
43
            $themes = array_reverse($this->config->getTheme());
44
            foreach ($themes as $theme) {
45
                $themeStaticDir = $this->config->getThemeDirPath($theme, 'static');
46
                $this->copy($themeStaticDir);
47
            }
48
        }
49
50
        // copy content of 'static/' dir if exists
51
        $staticDir = $this->builder->getConfig()->getStaticPath();
52
        $this->copy($staticDir, null, $this->config->get('static.exclude'));
53
54
        // copy temporary images files
55
        $tmpDirImages = $this->config->getDestinationDir().'/'.self::TMP_DIR.'/images';
56
        if ($this->copy($tmpDirImages, 'images')) {
57
            Util::getFS()->remove($tmpDirImages);
58
        }
59
60
        call_user_func_array($this->builder->getMessageCb(), ['COPY_PROGRESS', 'Start copy', 0, $this->count]);
61
        call_user_func_array($this->builder->getMessageCb(), ['COPY_PROGRESS', 'Copied', $this->count, $this->count]);
62
    }
63
64
    /**
65
     * Copy (mirror) files.
66
     *
67
     * @param string      $from
68
     * @param string|null $to
69
     * @param array       $exclude
70
     *
71
     * @return bool
72
     */
73
    private function copy(string $from, string $to = null, array $exclude = []): bool
0 ignored issues
show
Coding Style introduced by
function copy() does not seem to conform to the naming convention (^(?:is|has|should|may|supports)).

This check examines a number of code elements and verifies that they conform to the given naming conventions.

You can set conventions for local variables, abstract classes, utility classes, constant, properties, methods, parameters, interfaces, classes, exceptions and special methods.

Loading history...
74
    {
75
        if (Util::getFS()->exists($from)) {
76
            $finder = new Finder();
77
            $finder->files()->in($from);
78
            if (is_array($exclude)) {
79
                $finder->files()->notName($this->config->get('static.exclude'))->in($from);
80
            }
81
            $this->count += $finder->count();
82
            Util::getFS()->mirror(
83
                $from,
84
                $this->config->getOutputPath().(isset($to) ? '/'.$to : ''),
85
                $finder,
86
                ['override' => true]
87
            );
88
89
            return true;
90
        }
91
92
        return false;
93
    }
94
}
95