code: static function run_update_extra_files( $task=null, $args=array(), $cliopts=array() )
      {
          $opts = self::getOpts( @$args[0], @$args[1], $cliopts );
          if ( !SharedLock::acquire( $opts['extension']['name'], LOCK_EX, $opts ) )
              throw new PakeException( "Source code locked by another process" );
  
          $destdir = self::getBuildDir( $opts ) . '/' . $opts['extension']['name'];
          $extrafiles = $opts['files']['to_parse'];
          //$files = pakeFinder::type( 'file' )->name( $extrafiles )->in( $destdir );
          /// @todo shall we make sure we only retrieve files, not directories?
          $files = self::pake_antpattern( $extrafiles, $destdir );
          $tokens = array(
              'EXTENSION_VERSION' => $opts['version']['alias'] . $opts['releasenr']['separator'] . $opts['version']['release'],
              'EXTENSION_LICENSE' => $opts['version']['license'] );
          if ( @$opts['ezp']['version']['major'] )
          {
              $tokens['EXTENSION_PUBLISH_VERSION'] = $opts['ezp']['version']['major'] . '.' . $opts['ezp']['version']['minor'] . '.' . $opts['ezp']['version']['release'];
          }
          pake_replace_tokens( $files, $destdir, '[', ']', $tokens );
  
          SharedLock::release( $opts['extension']['name'], LOCK_EX, $opts );
      }
docs: Updates all files specified in user configuration,
  replacing the tokens [EXTENSION_VERSION], [EXTENSION_PUBLISH_VERSION] and [EXTENSION_LICENSE]