Overview

Namespaces

  • GAubry
    • ErrorHandler
    • Helpers
    • Logger
    • Shell
  • Himedia
    • Padocc
      • DB
      • Minifier
      • Numbering
      • Properties
      • Task
        • Base
        • Extended
  • None
  • Psr
    • Log

Classes

  • Backup
  • Call
  • Composer
  • Copy
  • Environment
  • ExternalProperty
  • FillTemplate
  • HTTP
  • Link
  • MkDir
  • Project
  • Property
  • Rename
  • Sync
  • Target
  • Overview
  • Namespace
  • Class
  • Tree
  • Deprecated
  • Todo
 1: <?php
 2: 
 3: namespace Himedia\Padocc\Task\Base;
 4: 
 5: use GAubry\Shell\PathStatus;
 6: use Himedia\Padocc\AttributeProperties;
 7: use Himedia\Padocc\Task;
 8: 
 9: /**
10:  * Permet de copier un fichier ou un répertoire dans un autre.
11:  * À inclure dans une tâche env ou target.
12:  *
13:  * Exemple : <copy src="/path/to/src" dest="${SERVERS}:/path/to/dest" />
14:  *
15:  * @author Geoffroy AUBRY <gaubry@hi-media.com>
16:  */
17: class Copy extends Task
18: {
19:     /**
20:      * {@inheritdoc}
21:      */
22:     protected function init()
23:     {
24:         parent::init();
25: 
26:         $this->aAttrProperties = array(
27:             'src' => AttributeProperties::SRC_PATH | AttributeProperties::FILEJOKER | AttributeProperties::REQUIRED,
28:             'destdir' => AttributeProperties::DIR | AttributeProperties::REQUIRED
29:         );
30:     }
31: 
32:     /**
33:      * {@inheritdoc}
34:      * @codeCoverageIgnore
35:      */
36:     public static function getTagName ()
37:     {
38:         return 'copy';
39:     }
40: 
41:     /**
42:      * Vérifie au moyen de tests basiques que la tâche peut être exécutée.
43:      * Lance une exception si tel n'est pas le cas.
44:      *
45:      * Comme toute les tâches sont vérifiées avant que la première ne soit exécutée,
46:      * doit permettre de remonter au plus tôt tout dysfonctionnement.
47:      * Appelé avant la méthode execute().
48:      *
49:      * @throws \UnexpectedValueException en cas d'attribut ou fichier manquant
50:      * @throws \DomainException en cas de valeur non permise
51:      */
52:     public function check ()
53:     {
54:         // TODO si *|? alors s'assurer qu'il en existe ?
55:         // TODO droit seulement à \w et / et ' ' ?
56:         parent::check();
57: 
58:         // Suppression de l'éventuel slash terminal :
59:         $this->aAttValues['src'] = preg_replace('#/$#', '', $this->aAttValues['src']);
60: 
61:         if (preg_match('/\*|\?/', $this->aAttValues['src']) === 0
62:             && $this->oShell->getPathStatus($this->aAttValues['src']) === PathStatus::STATUS_DIR
63:         ) {
64:             $this->aAttValues['destdir'] .= '/' . substr(strrchr($this->aAttValues['src'], '/'), 1);
65:             $this->aAttValues['src'] .= '/*';
66:         }
67:     }
68: 
69:     /**
70:      * Phase de traitements centraux de l'exécution de la tâche.
71:      * Elle devrait systématiquement commencer par "parent::centralExecute();".
72:      * Appelé par execute().
73:      * @see execute()
74:      */
75:     protected function centralExecute ()
76:     {
77:         parent::centralExecute();
78:         $this->getLogger()->info('+++');
79: 
80:         $aSrcPath = $this->processSimplePath($this->aAttValues['src']);
81:         $aDestDirs = $this->processPath($this->aAttValues['destdir']);
82:         foreach ($aDestDirs as $sDestDir) {
83:             $this->oShell->copy($aSrcPath, $sDestDir);
84:         }
85: 
86:         $this->getLogger()->info('---');
87:     }
88: }
89: 
Platform for Automatized Deployments with pOwerful Concise Configuration API documentation generated by ApiGen 2.8.0