diff options
| author | Christian Weiske <cweiske@cweiske.de> | 2014-05-21 07:48:02 +0200 |
|---|---|---|
| committer | Christian Weiske <cweiske@cweiske.de> | 2014-05-21 07:48:02 +0200 |
| commit | cb96273d9e57cf57eaab4015b46a4e0b43cc1c55 (patch) | |
| tree | e3d223d7d7bf589a13199bdf62aa89afdce98c65 | |
| parent | 5d1d1d3cb1a5f73dcf80c7815b1b31be9973ac72 (diff) | |
| download | phorkie-cb96273d9e57cf57eaab4015b46a4e0b43cc1c55.tar.gz phorkie-cb96273d9e57cf57eaab4015b46a4e0b43cc1c55.zip | |
first work on .phar
| -rw-r--r-- | .gitignore | 12 | ||||
| -rw-r--r-- | build.xml | 47 | ||||
| -rw-r--r-- | src/stub-phar.php | 65 |
3 files changed, 116 insertions, 8 deletions
@@ -1,6 +1,8 @@ -README.html -repos -data/config.php -build.properties -dist +/README.html +/repos +/data/config.php +/build.properties +/dist /lib/ +/www/*.phar +/www/*.phar.bz2 @@ -8,8 +8,8 @@ --> <property file="build.properties" /> - <property name="version-m" value="0.3" /> - <property name="version" value="0.3.1" /> + <property name="version-m" value="0.4" /> + <property name="version" value="0.4.0" /> <property name="stability" value="alpha" /> <property name="releasenotes" value=" Version 0.3.1 - 2012-09-27 @@ -36,6 +36,7 @@ Version 0.3.0 - 2012-09-27 * Added nginx rewrite rules to README [skl] " /> <property name="zipfile" value="${phing.project.name}-${version}.tar.bz2" /> + <property name="pharfile" value="${phing.dir}/dist/${phing.project.name}-${version}.phar" /> <property name="pkgfile" value="${phing.project.name}-${version}.tgz" /> <property name="distfile" value="dist/${zipfile}" /> <property name="distpkgfile" value="dist/pear/${pkgfile}" /> @@ -57,14 +58,54 @@ Version 0.3.0 - 2012-09-27 <exclude name="data/config.php"/> </fileset> + <fileset id="fs.phar" dir="${phing.dir}"> + <include name="data/**"/> + <include name="lib/**"/> + <include name="scripts/**"/> + <include name="src/**"/> + <include name="www/**"/> + + <include name="ChangeLog"/> + <include name="README.rst"/> + + <exclude name="data/config.php"/> + <exclude name="**/.gitignore/"/> + <exclude name="**/.git/"/> + <exclude name="lib/geshi/geshi/src/doc/"/> + <exclude name="lib/twig/twig/doc/"/> + <exclude name="lib/twig/twig/test/"/> + <exclude name="lib/pear-pear.php.net/PEAR/bin/"/> + <exclude name="lib/pear-pear.php.net/PEAR/PEAR/"/> + </fileset> + <fileset id="fs.doc" dir="."> <include name="README.rst"/> <include name="NEWS.rst"/> </fileset> - <taskdef name="rST" classname="phing.tasks.ext.rSTTask" /> <taskdef name="d51pearpkg2" classname="phing.tasks.ext.d51PearPkg2Task" /> + + <!-- FIXME: depends="collectdeps" --> + <target name="phar" + description="Create phar file for release" + > + <delete file="${pharfile}"/> + <pharpackage basedir="${phing.dir}" + destfile="${pharfile}" + stub="${phing.dir}/src/stub-phar.php" + alias="phorkie.phar" + > + <fileset refid="fs.phar"/> + </pharpackage> + + <exec executable="bzip2" dir="${phing.dir}/dist"> + <arg value="-kf"/> + <arg file="${pharfile}"/> + </exec> + </target> + + <target name="zip" depends="check" description="Create zip file for release" > diff --git a/src/stub-phar.php b/src/stub-phar.php new file mode 100644 index 0000000..72e367d --- /dev/null +++ b/src/stub-phar.php @@ -0,0 +1,65 @@ +<?php +/** + * Phar stub file for phorkie. Handles startup of the .phar file. + * + * PHP version 5 + * + * @category Tools + * @package Phorkie + * @author Christian Weiske <cweiske@cweiske.de> + * @copyright 2014 Christian Weiske + * @license http://www.gnu.org/licenses/agpl.html GNU AGPL v3 + * @link http://phorkie.sf.net/ + */ +if (!in_array('phar', stream_get_wrappers()) || !class_exists('Phar', false)) { + echo "Phar extension not avaiable\n"; + exit(255); +} + +$web = 'www/index.php'; +//FIXME +$cli = 'scripts/index.php'; + +/** + * Rewrite the HTTP request path to an internal file. + * Maps "" and "/" to "www/index.php". + * + * @param string $path Path from the browser, relative to the .phar + * + * @return string Internal path. + */ +function rewritePath($path) +{ + if ($path == '') { + //we need a / to get the relative links on index.php work + if (!isset($_SERVER['REQUEST_SCHEME'])) { + $_SERVER['REQUEST_SCHEME'] = 'http'; + } + $url = $_SERVER['REQUEST_SCHEME'] . '://' + . $_SERVER['HTTP_HOST'] + . preg_replace('/[?#].*$/', '', $_SERVER['REQUEST_URI']) + . '/'; + header('Location: ' . $url); + exit(0); + } else if ($path == '/') { + return 'www/index.php'; + } + + if (substr($path, -4) == '.css') { + header('Expires: ' . date('r', time() + 86400 * 7)); + } + return $path; +} + +//Phar::interceptFileFuncs(); +set_include_path( + 'phar://' . __FILE__ + . PATH_SEPARATOR . 'phar://' . __FILE__ . '/lib/' +); +Phar::webPhar(null, $web, null, array(), 'rewritePath'); + +//TODO: implement CLI script runner +echo "phorkie can only be used in the browser\n"; +exit(1); +__HALT_COMPILER(); +?> |
