summaryrefslogtreecommitdiff
path: root/bin/copy_directory.php
blob: 20e4821b01e8c6c188c85632f7d3de13e5899d3b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<?php
// bin/copy_directory.php
//
// usage : php bin/copy_directory.php source destination
// appel dans le composer.json à l'intallation et lors des MAJ

function copyDirectory(string $source, string $destination): void
{
    if (!is_dir($source)) {
        fwrite(STDERR, "Erreur rencontrée dans bin/copy_directory.php: le dossier source '$source' n'est pas un répertoire valide.\n");
        exit(1);
    }

    if(!is_dir($destination)){
        mkdir($destination, 0755, true);
    }

    $iterator = new RecursiveIteratorIterator(
        new RecursiveDirectoryIterator($source, RecursiveDirectoryIterator::SKIP_DOTS),
        RecursiveIteratorIterator::SELF_FIRST
    );

    foreach($iterator as $item){
        $targetPath = $destination . DIRECTORY_SEPARATOR . $iterator->getSubPathName();
        if($item->isDir()){
            if(!is_dir($targetPath)){
                mkdir($targetPath, 0755);
            }
        }
        else{
            copy($item, $targetPath); // copy() écrase la cible, c'est ce qu'on veut
        }
    }
}

if ($argc != 3){ // nombre de paramètres
    fwrite(STDERR, "Erreur rencontrée dans bin/copy_directory.php. Usage:\nphp bin/copy_directory.php <source> <destination>\n");
    exit(1);
}
copyDirectory($argv[1], $argv[2]);