Changeset 119

Show
Ignore:
Timestamp:
09/14/06 20:02:22 (2 years ago)
Author:
mrook
Message:

Check-in of improvements to various tasks (contributed by Andrew Eddie)

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/classes/phing/tasks/defaults.properties

    r117 r119  
    5959phpdoc=phing.tasks.ext.phpdoc.PHPDocumentorTask 
    6060svnlastrevision=phing.tasks.ext.svn.SvnLastRevisionTask 
     61svncheckout=phing.tasks.ext.svn.SvnCheckoutTask.php 
    6162svnexport=phing.tasks.ext.svn.SvnExportTask 
     63svnupdate=phing.tasks.ext.svn.SvnUpdateTask 
    6264phpunit2=phing.tasks.ext.phpunit2.PHPUnit2Task 
    6365phpunit2report=phing.tasks.ext.phpunit2.PHPUnit2ReportTask 
  • trunk/classes/phing/tasks/ext/ioncube/IoncubeEncoderTask.php

    r81 r119  
    2727 * 
    2828 * @author Michiel Rook <michiel.rook@gmail.com> 
     29 * @author Andrew Eddie <andrew.eddie@jamboworks.com>  
    2930 * @version $Id$ 
    3031 * @package phing.tasks.ext.ioncube 
     
    3334class IoncubeEncoderTask extends Task 
    3435{ 
    35         private $phpVersion = "5"; 
    36         private $ioncubePath = "/usr/local/ioncube"; 
    37         private $encoderName = "ioncube_encoder"; 
    38          
    39         private $fromDir = ""; 
    40         private $toDir = ""; 
    41          
    42         private $encrypt = ""; 
    43          
    44         private $targetOption = ""; 
    45         private $binary = false; 
    46         private $optimize = ""; 
    47         private $withoutRuntimeLoaderSupport = false; 
    48          
    49         private $licensePath = ""; 
    50         private $passPhrase = ""; 
    51          
     36        private $ionSwitches = array(); 
     37         
     38        private $ionOptions = array(); 
     39         
     40        private $ionOptionsXS = array(); 
     41 
    5242        private $comments = array(); 
     43         
     44        private $encoderName = 'ioncube_encoder'; 
     45         
     46        private $fromDir = ''; 
     47 
     48        private $ioncubePath = '/usr/local/ioncube'; 
     49 
     50        private $phpVersion = '5'; 
     51 
     52        private $targetOption = ''; 
     53 
     54        private $toDir = ''; 
     55 
     56        /** 
     57         * Adds a comment to be used in encoded files 
     58         */ 
     59        function addComment(IoncubeComment $comment) 
     60        { 
     61                $this->comments[] = $comment; 
     62        } 
     63 
     64        /** 
     65         * Sets the allowed server 
     66         */ 
     67        function setAllowedServer($value) 
     68        { 
     69                $this->ionOptionsXS['allowed-server'] = $value; 
     70        } 
     71 
     72        /** 
     73         * Returns the allowed server setting 
     74         */ 
     75        function getAllowedServer() 
     76        { 
     77                return $this->ionOptionsXS['allowed-server']; 
     78        } 
     79 
     80        /** 
     81         * Sets the binary option 
     82         */ 
     83        function setBinary($value) 
     84        { 
     85                $this->ionSwitches['binary'] = $value; 
     86        } 
     87 
     88        /** 
     89         * Returns the binary option 
     90         */ 
     91        function getBinary() 
     92        { 
     93                return $this->ionSwitches['binary']; 
     94        } 
     95 
     96        /** 
     97         * Sets files or folders to copy (separated by space) 
     98         */ 
     99        function setCopy($value) 
     100        { 
     101                $this->ionOptionsXS['copy'] = $value; 
     102        } 
     103 
     104        /** 
     105         * Returns the copy setting 
     106         */ 
     107        function getCopy() 
     108        { 
     109                return $this->ionOptionsXS['copy']; 
     110        } 
     111 
     112        /** 
     113         * Sets additional file patterns, files or directories to encode, 
     114         * or to reverse the effect of copy (separated by space) 
     115         */ 
     116        function setEncode($value) 
     117        { 
     118                $this->ionOptionsXS['encode'] = $value; 
     119        } 
     120         
     121        /** 
     122         * Returns the encode setting 
     123         */ 
     124        function getEncode() 
     125        { 
     126                return $this->enionOptionsXS['encode']; 
     127        } 
     128 
     129        /** 
     130         * Sets regexps of additional files to encrypt (separated by space) 
     131         */ 
     132        function setEncrypt($value) 
     133        { 
     134                $this->ionOptionsXS['encrypt'] = $value; 
     135        } 
     136         
     137        /** 
     138         * Returns regexps of additional files to encrypt (separated by space) 
     139         */ 
     140        function getEncrypt() 
     141        { 
     142                return $this->ionOptionsXS['encrypt']; 
     143        } 
     144 
     145        /** 
     146         * Sets a period after which the files expire 
     147         */ 
     148        function setExpirein($value) 
     149        { 
     150                $this->ionOptions['expire-in'] = $value; 
     151        } 
     152         
     153        /** 
     154         * Returns the expireIn setting 
     155         */ 
     156        function getExpirein() 
     157        { 
     158                return $this->ionOptions['expire-in']; 
     159        } 
     160 
     161        /** 
     162         * Sets a YYYY-MM-DD date to expire the files  
     163         */ 
     164        function setExpireon($value) 
     165        { 
     166                $this->ionOptions['expire-on'] = $value; 
     167        } 
     168         
     169        /** 
     170         * Returns the expireOn setting 
     171         */ 
     172        function getExpireon() 
     173        { 
     174                return $this->ionOptions['expire-on']; 
     175        } 
     176 
     177        /** 
     178         * Sets the source directory 
     179         */ 
     180        function setFromDir($value) 
     181        { 
     182                $this->fromDir = $value; 
     183        } 
     184 
     185        /** 
     186         * Returns the source directory 
     187         */ 
     188        function getFromDir() 
     189        { 
     190                return $this->fromDir; 
     191        } 
     192 
     193        /** 
     194         * Set files and directories to ignore entirely and exclude from the target directory 
     195         * (separated by space). 
     196         */ 
     197        function setIgnore($value) 
     198        { 
     199                $this->ionOptionsXS['ignore'] = $value; 
     200        } 
     201 
     202        /** 
     203         * Returns the ignore setting 
     204         */ 
     205        function getIgnore() 
     206        { 
     207                return $this->ionOptionsXS['ignore']; 
     208        } 
    53209 
    54210        /** 
    55211         * Sets the path to the ionCube encoder 
    56212         */ 
    57         function setIoncubePath($ioncubePath
    58         { 
    59                 $this->ioncubePath = $ioncubePath
     213        function setIoncubePath($value
     214        { 
     215                $this->ioncubePath = $value
    60216        } 
    61217 
     
    69225 
    70226        /** 
     227         * Set files and directories not to be ignored (separated by space). 
     228         */ 
     229        function setKeep($value) 
     230        { 
     231                $this->ionOptionsXS['keep'] = $value; 
     232        } 
     233 
     234        /** 
     235         * Returns the ignore setting 
     236         */ 
     237        function getKeep() 
     238        { 
     239                return $this->ionOptionsXS['keep']; 
     240        } 
     241 
     242        /** 
     243         * Sets the path to the license file to use 
     244         */ 
     245        function setLicensePath($value) 
     246        { 
     247                $this->ionOptions['with-license'] = $value; 
     248        } 
     249 
     250        /** 
     251         * Returns the path to the license file to use 
     252         */ 
     253        function getLicensePath() 
     254        { 
     255                return $this->ionOptions['with-license']; 
     256        } 
     257 
     258        /** 
     259         * Sets the no-doc-comments option 
     260         */ 
     261        function setNoDocComments($value) 
     262        { 
     263                $this->ionSwitches['no-doc-comment'] = $value; 
     264        } 
     265         
     266        /** 
     267         * Returns the no-doc-comments option 
     268         */ 
     269        function getNoDocComments() 
     270        { 
     271                return $this->ionSwitches['no-doc-comment']; 
     272        } 
     273         
     274        /** 
     275         * Sets the obfuscate option 
     276         */ 
     277        function setObfuscate($value) 
     278        { 
     279                $this->ionOptionsXS['obfuscate'] = $value; 
     280        } 
     281         
     282        /** 
     283         * Returns the optimize option 
     284         */ 
     285        function getObfuscate() 
     286        { 
     287                return $this->ionOptionsXS['obfuscate']; 
     288        } 
     289 
     290        /** 
     291         * Sets the obfuscation key (required if using the obfuscate option) 
     292         */ 
     293        function setObfuscationKey($value) 
     294        { 
     295                $this->ionOptions['obfuscation-key'] = $value; 
     296        } 
     297         
     298        /** 
     299         * Returns the optimize option 
     300         */ 
     301        function getObfuscationKey() 
     302        { 
     303                return $this->ionOptions['obfuscation-key']; 
     304        } 
     305 
     306        /** 
     307         * Sets the optimize option 
     308         */ 
     309        function setOptimize($value) 
     310        { 
     311                $this->ionOptions['optimize'] = $value; 
     312        } 
     313         
     314        /** 
     315         * Returns the optimize option 
     316         */ 
     317        function getOptimize() 
     318        { 
     319                return $this->ionOptions['optimize']; 
     320        } 
     321 
     322        /** 
     323         * Sets the passphrase to use when encoding files 
     324         */ 
     325        function setPassPhrase($value) 
     326        { 
     327                $this->ionOptions['passphrase'] = $value; 
     328        } 
     329 
     330        /** 
     331         * Returns the passphrase to use when encoding files 
     332         */ 
     333        function getPassPhrase() 
     334        { 
     335                return $this->ionOptions['passphrase']; 
     336        } 
     337 
     338        /** 
    71339         * Sets the version of PHP to use (defaults to 5) 
    72340         */ 
    73         function setPhpVersion($phpVersion
    74         { 
    75                 $this->phpVersion = $phpVersion
     341        function setPhpVersion($value
     342        { 
     343                $this->phpVersion = $value
    76344        } 
    77345 
     
    85353         
    86354        /** 
    87          * Sets the source directory 
    88          */ 
    89         function setFromDir($fromDir) 
    90         { 
    91                 $this->fromDir = $fromDir; 
    92         } 
    93  
    94         /** 
    95          * Returns the source directory 
    96          */ 
    97         function getFromDir($fromDir) 
    98         { 
    99                 return $this->fromDir; 
    100         } 
    101          
    102         /** 
    103355         * Sets the target directory 
    104356         */ 
    105         function setToDir($toDir
    106         { 
    107                 $this->toDir = $toDir
     357        function setToDir($value
     358        { 
     359                $this->toDir = $value
    108360        } 
    109361 
     
    111363         * Returns the target directory 
    112364         */ 
    113         function getToDir($toDir
     365        function getToDir(
    114366        { 
    115367                return $this->toDir; 
     
    117369 
    118370        /** 
    119          * Sets regexps of additional files to encrypt (separated by space) 
    120          */ 
    121         function setEncrypt($encrypt) 
    122         { 
    123                 $this->encrypt = $encrypt; 
    124         } 
    125          
    126         /** 
    127          * Returns regexps of additional files to encrypt (separated by space) 
    128          */ 
    129         function getEncrypt() 
    130         { 
    131                 return $this->encrypt; 
    132         } 
    133          
    134         /** 
    135          * Sets the binary option 
    136          */ 
    137         function setBinary($binary) 
    138         { 
    139                 $this->binary = $binary; 
    140         } 
    141          
    142         /** 
    143          * Returns the binary option 
    144          */ 
    145         function getBinary() 
    146         { 
    147                 return $this->binary; 
    148         } 
    149  
    150         /** 
    151          * Sets the optimize option 
    152          */ 
    153         function setOptimize($optimize) 
    154         { 
    155                 $this->optimize = $optimize; 
    156         } 
    157          
    158         /** 
    159          * Returns the optimize option 
    160          */ 
    161         function getOptimize() 
    162         { 
    163                 return $this->optimize; 
    164         } 
    165  
    166         /** 
    167371         * Sets the without-runtime-loader-support option 
    168372         */ 
    169         function setWithoutRuntimeLoaderSupport($withoutRuntimeLoaderSupport
    170         { 
    171                 $this->withoutRuntimeLoaderSupport = $withoutRuntimeLoaderSupport
     373        function setWithoutRuntimeLoaderSupport($value
     374        { 
     375                $this->ionSwitches['without-runtime-loader-support'] = $value
    172376        } 
    173377         
     
    177381        function getWithoutRuntimeLoaderSupport() 
    178382        { 
    179                 return $this->withoutRuntimeLoaderSupport
     383                return $this->ionSwitches['without-runtime-loader-support']
    180384        } 
    181385         
     
    196400        } 
    197401         
    198         /** 
    199          * Sets the path to the license file to use 
    200          */ 
    201         function setLicensePath($licensePath) 
    202         { 
    203                 $this->licensePath = $licensePath; 
    204         } 
    205  
    206         /** 
    207          * Returns the path to the license file to use 
    208          */ 
    209         function getLicensePath() 
    210         { 
    211                 return $this->licensePath; 
    212         } 
    213  
    214         /** 
    215          * Sets the passphrase to use when encoding files 
    216          */ 
    217         function setPassPhrase($passPhrase) 
    218         { 
    219                 $this->passPhrase = $passPhrase; 
    220         } 
    221  
    222         /** 
    223          * Returns the passphrase to use when encoding files 
    224          */ 
    225         function getPassPhrase() 
    226         { 
    227                 return $this->passPhrase; 
    228         } 
    229  
    230         /** 
    231          * Adds a comment to be used in encoded files 
    232          */ 
    233         function addComment(IoncubeComment $comment) 
    234         { 
    235                 $this->comments[] = $comment; 
    236         } 
    237  
    238402        /** 
    239403         * The main entry point 
     
    249413                $this->log("Running ionCube Encoder..."); 
    250414                 
    251                 exec($encoder->__toString() . " " . $arguments . " 2>&1", $output, $return); 
     415                exec($encoder->__toString() . ' ' . $arguments . " 2>&1", $output, $return); 
    252416                 
    253417        if ($return != 0) 
     
    262426        private function constructArguments() 
    263427        { 
    264                 $arguments = ""; 
    265                  
    266                 if ($this->binary) 
    267                 { 
    268                         $arguments.= "--binary "; 
    269                 } 
    270                  
    271                 if (!empty($this->optimize)) 
    272                 { 
    273                         $arguments.= "--optimize " . $this->optimize . " "; 
    274                 } 
    275                  
    276                 if ($this->withoutRuntimeLoaderSupport) 
    277                 { 
    278                         $arguments.= "--without-runtime-loader-support "; 
     428                $arguments = ''; 
     429                 
     430                foreach ($this->ionSwitches as $name => $value) 
     431                { 
     432                        if ($value) 
     433                        { 
     434                                $arguments.= "--$name "; 
     435                        } 
     436                } 
     437 
     438                foreach ($this->ionOptions as $name => $value) 
     439                { 
     440                        $arguments.= "--$name '$value' "; 
     441                } 
     442 
     443                foreach ($this->ionOptionsXS as $name => $value) 
     444                { 
     445                        foreach (explode(' ', $value) as $arg) 
     446                        { 
     447                                $arguments.= "--$name '$arg' "; 
     448                        } 
     449                } 
     450 
     451                foreach ($this->comments as $comment) 
     452                { 
     453                        $arguments.= "--add-comment '" . $comment->getValue() . "' "; 
    279454                } 
    280455                 
     
    298473                } 
    299474                 
    300                 if (!empty($this->encrypt)) 
    301                 { 
    302                         foreach (explode(" ", $this->encrypt) as $encrypt) 
    303                         { 
    304                                 $arguments.= "--encrypt '$encrypt' "; 
    305                         } 
    306                 } 
    307                  
    308                 if (!empty($this->licensePath)) 
    309                 { 
    310                         $arguments.= "--with-license '" . $this->licensePath . "' "; 
    311                 } 
    312  
    313                 if (!empty($this->passPhrase)) 
    314                 { 
    315                         $arguments.= "--passphrase '" . $this->passPhrase . "' "; 
    316                 } 
    317                  
    318                 foreach ($this->comments as $comment) 
    319                 { 
    320                         $arguments.= "--add-comment '" . $comment->getValue() . "' "; 
    321                 } 
    322                  
    323                 if ($this->fromDir != "") 
    324                 { 
    325                         $arguments .= $this->fromDir . " "; 
    326                 } 
    327  
    328                 if ($this->toDir != "") 
    329                 { 
    330                         $arguments .= "-o " . $this->toDir . " "; 
    331                 } 
    332  
     475                if ($this->fromDir != '') 
     476                { 
     477                        $arguments .= $this->fromDir . ' '; 
     478                } 
     479 
     480                if ($this->toDir != '') 
     481                { 
     482                        $arguments .= "-o " . $this->toDir . ' '; 
     483                } 
     484                 
    333485                return $arguments; 
    334486        } 
  • trunk/classes/phing/tasks/ext/svn/SvnBaseTask.php

    r115 r119  
    2323 
    2424/** 
    25  * Send a message by mail()  
     25 * Base class for Subversion tasks 
    2626 * 
    27  *  <mail to="user@example.org" subject="build complete">The build process is a success...</mail>  
    28  *  
    29  *  @author   Francois Harvey at SecuriWeb (http://www.securiweb.net) 
    30  *  @version  $Id$ 
    31  *  @package  phing.tasks.ext 
     27 * @author Michiel Rook <michiel.rook@gmail.com> 
     28 * @author Andrew Eddie <andrew.eddie@jamboworks.com>  
     29 * @version $Id$ 
     30 * @package phing.tasks.ext.svn 
     31 * @see VersionControl_SVN 
     32 * @since 2.2.0 
    3233 */ 
    3334abstract class SvnBaseTask extends Task 
     
    4445         
    4546        private $svnArgs = array(); 
     47         
     48        private $svnSwitches = array(); 
     49 
     50        private $toDir = ""; 
    4651 
    4752        /** 
     
    105110                return $this->svnPath; 
    106111        } 
    107          
     112 
     113        // 
     114        // Args 
     115        // 
     116 
     117        /** 
     118         * Sets the path to export/checkout to 
     119         */ 
     120        function setToDir($toDir) 
     121        { 
     122                $this->toDir = $toDir; 
     123        } 
     124 
     125        /** 
     126         * Returns the path to export/checkout to 
     127         */ 
     128        function getToDir() 
     129        { 
     130                return $this->toDir; 
     131        } 
     132 
     133        // 
     134        // Switches 
     135        // 
     136 
     137        /** 
     138         * Sets the force switch 
     139         */ 
     140        function setForce($value) 
     141        { 
     142                $this->svnSwitches['force'] = $value; 
     143        } 
     144 
     145        /** 
     146         * Returns the forec switch 
     147         */ 
     148        function getForce() 
     149        { 
     150                return isset( $this->svnSwitches['force'] ) ? $this->svnSwitches['force'] : ''; 
     151        } 
     152 
     153        /** 
     154         * Sets the username of the user to export 
     155         */ 
     156        function setUsername($value) 
     157        { 
     158                $this->svnSwitches['username'] = $value; 
     159        } 
     160 
     161        /** 
     162         * Returns the username 
     163         */ 
     164        function getUsername() 
     165        { 
     166                return isset( $this->svnSwitches['username'] ) ? $this->svnSwitches['username'] : ''; 
     167        } 
     168 
     169        /** 
     170         * Sets the password of the user to export 
     171         */ 
     172        function setPassword($value) 
     173        { 
     174                $this->svnSwitches['password'] = $value; 
     175        } 
     176 
     177        /** 
     178         * Returns the password 
     179         */ 
     180        function getPassword() 
     181        { 
     182                return isset( $this->svnSwitches['password'] ) ? $this->svnSwitches['password'] : ''; 
     183        } 
     184 
     185        /** 
     186         * Sets the password of the user to export 
     187         */ 
     188        function setNoCache($value) 
     189        { 
     190                $this->svnSwitches['no-auth-cache'] = $value; 
     191        } 
     192 
     193        /** 
     194         * Returns the password 
     195         */ 
     196        function getNoCache() 
     197        { 
     198                return isset( $this->svnSwitches['no-auth-cache'] ) ? $this->svnSwitches['no-auth-cache'] : ''; 
     199        } 
     200 
    108201        /** 
    109202         * Creates a VersionControl_SVN class based on $mode 
     
    162255                 
    163256                $tempArgs = array_merge($tempArgs, $args); 
    164                  
    165                 if ($output = $this->svn->run($tempArgs, $switches)) 
     257 
     258                $tempSwitches = $this->svnSwitches; 
     259                 
     260                $tempSwitches = array_merge($tempSwitches, $switches); 
     261 
     262                if ($output = $this->svn->run($tempArgs, $tempSwitches)) 
    166263                { 
    167264                        return $output; 
  • trunk/classes/phing/tasks/ext/svn/SvnExportTask.php

    r81 r119  
    2525/** 
    2626 * Exports/checks out a repository to a local directory 
     27 * with authentication  
    2728 * 
    2829 * @author Michiel Rook <michiel.rook@gmail.com> 
     30 * @author Andrew Eddie <andrew.eddie@jamboworks.com>  
    2931 * @version $Id$ 
    3032 * @package phing.tasks.ext.svn 
    31  * @see VersionControl_SVN 
    32  * @since 2.1.0 
     33 * @since 2.2.0 
    3334 */ 
    3435class SvnExportTask extends SvnBaseTask 
    3536{ 
    36         private $toDir = ""; 
    37  
    38         /** 
    39          * Sets the path to export/checkout to 
    40          */ 
    41         function setToDir($toDir) 
    42         { 
    43                 $this->toDir = $toDir; 
    44         } 
    45  
    46         /** 
    47          * Returns the path to export/checkout to 
    48          */ 
    49         function getToDir() 
    50         { 
    51                 return $this->toDir; 
    52         } 
    53  
    5437        /** 
    5538         * The main entry point 
     
    6144                $this->setup('export'); 
    6245                 
    63                 $this->log("Exporting SVN repository to '" . $this->toDir . "'"); 
    64                  
    65                 $this->run(array($this->toDir)); 
     46                $this->log("Exporting SVN repository to '" . $this->getToDir() . "'"); 
     47 
     48                $this->run(array($this->getToDir())); 
    6649        } 
    6750} 
  • trunk/docs/phing_guide/book/chapters/appendixes/AppendixC-OptionalTasks.html

    r116 r119  
    167167 
    168168<h3>Example</h3> 
    169 <pre>&lt;ioncubeencoder phpversion="4" binary="true" ioncubepath="/usr/local/ioncube" 
    170   targetoption="replace" withoutruntimeloadersupport="true" optimize="max" 
    171   fromdir="files" todir="encoded" licensepath="mylicense.txt" passphrase="mypassphrase"&gt; 
     169<pre>&lt;ioncubeencoder 
     170   binary="true" 
     171   copy="*.ini config/*" 
     172   encode="*.inc licenses/license.key" 
     173   encrypt="*.tpl *.xml" 
     174   encrypt="more" 
     175   fromdir="files" 
     176   ignore="*.bak RCS/ *~ docs/" 
     177   ioncubepath="/usr/local/ioncube" 
     178   keep="docs/README" 
     179   licensepath="mylicense.txt" 
     180   optimize="max" 
     181   passphrase="mypassphrase" 
     182   phpversion="4" 
     183   targetoption="replace" 
     184   todir="encoded" 
     185   withoutruntimeloadersupport="true"&gt; 
    172186  &lt;comment&gt;A project encoded with the ionCube encoder.&lt;/comment&gt; 
    173187&lt;/ioncubeencoder&gt; 
     
    186200  </thead> 
    187201  <tbody> 
     202    <tr> 
     203      <td>allowedserver</td> 
     204      <td>String</td> 
     205      <td>Restricts the encoded files to particular servers and/or domains.  Consult the IonCude documentation for more information.</td> 
     206      <td>none</td> 
     207      <td>No</td> 
     208    </tr> 
     209    <tr> 
     210      <td>binary</td> 
     211      <td>Boolean</td> 
     212      <td>Whether to save encoded files in binary format (default is ASCII format)</td> 
     213      <td>false</td> 
     214      <td>No</td> 
     215    </tr> 
     216    <tr> 
     217      <td>copy</td> 
     218      <td>String</td> 
     219      <td>Specifies files or directories to exclude from being encoded or encrypted and copy them to the target directory (separated by space).</td> 
     220      <td>none</td> 
     221      <td>No</td> 
     222    </tr> 
     223    <tr> 
     224      <td>encode</td> 
     225      <td>String</td> 
     226      <td>Specifies additional file patterns, files or directories to encode, or to reverse the effect of <em>copy</em></td> 
     227      <td>none</td> 
     228      <td>No</td> 
     229    </tr> 
     230    <tr> 
     231      <td>encrypt</td> 
     232      <td>String</td> 
     233      <td>Specify files or directories (space separated list) that are to be encrypted.</td> 
     234      <td>none</td> 
     235      <td>No</td> 
     236    </tr> 
     237    <tr> 
     238      <td>expirein</td> 
     239      <td>String</td> 
     240      <td>Sets a period in seconds (s), minutes (m), hours (h) or days (d) after which the files expire.  Accepts: <em>500s</em> or <em>55m</em> or <em>24h</em> or <em>7d</em></td> 
     241      <td>none</td> 
     242      <td>No</td> 
     243    </tr> 
     244    <tr> 
     245      <td>expireon</td> 
     246      <td>String</td> 
     247      <td>Sets a YYYY-MM-DD date to expire the files.</td> 
     248      <td>none</td> 
     249      <td>No</td> 
     250    </tr> 
     251    <tr> 
     252      <td>fromdir</td> 
     253      <td>String</td> 
     254      <td>Path containing source files</td> 
     255      <td>none</td> 
     256      <td>Yes</td> 
     257    </tr> 
     258    <tr> 
     259      <td>ignore</td> 
     260      <td>String</td> 
     261      <td>Set files and directories to ignore entirely and exclude from the target directory (separated by space).</td> 
     262      <td>none</td> 
     263      <td>Yes</td> 
     264    </tr> 
     265    <tr> 
     266      <td>ioncubepath</td> 
     267      <td>String</td> 
     268      <td>Path to the ionCube binaries</td> 
     269      <td>/usr/local/ioncube</td> 
     270      <td>No</td> 
     271    </tr> 
     272    <tr> 
     273      <td>keep</td> 
     274      <td>String</td> 
     275      <td>Set files and directories not to be ignored (separated by space)./td> 
     276      <td>none</td> 
     277      <td>No</td> 
     278    </tr> 
     279    <tr> 
     280      <td>licensepath</td> 
     281      <td>String</td> 
     282      <td>Path to the license file that will be used by the encoded files</td> 
     283      <td>none</td> 
     284      <td>No</td> 
     285    </tr> 
     286    <tr> 
     287      <td>nodoccomments</td> 
     288      <td>String</td> 
     289      <td>Omits documents comments ( /** ... */ ) from the encoded files.</td> 
     290      <td>none</td> 
     291      <td>No</td> 
     292    </tr> 
     293    <tr> 
     294      <td>obfuscation-key</td> 
     295      <td>String</td> 
     296      <td>The obfuscation key must be supplied when using the obfuscate option</td> 
     297      <td>none</td> 
     298      <td>No</td> 
     299    </tr> 
     300    </tr> 
     301    <tr> 
     302      <td>obfuscate</td> 
     303      <td>String</td> 
     304      <td>The Encoder can obfuscate the names of global functions, the names of local variables in global functions, and line numbers.  Use either <em>all</em> or any of <em>functions</em>, <em>locals</em> or <em>linenos</em> separated by a space.</td> 
     305      <td>none</td> 
     306      <td>No</td> 
     307    </tr> 
     308    <tr> 
     309      <td>optimize</td> 
     310      <td>String</td> 
     311      <td>Controls the optimization of the encoded files, accepts either <em>more</em> or <em>max</em></td> 
     312      <td>none</td> 
     313      <td>No</td> 
     314    </tr> 
     315    <tr> 
     316      <td>passphrase</td> 
     317      <td>String</td> 
     318      <td>The passphrase to use when encoding with a license file</td> 
     319      <td>none</td> 
     320      <td>No</td> 
     321    </tr> 
    188322    <tr> 
    189323      <td>phpversion</td> 
     
    194328    </tr> 
    195329    <tr> 
    196       <td>ioncubepath</td> 
    197       <td>String</td> 
    198       <td>Path to the ionCube binaries</td> 
    199       <td>/usr/local/ioncube</td> 
    200       <td>No</td> 
    201     </tr> 
    202     <tr> 
    203       <td>binary</td> 
    204       <td>Boolean</td> 
    205       <td>Wether to save encoded files in binary format (default is ASCII format)</td> 
    206       <td>false</td> 
    207       <td>No</td> 
     330      <td>targetoption</td> 
     331      <td>String</td> 
     332      <td>Option to use when target directory exists, accepts <em>replace</em>, <em>merge</em>, <em>update</em> and <em>rename</em></td> 
     333      <td>none</td> 
     334      <td>No</td> 
     335    </tr> 
     336    <tr> 
     337      <td>todir</td> 
     338      <td>String</td> 
     339      <td>Path to save encoded files to</td> 
     340      <td>none</td> 
     341      <td>Yes</td> 
    208342    </tr> 
    209343    <tr> 
     
    213347      <td>false</td> 
    214348      <td>No</td> 
    215     </tr> 
    216     <tr> 
    217       <td>optimize</td> 
    218       <td>String</td> 
    219       <td>Controls the optimization of the encoded files, accepts either <em>more</em> or <em>max</em></td> 
    220       <td>none</td> 
    221       <td>No</td> 
    222     </tr> 
    223     <tr> 
    224       <td>licensepath</td> 
    225       <td>String</td> 
    226       <td>Path to the license file that will be used by the encoded files</td> 
    227       <td>none</td> 
    228       <td>No</td> 
    229     </tr> 
    230     <tr> 
    231       <td>passphrase</td> 
    232       <td>String</td> 
    233       <td>The passphrase to use when encoding with a license file</td> 
    234       <td>none</td> 
    235       <td>No</td> 
    236     </tr> 
    237     <tr> 
    238       <td>targetoption</td> 
    239       <td>String</td> 
    240       <td>Option to use when target directory exists, accepts <em>replace</em>, <em>merge</em>, <em>update</em> and <em>rename</em></td> 
    241       <td>none</td> 
    242       <td>No</td> 
    243     </tr> 
    244     <tr> 
    245       <td>fromdir</td> 
    246       <td>String</td> 
    247       <td>Path containing source files</td> 
    248       <td>none</td> 
    249       <td>Yes</td> 
    250     </tr> 
    251     <tr> 
    252