|
| 1 | +<?php |
| 2 | +$tstart = explode(' ', microtime()); |
| 3 | +$tstart = $tstart[1] + $tstart[0]; |
| 4 | +set_time_limit(0); |
| 5 | + |
| 6 | + |
| 7 | +function getSnippetContent($filename) { |
| 8 | + $o = file_get_contents($filename); |
| 9 | + $o = str_replace('<?php','',$o); |
| 10 | + $o = str_replace('?>','',$o); |
| 11 | + $o = trim($o); |
| 12 | + return $o; |
| 13 | +} |
| 14 | + |
| 15 | + |
| 16 | +/* define package names */ |
| 17 | +define('PKG_NAME','FixTreeSorting'); |
| 18 | +define('PKG_NAME_LOWER',strtolower(PKG_NAME)); |
| 19 | +define('PKG_VERSION','1.0'); |
| 20 | +define('PKG_RELEASE','pl'); |
| 21 | + |
| 22 | +$root = dirname(dirname(__FILE__)).'/'; |
| 23 | +$sources= array ( |
| 24 | + 'root' => $root, |
| 25 | + 'build' => $root .'_build/', |
| 26 | + 'resolvers' => $root . '_build/resolvers/', |
| 27 | + 'data' => $root . '_build/data/', |
| 28 | + 'events' => $root . '_build/data/events/', |
| 29 | + 'elements' => $root.'core/components/'.PKG_NAME_LOWER.'/elements/', |
| 30 | + 'source_core' => $root.'core/components/fixtreesorting', |
| 31 | + 'docs' => $root.'core/components/fixtreesorting/docs/', |
| 32 | +); |
| 33 | +unset($root); |
| 34 | + |
| 35 | +/* override with your own defines here (see build.config.sample.php) */ |
| 36 | +require_once $sources['build'] . 'build.config.php'; |
| 37 | +require_once MODX_CORE_PATH . 'model/modx/modx.class.php'; |
| 38 | + |
| 39 | +$modx= new modX(); |
| 40 | +$modx->initialize('mgr'); |
| 41 | +echo ''; /* used for nice formatting of log messages */ |
| 42 | +$modx->setLogLevel(modX::LOG_LEVEL_INFO); |
| 43 | +$modx->setLogTarget('ECHO'); |
| 44 | + |
| 45 | +$modx->loadClass('transport.modPackageBuilder','',false, true); |
| 46 | +$builder = new modPackageBuilder($modx); |
| 47 | +$builder->createPackage(PKG_NAME_LOWER,PKG_VERSION,PKG_RELEASE); |
| 48 | +$builder->registerNamespace(PKG_NAME_LOWER,false,true,'{core_path}components/'.PKG_NAME_LOWER.'/'); |
| 49 | + |
| 50 | +$category= $modx->newObject('modCategory'); |
| 51 | +$category->set('id',1); |
| 52 | +$category->set('category',PKG_NAME); |
| 53 | + |
| 54 | +/* create category vehicle */ |
| 55 | +$attr = array( |
| 56 | + xPDOTransport::UNIQUE_KEY => 'category', |
| 57 | + xPDOTransport::PRESERVE_KEYS => false, |
| 58 | + xPDOTransport::UPDATE_OBJECT => true, |
| 59 | + xPDOTransport::RELATED_OBJECTS => true, |
| 60 | + xPDOTransport::RELATED_OBJECT_ATTRIBUTES => array ( |
| 61 | + 'Snippets' => array( |
| 62 | + xPDOTransport::PRESERVE_KEYS => false, |
| 63 | + xPDOTransport::UPDATE_OBJECT => true, |
| 64 | + xPDOTransport::UNIQUE_KEY => 'name', |
| 65 | + ), |
| 66 | + ), |
| 67 | +); |
| 68 | +$vehicle = $builder->createVehicle($category,$attr); |
| 69 | +$builder->putVehicle($vehicle); |
| 70 | + |
| 71 | + |
| 72 | + |
| 73 | +/* add plugins */ |
| 74 | +$plugins = include $sources['data'].'transport.plugins.php'; |
| 75 | +if (!is_array($plugins)) { $modx->log(modX::LOG_LEVEL_FATAL,'Adding plugins failed.'); } |
| 76 | +$attributes= array( |
| 77 | + xPDOTransport::UNIQUE_KEY => 'name', |
| 78 | + xPDOTransport::PRESERVE_KEYS => false, |
| 79 | + xPDOTransport::UPDATE_OBJECT => true, |
| 80 | + xPDOTransport::RELATED_OBJECTS => true, |
| 81 | + xPDOTransport::RELATED_OBJECT_ATTRIBUTES => array ( |
| 82 | + 'PluginEvents' => array( |
| 83 | + xPDOTransport::PRESERVE_KEYS => true, |
| 84 | + xPDOTransport::UPDATE_OBJECT => false, |
| 85 | + xPDOTransport::UNIQUE_KEY => array('pluginid','event'), |
| 86 | + ), |
| 87 | + ), |
| 88 | +); |
| 89 | +foreach ($plugins as $plugin) { |
| 90 | + $vehicle = $builder->createVehicle($plugin, $attributes); |
| 91 | + $builder->putVehicle($vehicle); |
| 92 | +} |
| 93 | +$modx->log(modX::LOG_LEVEL_INFO,'Packaged in '.count($plugins).' plugins.'); flush(); |
| 94 | +unset($plugins,$plugin,$attributes); |
| 95 | + |
| 96 | + |
| 97 | + |
| 98 | +$modx->log(modX::LOG_LEVEL_INFO,'Adding file resolvers to category...'); |
| 99 | +$vehicle->resolve('file',array( |
| 100 | + 'source' => $sources['source_core'], |
| 101 | + 'target' => "return MODX_CORE_PATH . 'components/';", |
| 102 | +)); |
| 103 | + |
| 104 | + |
| 105 | +$modx->log(modX::LOG_LEVEL_INFO,'Adding package attributes and setup options...'); |
| 106 | +$builder->setPackageAttributes(array( |
| 107 | + 'license' => file_get_contents($sources['docs'] . 'license.txt'), |
| 108 | + 'readme' => file_get_contents($sources['docs'] . 'readme.txt'), |
| 109 | + 'changelog' => file_get_contents($sources['docs'] . 'changelog.txt'), |
| 110 | +)); |
| 111 | + |
| 112 | +/* zip up package */ |
| 113 | +$modx->log(modX::LOG_LEVEL_INFO,'Packing up transport package zip...'); |
| 114 | +$builder->pack(); |
| 115 | + |
| 116 | +$tend= explode(" ", microtime()); |
| 117 | +$tend= $tend[1] + $tend[0]; |
| 118 | +$totalTime= sprintf("%2.4f s",($tend - $tstart)); |
| 119 | +$modx->log(modX::LOG_LEVEL_INFO,"\n<br />Package Built.<br />\nExecution time: {$totalTime}\n"); |
| 120 | + |
| 121 | + |
| 122 | +session_write_close(); |
| 123 | +exit (); |
0 commit comments