├── .gitignore ├── Gulpfile.js ├── README.md ├── composer.json ├── composer.lock ├── package.json ├── puli.json ├── res ├── js │ └── script.js ├── public │ └── images │ │ └── puli-logo.png ├── scss │ └── style.scss └── views │ ├── index.html.twig │ └── layout.html.twig ├── src └── DemoApplication.php ├── var ├── cache │ └── .gitkeep └── logs │ └── .gitkeep └── web ├── .htaccess ├── app.php └── app_dev.php /.gitignore: -------------------------------------------------------------------------------- 1 | /.puli 2 | /node_modules 3 | /res/public/css 4 | /res/public/js 5 | /res/public/fonts 6 | /vendor 7 | /web/css 8 | /web/fonts 9 | /web/images 10 | /web/js 11 | /var/cache/* 12 | /var/logs/* 13 | !/var/cache/.gitkeep 14 | !/var/logs/.gitkeep 15 | -------------------------------------------------------------------------------- /Gulpfile.js: -------------------------------------------------------------------------------- 1 | var gulp = require('gulp'), 2 | sass = require('gulp-sass'), 3 | concat = require('gulp-concat'); 4 | 5 | gulp.task('default', ['js', 'css', 'fonts']); 6 | 7 | gulp.task('css', function () { 8 | gulp.src(['node_modules/bootstrap-sass/assets/stylesheets/_bootstrap.scss', 'res/scss/style.scss']) 9 | .pipe(concat('style.scss')) 10 | .pipe(sass()) 11 | .pipe(gulp.dest('res/public/css/')); 12 | }); 13 | 14 | gulp.task('js', function () { 15 | gulp.src([ 16 | 'res/js/script.js', 17 | 'node_modules/jquery/dist/jquery.min.js', 18 | 'node_modules/bootstrap-sass/assets/javascripts/bootstrap.min.js' 19 | ]) 20 | .pipe(gulp.dest('res/public/js/')); 21 | }); 22 | 23 | gulp.task('fonts', function () { 24 | gulp.src('node_modules/bootstrap-sass/assets/fonts/bootstrap/*') 25 | .pipe(gulp.dest('res/public/fonts/')); 26 | }); 27 | 28 | gulp.task('watch', function () { 29 | gulp.watch('res/scss/*.scss', ['css']); 30 | gulp.watch('res/js/*.js', ['js']); 31 | }); 32 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | A Puli Demo Application 2 | ======================= 3 | 4 | This repository contains a demo application showing how to use [Puli] in a 5 | [Silex] application together with [Twig] and [Gulp JS]. 6 | 7 | Run the following commands after cloning the repository: 8 | 9 | ``` 10 | $ npm install 11 | $ gulp 12 | $ composer install 13 | $ vendor/bin/puli publish --install 14 | ``` 15 | 16 | Building your Own 17 | ----------------- 18 | 19 | If you want to build this demo application from scratch, follow these steps: 20 | 21 | 1. Create the basic directory layout 22 | 2. Copy `composer.json`, `package.json` and `Gulpfile.js` to the project 23 | 3. Run `npm install` 24 | 4. Run `composer install` 25 | 5. Put your SCSS files into `res/scss/` 26 | 6. Put your Javascript files into `res/js/` 27 | 7. Run `gulp` 28 | 8. Download [`puli.phar`] 29 | 9. Run `php puli.phar map /app res` to map the Puli path `/app` to the `res` directory 30 | 10. Run `php puli.phar server --add localhost web` to add the server "local" for the directory `web` 31 | 11. Run `php puli.phar publish /app/public localhost` to publish your public resources to localhost. 32 | 12. Run `php puli.phar publish --install` to install the public resources on the server. 33 | 34 | [Puli]: http://puli.io 35 | [Silex]: http://silex.sensiolabs.org 36 | [Twig]: http://twig.sensiolabs.org 37 | [Gulp JS]: http://gulpjs.com 38 | [`puli.phar`]: https://github.com/puli/cli/releases 39 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "puli/demo-application", 3 | "description": "A demo application showcasing the use of the Puli resource manager with Silex, Twig and Gulp JS.", 4 | "license": "MIT", 5 | "authors": [ 6 | { 7 | "name": "Bernhard Schussek", 8 | "email": "bschussek@gmail.com" 9 | } 10 | ], 11 | "autoload": { 12 | "psr-4": { "Puli\\DemoApplication\\": "src/" } 13 | }, 14 | "require": { 15 | "silex/silex": "^1.2", 16 | "twig/twig": "^1.18", 17 | "puli/composer-plugin": "^1.0-beta9", 18 | "puli/repository": "^1.0-beta9", 19 | "puli/discovery": "^1.0-beta9", 20 | "puli/url-generator": "^1.0-beta4", 21 | "puli/twig-extension": "^1.0-beta8", 22 | "symfony/filesystem": "^3.0" 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /composer.lock: -------------------------------------------------------------------------------- 1 | { 2 | "_readme": [ 3 | "This file locks the dependencies of your project to a known state", 4 | "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", 5 | "This file is @generated automatically" 6 | ], 7 | "hash": "7a40a4571a40d5196ba825f74ff52e4f", 8 | "content-hash": "64ed08fde95016013c2e71cb5120bf20", 9 | "packages": [ 10 | { 11 | "name": "justinrainbow/json-schema", 12 | "version": "v1.6.0", 13 | "source": { 14 | "type": "git", 15 | "url": "https://github.com/justinrainbow/json-schema.git", 16 | "reference": "f9e27c3e202faf14fd581ef41355d83bb4b7eb7d" 17 | }, 18 | "dist": { 19 | "type": "zip", 20 | "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/f9e27c3e202faf14fd581ef41355d83bb4b7eb7d", 21 | "reference": "f9e27c3e202faf14fd581ef41355d83bb4b7eb7d", 22 | "shasum": "" 23 | }, 24 | "require": { 25 | "php": ">=5.3.2" 26 | }, 27 | "require-dev": { 28 | "json-schema/json-schema-test-suite": "1.1.0", 29 | "phpdocumentor/phpdocumentor": "~2", 30 | "phpunit/phpunit": "~3.7" 31 | }, 32 | "bin": [ 33 | "bin/validate-json" 34 | ], 35 | "type": "library", 36 | "extra": { 37 | "branch-alias": { 38 | "dev-master": "1.4.x-dev" 39 | } 40 | }, 41 | "autoload": { 42 | "psr-4": { 43 | "JsonSchema\\": "src/JsonSchema/" 44 | } 45 | }, 46 | "notification-url": "https://packagist.org/downloads/", 47 | "license": [ 48 | "BSD-3-Clause" 49 | ], 50 | "authors": [ 51 | { 52 | "name": "Bruno Prieto Reis", 53 | "email": "bruno.p.reis@gmail.com" 54 | }, 55 | { 56 | "name": "Justin Rainbow", 57 | "email": "justin.rainbow@gmail.com" 58 | }, 59 | { 60 | "name": "Igor Wiedler", 61 | "email": "igor@wiedler.ch" 62 | }, 63 | { 64 | "name": "Robert Schönthal", 65 | "email": "seroscho@googlemail.com" 66 | } 67 | ], 68 | "description": "A library to validate a json schema.", 69 | "homepage": "https://github.com/justinrainbow/json-schema", 70 | "keywords": [ 71 | "json", 72 | "schema" 73 | ], 74 | "time": "2016-01-06 14:37:04" 75 | }, 76 | { 77 | "name": "pimple/pimple", 78 | "version": "v1.1.1", 79 | "source": { 80 | "type": "git", 81 | "url": "https://github.com/silexphp/Pimple.git", 82 | "reference": "2019c145fe393923f3441b23f29bbdfaa5c58c4d" 83 | }, 84 | "dist": { 85 | "type": "zip", 86 | "url": "https://api.github.com/repos/silexphp/Pimple/zipball/2019c145fe393923f3441b23f29bbdfaa5c58c4d", 87 | "reference": "2019c145fe393923f3441b23f29bbdfaa5c58c4d", 88 | "shasum": "" 89 | }, 90 | "require": { 91 | "php": ">=5.3.0" 92 | }, 93 | "type": "library", 94 | "extra": { 95 | "branch-alias": { 96 | "dev-master": "1.1.x-dev" 97 | } 98 | }, 99 | "autoload": { 100 | "psr-0": { 101 | "Pimple": "lib/" 102 | } 103 | }, 104 | "notification-url": "https://packagist.org/downloads/", 105 | "license": [ 106 | "MIT" 107 | ], 108 | "authors": [ 109 | { 110 | "name": "Fabien Potencier", 111 | "email": "fabien@symfony.com" 112 | } 113 | ], 114 | "description": "Pimple is a simple Dependency Injection Container for PHP 5.3", 115 | "homepage": "http://pimple.sensiolabs.org", 116 | "keywords": [ 117 | "container", 118 | "dependency injection" 119 | ], 120 | "time": "2013-11-22 08:30:29" 121 | }, 122 | { 123 | "name": "psr/log", 124 | "version": "1.0.0", 125 | "source": { 126 | "type": "git", 127 | "url": "https://github.com/php-fig/log.git", 128 | "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b" 129 | }, 130 | "dist": { 131 | "type": "zip", 132 | "url": "https://api.github.com/repos/php-fig/log/zipball/fe0936ee26643249e916849d48e3a51d5f5e278b", 133 | "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b", 134 | "shasum": "" 135 | }, 136 | "type": "library", 137 | "autoload": { 138 | "psr-0": { 139 | "Psr\\Log\\": "" 140 | } 141 | }, 142 | "notification-url": "https://packagist.org/downloads/", 143 | "license": [ 144 | "MIT" 145 | ], 146 | "authors": [ 147 | { 148 | "name": "PHP-FIG", 149 | "homepage": "http://www.php-fig.org/" 150 | } 151 | ], 152 | "description": "Common interface for logging libraries", 153 | "keywords": [ 154 | "log", 155 | "psr", 156 | "psr-3" 157 | ], 158 | "time": "2012-12-21 11:40:51" 159 | }, 160 | { 161 | "name": "puli/composer-plugin", 162 | "version": "1.0.0-beta9", 163 | "source": { 164 | "type": "git", 165 | "url": "https://github.com/puli/composer-plugin.git", 166 | "reference": "a807314893420bd6c33402e7e9b01448748f3618" 167 | }, 168 | "dist": { 169 | "type": "zip", 170 | "url": "https://api.github.com/repos/puli/composer-plugin/zipball/a807314893420bd6c33402e7e9b01448748f3618", 171 | "reference": "a807314893420bd6c33402e7e9b01448748f3618", 172 | "shasum": "" 173 | }, 174 | "require": { 175 | "composer-plugin-api": "^1.0", 176 | "php": "^5.3.9|^7.0", 177 | "puli/discovery": "^1.0-beta9", 178 | "puli/repository": "^1.0-beta9", 179 | "puli/url-generator": "^1.0-beta4", 180 | "symfony/process": "^2.3|^3.0", 181 | "webmozart/assert": "^1.0", 182 | "webmozart/json": "^1.2.2", 183 | "webmozart/path-util": "^2.2" 184 | }, 185 | "require-dev": { 186 | "composer/composer": "^1.0-alpha10", 187 | "phpunit/phpunit": "^4.6", 188 | "sebastian/version": "^1.0.1", 189 | "symfony/filesystem": "^2.3", 190 | "webmozart/glob": "^4.0" 191 | }, 192 | "type": "composer-plugin", 193 | "extra": { 194 | "branch-alias": { 195 | "dev-master": "1.0-dev" 196 | }, 197 | "class": "Puli\\ComposerPlugin\\PuliPlugin" 198 | }, 199 | "autoload": { 200 | "psr-4": { 201 | "Puli\\ComposerPlugin\\": "src/" 202 | } 203 | }, 204 | "notification-url": "https://packagist.org/downloads/", 205 | "license": [ 206 | "MIT" 207 | ], 208 | "authors": [ 209 | { 210 | "name": "Bernhard Schussek", 211 | "email": "bschussek@gmail.com" 212 | } 213 | ], 214 | "description": "Integrates Composer into the Puli package manager.", 215 | "homepage": "http://puli.io", 216 | "time": "2016-01-14 12:40:31" 217 | }, 218 | { 219 | "name": "puli/discovery", 220 | "version": "1.0.0-beta9", 221 | "source": { 222 | "type": "git", 223 | "url": "https://github.com/puli/discovery.git", 224 | "reference": "3fcb42bbbf27e7baa6d978c93be966ee4c2f6085" 225 | }, 226 | "dist": { 227 | "type": "zip", 228 | "url": "https://api.github.com/repos/puli/discovery/zipball/3fcb42bbbf27e7baa6d978c93be966ee4c2f6085", 229 | "reference": "3fcb42bbbf27e7baa6d978c93be966ee4c2f6085", 230 | "shasum": "" 231 | }, 232 | "require": { 233 | "php": "^5.3.9|^7.0", 234 | "ramsey/uuid": "^2.8", 235 | "webmozart/assert": "^1.0", 236 | "webmozart/expression": "^1.0" 237 | }, 238 | "require-dev": { 239 | "phpunit/phpunit": "^4.6", 240 | "puli/repository": "^1.0-beta9", 241 | "sebastian/version": "^1.0.1", 242 | "webmozart/json": "^1.2", 243 | "webmozart/key-value-store": "^1.0-beta7" 244 | }, 245 | "suggest": { 246 | "puli/repository": "to bind and discover Puli resources", 247 | "webmozart/json": "to use the JSON discovery", 248 | "webmozart/key-value-store": "to use the key-value store discovery" 249 | }, 250 | "type": "library", 251 | "extra": { 252 | "branch-alias": { 253 | "dev-master": "1.0-dev" 254 | } 255 | }, 256 | "autoload": { 257 | "psr-4": { 258 | "Puli\\Discovery\\": "src/" 259 | } 260 | }, 261 | "notification-url": "https://packagist.org/downloads/", 262 | "license": [ 263 | "MIT" 264 | ], 265 | "authors": [ 266 | { 267 | "name": "Bernhard Schussek", 268 | "email": "bschussek@gmail.com" 269 | } 270 | ], 271 | "description": "Publishes and discovers artifacts across Puli packages.", 272 | "homepage": "http://puli.io", 273 | "time": "2016-01-14 10:18:41" 274 | }, 275 | { 276 | "name": "puli/repository", 277 | "version": "1.0.0-beta9", 278 | "source": { 279 | "type": "git", 280 | "url": "https://github.com/puli/repository.git", 281 | "reference": "290afcb7eff49a031a6a4c2c2a8dbd180e86d6ce" 282 | }, 283 | "dist": { 284 | "type": "zip", 285 | "url": "https://api.github.com/repos/puli/repository/zipball/290afcb7eff49a031a6a4c2c2a8dbd180e86d6ce", 286 | "reference": "290afcb7eff49a031a6a4c2c2a8dbd180e86d6ce", 287 | "shasum": "" 288 | }, 289 | "require": { 290 | "php": "^5.3.9|^7.0", 291 | "psr/log": "^1.0", 292 | "webmozart/assert": "^1.0", 293 | "webmozart/glob": "^4.1", 294 | "webmozart/path-util": "^2.2" 295 | }, 296 | "require-dev": { 297 | "phpunit/phpunit": "^4.6", 298 | "sebastian/version": "^1.0.1", 299 | "symfony/filesystem": "^2.0|^3.0", 300 | "webmozart/json": "^1.2.1", 301 | "webmozart/key-value-store": "^1.0-beta7" 302 | }, 303 | "suggest": { 304 | "symfony/filesystem": "to use the filesystem repository", 305 | "webmozart/json": "to use the JSON repositories", 306 | "webmozart/key-value-store": "to use the key-value store change stream" 307 | }, 308 | "type": "library", 309 | "extra": { 310 | "branch-alias": { 311 | "dev-master": "1.1-dev" 312 | } 313 | }, 314 | "autoload": { 315 | "psr-4": { 316 | "Puli\\Repository\\": "src/" 317 | } 318 | }, 319 | "notification-url": "https://packagist.org/downloads/", 320 | "license": [ 321 | "MIT" 322 | ], 323 | "authors": [ 324 | { 325 | "name": "Bernhard Schussek", 326 | "email": "bschussek@gmail.com" 327 | } 328 | ], 329 | "description": "A filesystem-like repository for storing arbitrary resources.", 330 | "homepage": "http://puli.io", 331 | "time": "2016-01-14 13:04:53" 332 | }, 333 | { 334 | "name": "puli/twig-extension", 335 | "version": "1.0.0-beta8", 336 | "source": { 337 | "type": "git", 338 | "url": "https://github.com/puli/twig-extension.git", 339 | "reference": "41972f1b7330bec8481fd5ea2c30f52afa381730" 340 | }, 341 | "dist": { 342 | "type": "zip", 343 | "url": "https://api.github.com/repos/puli/twig-extension/zipball/41972f1b7330bec8481fd5ea2c30f52afa381730", 344 | "reference": "41972f1b7330bec8481fd5ea2c30f52afa381730", 345 | "shasum": "" 346 | }, 347 | "require": { 348 | "php": "^5.3.9|^7.0", 349 | "puli/repository": "^1.0-beta9", 350 | "twig/twig": "^1.20|^2.0", 351 | "webmozart/path-util": "^2.0" 352 | }, 353 | "require-dev": { 354 | "phpunit/phpunit": "^4.6", 355 | "puli/discovery": "^1.0-beta9", 356 | "puli/url-generator": "^1.0-beta4", 357 | "sebastian/version": "^1.0.1", 358 | "symfony/http-kernel": "^2.3" 359 | }, 360 | "suggest": { 361 | "puli/url-generator": "to use the resource_url() function" 362 | }, 363 | "type": "library", 364 | "extra": { 365 | "branch-alias": { 366 | "dev-master": "1.0-dev" 367 | } 368 | }, 369 | "autoload": { 370 | "psr-4": { 371 | "Puli\\TwigExtension\\": "src/" 372 | } 373 | }, 374 | "notification-url": "https://packagist.org/downloads/", 375 | "license": [ 376 | "MIT" 377 | ], 378 | "authors": [ 379 | { 380 | "name": "Bernhard Schussek", 381 | "email": "bschussek@gmail.com" 382 | } 383 | ], 384 | "description": "A Puli extension for the Twig templating system.", 385 | "homepage": "http://puli.io", 386 | "time": "2016-01-14 12:44:30" 387 | }, 388 | { 389 | "name": "puli/url-generator", 390 | "version": "1.0.0-beta4", 391 | "source": { 392 | "type": "git", 393 | "url": "https://github.com/puli/url-generator.git", 394 | "reference": "b6c0bfb678dde9a2f8ece661f894c9f39e62dcc2" 395 | }, 396 | "dist": { 397 | "type": "zip", 398 | "url": "https://api.github.com/repos/puli/url-generator/zipball/b6c0bfb678dde9a2f8ece661f894c9f39e62dcc2", 399 | "reference": "b6c0bfb678dde9a2f8ece661f894c9f39e62dcc2", 400 | "shasum": "" 401 | }, 402 | "require": { 403 | "php": "^5.3.9|^7.0", 404 | "puli/discovery": "^1.0-beta9", 405 | "puli/repository": "^1.0-beta9", 406 | "webmozart/glob": "^4.0", 407 | "webmozart/path-util": "^2.3" 408 | }, 409 | "require-dev": { 410 | "phpunit/phpunit": "^4.6", 411 | "sebastian/version": "^1.0.1" 412 | }, 413 | "type": "library", 414 | "extra": { 415 | "branch-alias": { 416 | "dev-master": "1.0-dev" 417 | } 418 | }, 419 | "autoload": { 420 | "psr-4": { 421 | "Puli\\UrlGenerator\\": "src/" 422 | } 423 | }, 424 | "notification-url": "https://packagist.org/downloads/", 425 | "license": [ 426 | "MIT" 427 | ], 428 | "authors": [ 429 | { 430 | "name": "Bernhard Schussek", 431 | "email": "bschussek@gmail.com" 432 | } 433 | ], 434 | "description": "Generates URLs for public Puli resources.", 435 | "homepage": "http://puli.io", 436 | "keywords": [ 437 | "asset", 438 | "public", 439 | "puli", 440 | "resource", 441 | "url" 442 | ], 443 | "time": "2016-01-14 10:30:17" 444 | }, 445 | { 446 | "name": "ramsey/uuid", 447 | "version": "2.8.4", 448 | "source": { 449 | "type": "git", 450 | "url": "https://github.com/ramsey/uuid.git", 451 | "reference": "805d8e1894c52e5b1582e75ca8803a8d85650df9" 452 | }, 453 | "dist": { 454 | "type": "zip", 455 | "url": "https://api.github.com/repos/ramsey/uuid/zipball/805d8e1894c52e5b1582e75ca8803a8d85650df9", 456 | "reference": "805d8e1894c52e5b1582e75ca8803a8d85650df9", 457 | "shasum": "" 458 | }, 459 | "require": { 460 | "php": ">=5.3.3" 461 | }, 462 | "replace": { 463 | "rhumsaa/uuid": "self.version" 464 | }, 465 | "require-dev": { 466 | "doctrine/dbal": ">=2.3", 467 | "jakub-onderka/php-parallel-lint": "^0.9.0", 468 | "moontoast/math": "~1.1", 469 | "phpunit/phpunit": "~4.1|~5.0", 470 | "satooshi/php-coveralls": "~0.6", 471 | "squizlabs/php_codesniffer": "^2.3", 472 | "symfony/console": "~2.3|~3.0" 473 | }, 474 | "suggest": { 475 | "doctrine/dbal": "Allow the use of a UUID as doctrine field type.", 476 | "moontoast/math": "Support for converting UUID to 128-bit integer (in string form).", 477 | "symfony/console": "Support for use of the bin/uuid command line tool." 478 | }, 479 | "bin": [ 480 | "bin/uuid" 481 | ], 482 | "type": "library", 483 | "autoload": { 484 | "psr-4": { 485 | "Rhumsaa\\Uuid\\": "src/" 486 | } 487 | }, 488 | "notification-url": "https://packagist.org/downloads/", 489 | "license": [ 490 | "MIT" 491 | ], 492 | "authors": [ 493 | { 494 | "name": "Marijn Huizendveld", 495 | "email": "marijn.huizendveld@gmail.com" 496 | }, 497 | { 498 | "name": "Ben Ramsey", 499 | "homepage": "http://benramsey.com" 500 | } 501 | ], 502 | "description": "A PHP 5.3+ library for generating RFC 4122 version 1, 3, 4, and 5 universally unique identifiers (UUID).", 503 | "homepage": "https://github.com/ramsey/uuid", 504 | "keywords": [ 505 | "guid", 506 | "identifier", 507 | "uuid" 508 | ], 509 | "time": "2015-12-17 16:54:24" 510 | }, 511 | { 512 | "name": "seld/jsonlint", 513 | "version": "1.4.0", 514 | "source": { 515 | "type": "git", 516 | "url": "https://github.com/Seldaek/jsonlint.git", 517 | "reference": "66834d3e3566bb5798db7294619388786ae99394" 518 | }, 519 | "dist": { 520 | "type": "zip", 521 | "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/66834d3e3566bb5798db7294619388786ae99394", 522 | "reference": "66834d3e3566bb5798db7294619388786ae99394", 523 | "shasum": "" 524 | }, 525 | "require": { 526 | "php": "^5.3 || ^7.0" 527 | }, 528 | "bin": [ 529 | "bin/jsonlint" 530 | ], 531 | "type": "library", 532 | "autoload": { 533 | "psr-4": { 534 | "Seld\\JsonLint\\": "src/Seld/JsonLint/" 535 | } 536 | }, 537 | "notification-url": "https://packagist.org/downloads/", 538 | "license": [ 539 | "MIT" 540 | ], 541 | "authors": [ 542 | { 543 | "name": "Jordi Boggiano", 544 | "email": "j.boggiano@seld.be", 545 | "homepage": "http://seld.be" 546 | } 547 | ], 548 | "description": "JSON Linter", 549 | "keywords": [ 550 | "json", 551 | "linter", 552 | "parser", 553 | "validator" 554 | ], 555 | "time": "2015-11-21 02:21:41" 556 | }, 557 | { 558 | "name": "silex/silex", 559 | "version": "v1.3.5", 560 | "source": { 561 | "type": "git", 562 | "url": "https://github.com/silexphp/Silex.git", 563 | "reference": "374c7e04040a6f781c90f7d746726a5daa78e783" 564 | }, 565 | "dist": { 566 | "type": "zip", 567 | "url": "https://api.github.com/repos/silexphp/Silex/zipball/374c7e04040a6f781c90f7d746726a5daa78e783", 568 | "reference": "374c7e04040a6f781c90f7d746726a5daa78e783", 569 | "shasum": "" 570 | }, 571 | "require": { 572 | "php": ">=5.3.9", 573 | "pimple/pimple": "~1.0", 574 | "symfony/event-dispatcher": "~2.3|3.0.*", 575 | "symfony/http-foundation": "~2.3|3.0.*", 576 | "symfony/http-kernel": "~2.3|3.0.*", 577 | "symfony/routing": "~2.3|3.0.*" 578 | }, 579 | "require-dev": { 580 | "doctrine/dbal": "~2.2", 581 | "monolog/monolog": "^1.4.1", 582 | "swiftmailer/swiftmailer": "~5", 583 | "symfony/browser-kit": "~2.3|3.0.*", 584 | "symfony/config": "~2.3|3.0.*", 585 | "symfony/css-selector": "~2.3|3.0.*", 586 | "symfony/debug": "~2.3|3.0.*", 587 | "symfony/dom-crawler": "~2.3|3.0.*", 588 | "symfony/finder": "~2.3|3.0.*", 589 | "symfony/form": "~2.3|3.0.*", 590 | "symfony/locale": "~2.3|3.0.*", 591 | "symfony/monolog-bridge": "~2.3|3.0.*", 592 | "symfony/options-resolver": "~2.3|3.0.*", 593 | "symfony/phpunit-bridge": "~2.7", 594 | "symfony/process": "~2.3|3.0.*", 595 | "symfony/security": "~2.3|3.0.*", 596 | "symfony/serializer": "~2.3|3.0.*", 597 | "symfony/translation": "~2.3|3.0.*", 598 | "symfony/twig-bridge": "~2.3|3.0.*", 599 | "symfony/validator": "~2.3|3.0.*", 600 | "twig/twig": "~1.8|~2.0" 601 | }, 602 | "type": "library", 603 | "extra": { 604 | "branch-alias": { 605 | "dev-master": "1.3.x-dev" 606 | } 607 | }, 608 | "autoload": { 609 | "psr-4": { 610 | "Silex\\": "src/Silex" 611 | } 612 | }, 613 | "notification-url": "https://packagist.org/downloads/", 614 | "license": [ 615 | "MIT" 616 | ], 617 | "authors": [ 618 | { 619 | "name": "Fabien Potencier", 620 | "email": "fabien@symfony.com" 621 | }, 622 | { 623 | "name": "Igor Wiedler", 624 | "email": "igor@wiedler.ch" 625 | } 626 | ], 627 | "description": "The PHP micro-framework based on the Symfony Components", 628 | "homepage": "http://silex.sensiolabs.org", 629 | "keywords": [ 630 | "microframework" 631 | ], 632 | "time": "2016-01-06 14:59:35" 633 | }, 634 | { 635 | "name": "symfony/debug", 636 | "version": "v3.0.1", 637 | "source": { 638 | "type": "git", 639 | "url": "https://github.com/symfony/debug.git", 640 | "reference": "73612266ac709769effdbfc0762e5b07cfd2ac2a" 641 | }, 642 | "dist": { 643 | "type": "zip", 644 | "url": "https://api.github.com/repos/symfony/debug/zipball/73612266ac709769effdbfc0762e5b07cfd2ac2a", 645 | "reference": "73612266ac709769effdbfc0762e5b07cfd2ac2a", 646 | "shasum": "" 647 | }, 648 | "require": { 649 | "php": ">=5.5.9", 650 | "psr/log": "~1.0" 651 | }, 652 | "conflict": { 653 | "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2" 654 | }, 655 | "require-dev": { 656 | "symfony/class-loader": "~2.8|~3.0", 657 | "symfony/http-kernel": "~2.8|~3.0" 658 | }, 659 | "type": "library", 660 | "extra": { 661 | "branch-alias": { 662 | "dev-master": "3.0-dev" 663 | } 664 | }, 665 | "autoload": { 666 | "psr-4": { 667 | "Symfony\\Component\\Debug\\": "" 668 | }, 669 | "exclude-from-classmap": [ 670 | "/Tests/" 671 | ] 672 | }, 673 | "notification-url": "https://packagist.org/downloads/", 674 | "license": [ 675 | "MIT" 676 | ], 677 | "authors": [ 678 | { 679 | "name": "Fabien Potencier", 680 | "email": "fabien@symfony.com" 681 | }, 682 | { 683 | "name": "Symfony Community", 684 | "homepage": "https://symfony.com/contributors" 685 | } 686 | ], 687 | "description": "Symfony Debug Component", 688 | "homepage": "https://symfony.com", 689 | "time": "2015-12-26 13:39:53" 690 | }, 691 | { 692 | "name": "symfony/event-dispatcher", 693 | "version": "v3.0.1", 694 | "source": { 695 | "type": "git", 696 | "url": "https://github.com/symfony/event-dispatcher.git", 697 | "reference": "d36355e026905fa5229e1ed7b4e9eda2e67adfcf" 698 | }, 699 | "dist": { 700 | "type": "zip", 701 | "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/d36355e026905fa5229e1ed7b4e9eda2e67adfcf", 702 | "reference": "d36355e026905fa5229e1ed7b4e9eda2e67adfcf", 703 | "shasum": "" 704 | }, 705 | "require": { 706 | "php": ">=5.5.9" 707 | }, 708 | "require-dev": { 709 | "psr/log": "~1.0", 710 | "symfony/config": "~2.8|~3.0", 711 | "symfony/dependency-injection": "~2.8|~3.0", 712 | "symfony/expression-language": "~2.8|~3.0", 713 | "symfony/stopwatch": "~2.8|~3.0" 714 | }, 715 | "suggest": { 716 | "symfony/dependency-injection": "", 717 | "symfony/http-kernel": "" 718 | }, 719 | "type": "library", 720 | "extra": { 721 | "branch-alias": { 722 | "dev-master": "3.0-dev" 723 | } 724 | }, 725 | "autoload": { 726 | "psr-4": { 727 | "Symfony\\Component\\EventDispatcher\\": "" 728 | }, 729 | "exclude-from-classmap": [ 730 | "/Tests/" 731 | ] 732 | }, 733 | "notification-url": "https://packagist.org/downloads/", 734 | "license": [ 735 | "MIT" 736 | ], 737 | "authors": [ 738 | { 739 | "name": "Fabien Potencier", 740 | "email": "fabien@symfony.com" 741 | }, 742 | { 743 | "name": "Symfony Community", 744 | "homepage": "https://symfony.com/contributors" 745 | } 746 | ], 747 | "description": "Symfony EventDispatcher Component", 748 | "homepage": "https://symfony.com", 749 | "time": "2015-10-30 23:35:59" 750 | }, 751 | { 752 | "name": "symfony/filesystem", 753 | "version": "v3.0.1", 754 | "source": { 755 | "type": "git", 756 | "url": "https://github.com/symfony/filesystem.git", 757 | "reference": "c2e59d11dccd135dc8f00ee97f34fe1de842e70c" 758 | }, 759 | "dist": { 760 | "type": "zip", 761 | "url": "https://api.github.com/repos/symfony/filesystem/zipball/c2e59d11dccd135dc8f00ee97f34fe1de842e70c", 762 | "reference": "c2e59d11dccd135dc8f00ee97f34fe1de842e70c", 763 | "shasum": "" 764 | }, 765 | "require": { 766 | "php": ">=5.5.9" 767 | }, 768 | "type": "library", 769 | "extra": { 770 | "branch-alias": { 771 | "dev-master": "3.0-dev" 772 | } 773 | }, 774 | "autoload": { 775 | "psr-4": { 776 | "Symfony\\Component\\Filesystem\\": "" 777 | }, 778 | "exclude-from-classmap": [ 779 | "/Tests/" 780 | ] 781 | }, 782 | "notification-url": "https://packagist.org/downloads/", 783 | "license": [ 784 | "MIT" 785 | ], 786 | "authors": [ 787 | { 788 | "name": "Fabien Potencier", 789 | "email": "fabien@symfony.com" 790 | }, 791 | { 792 | "name": "Symfony Community", 793 | "homepage": "https://symfony.com/contributors" 794 | } 795 | ], 796 | "description": "Symfony Filesystem Component", 797 | "homepage": "https://symfony.com", 798 | "time": "2015-12-22 10:39:06" 799 | }, 800 | { 801 | "name": "symfony/http-foundation", 802 | "version": "v3.0.1", 803 | "source": { 804 | "type": "git", 805 | "url": "https://github.com/symfony/http-foundation.git", 806 | "reference": "939c8c28a5b1e4ab7317bc30c1f9aa881c4b06b5" 807 | }, 808 | "dist": { 809 | "type": "zip", 810 | "url": "https://api.github.com/repos/symfony/http-foundation/zipball/939c8c28a5b1e4ab7317bc30c1f9aa881c4b06b5", 811 | "reference": "939c8c28a5b1e4ab7317bc30c1f9aa881c4b06b5", 812 | "shasum": "" 813 | }, 814 | "require": { 815 | "php": ">=5.5.9" 816 | }, 817 | "require-dev": { 818 | "symfony/expression-language": "~2.8|~3.0" 819 | }, 820 | "type": "library", 821 | "extra": { 822 | "branch-alias": { 823 | "dev-master": "3.0-dev" 824 | } 825 | }, 826 | "autoload": { 827 | "psr-4": { 828 | "Symfony\\Component\\HttpFoundation\\": "" 829 | }, 830 | "exclude-from-classmap": [ 831 | "/Tests/" 832 | ] 833 | }, 834 | "notification-url": "https://packagist.org/downloads/", 835 | "license": [ 836 | "MIT" 837 | ], 838 | "authors": [ 839 | { 840 | "name": "Fabien Potencier", 841 | "email": "fabien@symfony.com" 842 | }, 843 | { 844 | "name": "Symfony Community", 845 | "homepage": "https://symfony.com/contributors" 846 | } 847 | ], 848 | "description": "Symfony HttpFoundation Component", 849 | "homepage": "https://symfony.com", 850 | "time": "2015-12-18 15:43:53" 851 | }, 852 | { 853 | "name": "symfony/http-kernel", 854 | "version": "v3.0.1", 855 | "source": { 856 | "type": "git", 857 | "url": "https://github.com/symfony/http-kernel.git", 858 | "reference": "f7933e9f19e26e7baba7ec04735b466fedd3a6db" 859 | }, 860 | "dist": { 861 | "type": "zip", 862 | "url": "https://api.github.com/repos/symfony/http-kernel/zipball/f7933e9f19e26e7baba7ec04735b466fedd3a6db", 863 | "reference": "f7933e9f19e26e7baba7ec04735b466fedd3a6db", 864 | "shasum": "" 865 | }, 866 | "require": { 867 | "php": ">=5.5.9", 868 | "psr/log": "~1.0", 869 | "symfony/debug": "~2.8|~3.0", 870 | "symfony/event-dispatcher": "~2.8|~3.0", 871 | "symfony/http-foundation": "~2.8|~3.0" 872 | }, 873 | "conflict": { 874 | "symfony/config": "<2.8" 875 | }, 876 | "require-dev": { 877 | "symfony/browser-kit": "~2.8|~3.0", 878 | "symfony/class-loader": "~2.8|~3.0", 879 | "symfony/config": "~2.8|~3.0", 880 | "symfony/console": "~2.8|~3.0", 881 | "symfony/css-selector": "~2.8|~3.0", 882 | "symfony/dependency-injection": "~2.8|~3.0", 883 | "symfony/dom-crawler": "~2.8|~3.0", 884 | "symfony/expression-language": "~2.8|~3.0", 885 | "symfony/finder": "~2.8|~3.0", 886 | "symfony/process": "~2.8|~3.0", 887 | "symfony/routing": "~2.8|~3.0", 888 | "symfony/stopwatch": "~2.8|~3.0", 889 | "symfony/templating": "~2.8|~3.0", 890 | "symfony/translation": "~2.8|~3.0", 891 | "symfony/var-dumper": "~2.8|~3.0" 892 | }, 893 | "suggest": { 894 | "symfony/browser-kit": "", 895 | "symfony/class-loader": "", 896 | "symfony/config": "", 897 | "symfony/console": "", 898 | "symfony/dependency-injection": "", 899 | "symfony/finder": "", 900 | "symfony/var-dumper": "" 901 | }, 902 | "type": "library", 903 | "extra": { 904 | "branch-alias": { 905 | "dev-master": "3.0-dev" 906 | } 907 | }, 908 | "autoload": { 909 | "psr-4": { 910 | "Symfony\\Component\\HttpKernel\\": "" 911 | }, 912 | "exclude-from-classmap": [ 913 | "/Tests/" 914 | ] 915 | }, 916 | "notification-url": "https://packagist.org/downloads/", 917 | "license": [ 918 | "MIT" 919 | ], 920 | "authors": [ 921 | { 922 | "name": "Fabien Potencier", 923 | "email": "fabien@symfony.com" 924 | }, 925 | { 926 | "name": "Symfony Community", 927 | "homepage": "https://symfony.com/contributors" 928 | } 929 | ], 930 | "description": "Symfony HttpKernel Component", 931 | "homepage": "https://symfony.com", 932 | "time": "2015-12-26 16:46:13" 933 | }, 934 | { 935 | "name": "symfony/process", 936 | "version": "v3.0.1", 937 | "source": { 938 | "type": "git", 939 | "url": "https://github.com/symfony/process.git", 940 | "reference": "f4794f1d00f0746621be3020ffbd8c5e0b217ee3" 941 | }, 942 | "dist": { 943 | "type": "zip", 944 | "url": "https://api.github.com/repos/symfony/process/zipball/f4794f1d00f0746621be3020ffbd8c5e0b217ee3", 945 | "reference": "f4794f1d00f0746621be3020ffbd8c5e0b217ee3", 946 | "shasum": "" 947 | }, 948 | "require": { 949 | "php": ">=5.5.9" 950 | }, 951 | "type": "library", 952 | "extra": { 953 | "branch-alias": { 954 | "dev-master": "3.0-dev" 955 | } 956 | }, 957 | "autoload": { 958 | "psr-4": { 959 | "Symfony\\Component\\Process\\": "" 960 | }, 961 | "exclude-from-classmap": [ 962 | "/Tests/" 963 | ] 964 | }, 965 | "notification-url": "https://packagist.org/downloads/", 966 | "license": [ 967 | "MIT" 968 | ], 969 | "authors": [ 970 | { 971 | "name": "Fabien Potencier", 972 | "email": "fabien@symfony.com" 973 | }, 974 | { 975 | "name": "Symfony Community", 976 | "homepage": "https://symfony.com/contributors" 977 | } 978 | ], 979 | "description": "Symfony Process Component", 980 | "homepage": "https://symfony.com", 981 | "time": "2015-12-23 11:04:02" 982 | }, 983 | { 984 | "name": "symfony/routing", 985 | "version": "v3.0.1", 986 | "source": { 987 | "type": "git", 988 | "url": "https://github.com/symfony/routing.git", 989 | "reference": "3b1bac52f42cb0f54df1a2dbabd55a1d214e2a59" 990 | }, 991 | "dist": { 992 | "type": "zip", 993 | "url": "https://api.github.com/repos/symfony/routing/zipball/3b1bac52f42cb0f54df1a2dbabd55a1d214e2a59", 994 | "reference": "3b1bac52f42cb0f54df1a2dbabd55a1d214e2a59", 995 | "shasum": "" 996 | }, 997 | "require": { 998 | "php": ">=5.5.9" 999 | }, 1000 | "conflict": { 1001 | "symfony/config": "<2.8" 1002 | }, 1003 | "require-dev": { 1004 | "doctrine/annotations": "~1.0", 1005 | "doctrine/common": "~2.2", 1006 | "psr/log": "~1.0", 1007 | "symfony/config": "~2.8|~3.0", 1008 | "symfony/expression-language": "~2.8|~3.0", 1009 | "symfony/http-foundation": "~2.8|~3.0", 1010 | "symfony/yaml": "~2.8|~3.0" 1011 | }, 1012 | "suggest": { 1013 | "doctrine/annotations": "For using the annotation loader", 1014 | "symfony/config": "For using the all-in-one router or any loader", 1015 | "symfony/dependency-injection": "For loading routes from a service", 1016 | "symfony/expression-language": "For using expression matching", 1017 | "symfony/yaml": "For using the YAML loader" 1018 | }, 1019 | "type": "library", 1020 | "extra": { 1021 | "branch-alias": { 1022 | "dev-master": "3.0-dev" 1023 | } 1024 | }, 1025 | "autoload": { 1026 | "psr-4": { 1027 | "Symfony\\Component\\Routing\\": "" 1028 | }, 1029 | "exclude-from-classmap": [ 1030 | "/Tests/" 1031 | ] 1032 | }, 1033 | "notification-url": "https://packagist.org/downloads/", 1034 | "license": [ 1035 | "MIT" 1036 | ], 1037 | "authors": [ 1038 | { 1039 | "name": "Fabien Potencier", 1040 | "email": "fabien@symfony.com" 1041 | }, 1042 | { 1043 | "name": "Symfony Community", 1044 | "homepage": "https://symfony.com/contributors" 1045 | } 1046 | ], 1047 | "description": "Symfony Routing Component", 1048 | "homepage": "https://symfony.com", 1049 | "keywords": [ 1050 | "router", 1051 | "routing", 1052 | "uri", 1053 | "url" 1054 | ], 1055 | "time": "2015-12-23 08:00:11" 1056 | }, 1057 | { 1058 | "name": "twig/twig", 1059 | "version": "v1.23.3", 1060 | "source": { 1061 | "type": "git", 1062 | "url": "https://github.com/twigphp/Twig.git", 1063 | "reference": "ae53fc2c312fdee63773b75cb570304f85388b08" 1064 | }, 1065 | "dist": { 1066 | "type": "zip", 1067 | "url": "https://api.github.com/repos/twigphp/Twig/zipball/ae53fc2c312fdee63773b75cb570304f85388b08", 1068 | "reference": "ae53fc2c312fdee63773b75cb570304f85388b08", 1069 | "shasum": "" 1070 | }, 1071 | "require": { 1072 | "php": ">=5.2.7" 1073 | }, 1074 | "require-dev": { 1075 | "symfony/debug": "~2.7", 1076 | "symfony/phpunit-bridge": "~2.7" 1077 | }, 1078 | "type": "library", 1079 | "extra": { 1080 | "branch-alias": { 1081 | "dev-master": "1.23-dev" 1082 | } 1083 | }, 1084 | "autoload": { 1085 | "psr-0": { 1086 | "Twig_": "lib/" 1087 | } 1088 | }, 1089 | "notification-url": "https://packagist.org/downloads/", 1090 | "license": [ 1091 | "BSD-3-Clause" 1092 | ], 1093 | "authors": [ 1094 | { 1095 | "name": "Fabien Potencier", 1096 | "email": "fabien@symfony.com", 1097 | "homepage": "http://fabien.potencier.org", 1098 | "role": "Lead Developer" 1099 | }, 1100 | { 1101 | "name": "Armin Ronacher", 1102 | "email": "armin.ronacher@active-4.com", 1103 | "role": "Project Founder" 1104 | }, 1105 | { 1106 | "name": "Twig Team", 1107 | "homepage": "http://twig.sensiolabs.org/contributors", 1108 | "role": "Contributors" 1109 | } 1110 | ], 1111 | "description": "Twig, the flexible, fast, and secure template language for PHP", 1112 | "homepage": "http://twig.sensiolabs.org", 1113 | "keywords": [ 1114 | "templating" 1115 | ], 1116 | "time": "2016-01-11 14:02:19" 1117 | }, 1118 | { 1119 | "name": "webmozart/assert", 1120 | "version": "1.0.2", 1121 | "source": { 1122 | "type": "git", 1123 | "url": "https://github.com/webmozart/assert.git", 1124 | "reference": "30eed06dd6bc88410a4ff7f77b6d22f3ce13dbde" 1125 | }, 1126 | "dist": { 1127 | "type": "zip", 1128 | "url": "https://api.github.com/repos/webmozart/assert/zipball/30eed06dd6bc88410a4ff7f77b6d22f3ce13dbde", 1129 | "reference": "30eed06dd6bc88410a4ff7f77b6d22f3ce13dbde", 1130 | "shasum": "" 1131 | }, 1132 | "require": { 1133 | "php": ">=5.3.3" 1134 | }, 1135 | "require-dev": { 1136 | "phpunit/phpunit": "^4.6" 1137 | }, 1138 | "type": "library", 1139 | "extra": { 1140 | "branch-alias": { 1141 | "dev-master": "1.0-dev" 1142 | } 1143 | }, 1144 | "autoload": { 1145 | "psr-4": { 1146 | "Webmozart\\Assert\\": "src/" 1147 | } 1148 | }, 1149 | "notification-url": "https://packagist.org/downloads/", 1150 | "license": [ 1151 | "MIT" 1152 | ], 1153 | "authors": [ 1154 | { 1155 | "name": "Bernhard Schussek", 1156 | "email": "bschussek@gmail.com" 1157 | } 1158 | ], 1159 | "description": "Assertions to validate method input/output with nice error messages.", 1160 | "keywords": [ 1161 | "assert", 1162 | "check", 1163 | "validate" 1164 | ], 1165 | "time": "2015-08-24 13:29:44" 1166 | }, 1167 | { 1168 | "name": "webmozart/expression", 1169 | "version": "1.0.0", 1170 | "source": { 1171 | "type": "git", 1172 | "url": "https://github.com/webmozart/expression.git", 1173 | "reference": "35c222fc49533894228e1240cc844ae91d6a9ef2" 1174 | }, 1175 | "dist": { 1176 | "type": "zip", 1177 | "url": "https://api.github.com/repos/webmozart/expression/zipball/35c222fc49533894228e1240cc844ae91d6a9ef2", 1178 | "reference": "35c222fc49533894228e1240cc844ae91d6a9ef2", 1179 | "shasum": "" 1180 | }, 1181 | "require": { 1182 | "php": ">=5.3.9" 1183 | }, 1184 | "require-dev": { 1185 | "phpunit/phpunit": "^4.6", 1186 | "sebastian/version": "^1.0.1" 1187 | }, 1188 | "type": "library", 1189 | "extra": { 1190 | "branch-alias": { 1191 | "dev-master": "1.0-dev" 1192 | } 1193 | }, 1194 | "autoload": { 1195 | "psr-4": { 1196 | "Webmozart\\Expression\\": "src/" 1197 | } 1198 | }, 1199 | "notification-url": "https://packagist.org/downloads/", 1200 | "license": [ 1201 | "MIT" 1202 | ], 1203 | "authors": [ 1204 | { 1205 | "name": "Bernhard Schussek", 1206 | "email": "bschussek@gmail.com" 1207 | } 1208 | ], 1209 | "description": "Formulate expressions and search criteria using PHP objects.", 1210 | "keywords": [ 1211 | "criteria", 1212 | "expression", 1213 | "filter", 1214 | "formula" 1215 | ], 1216 | "time": "2015-12-17 10:43:13" 1217 | }, 1218 | { 1219 | "name": "webmozart/glob", 1220 | "version": "4.1.0", 1221 | "source": { 1222 | "type": "git", 1223 | "url": "https://github.com/webmozart/glob.git", 1224 | "reference": "3cbf63d4973cf9d780b93d2da8eec7e4a9e63bbe" 1225 | }, 1226 | "dist": { 1227 | "type": "zip", 1228 | "url": "https://api.github.com/repos/webmozart/glob/zipball/3cbf63d4973cf9d780b93d2da8eec7e4a9e63bbe", 1229 | "reference": "3cbf63d4973cf9d780b93d2da8eec7e4a9e63bbe", 1230 | "shasum": "" 1231 | }, 1232 | "require": { 1233 | "php": "^5.3.3|^7.0", 1234 | "webmozart/path-util": "^2.2" 1235 | }, 1236 | "require-dev": { 1237 | "phpunit/phpunit": "^4.6", 1238 | "sebastian/version": "^1.0.1", 1239 | "symfony/filesystem": "^2.5" 1240 | }, 1241 | "type": "library", 1242 | "extra": { 1243 | "branch-alias": { 1244 | "dev-master": "4.1-dev" 1245 | } 1246 | }, 1247 | "autoload": { 1248 | "psr-4": { 1249 | "Webmozart\\Glob\\": "src/" 1250 | } 1251 | }, 1252 | "notification-url": "https://packagist.org/downloads/", 1253 | "license": [ 1254 | "MIT" 1255 | ], 1256 | "authors": [ 1257 | { 1258 | "name": "Bernhard Schussek", 1259 | "email": "bschussek@gmail.com" 1260 | } 1261 | ], 1262 | "description": "A PHP implementation of Ant's glob.", 1263 | "time": "2015-12-29 11:14:33" 1264 | }, 1265 | { 1266 | "name": "webmozart/json", 1267 | "version": "1.2.2", 1268 | "source": { 1269 | "type": "git", 1270 | "url": "https://github.com/webmozart/json.git", 1271 | "reference": "a1fb3da904b8364e3db47eed68f76bfb6cd0031a" 1272 | }, 1273 | "dist": { 1274 | "type": "zip", 1275 | "url": "https://api.github.com/repos/webmozart/json/zipball/a1fb3da904b8364e3db47eed68f76bfb6cd0031a", 1276 | "reference": "a1fb3da904b8364e3db47eed68f76bfb6cd0031a", 1277 | "shasum": "" 1278 | }, 1279 | "require": { 1280 | "justinrainbow/json-schema": "^1.6", 1281 | "php": "^5.3.3|^7.0", 1282 | "seld/jsonlint": "^1.0", 1283 | "webmozart/path-util": "^2.3" 1284 | }, 1285 | "require-dev": { 1286 | "phpunit/phpunit": "^4.6", 1287 | "sebastian/version": "^1.0.1", 1288 | "symfony/filesystem": "^2.5" 1289 | }, 1290 | "type": "library", 1291 | "extra": { 1292 | "branch-alias": { 1293 | "dev-master": "1.2-dev" 1294 | } 1295 | }, 1296 | "autoload": { 1297 | "psr-4": { 1298 | "Webmozart\\Json\\": "src/" 1299 | } 1300 | }, 1301 | "notification-url": "https://packagist.org/downloads/", 1302 | "license": [ 1303 | "MIT" 1304 | ], 1305 | "authors": [ 1306 | { 1307 | "name": "Bernhard Schussek", 1308 | "email": "bschussek@gmail.com" 1309 | } 1310 | ], 1311 | "description": "A robust JSON decoder/encoder with support for schema validation.", 1312 | "time": "2016-01-14 12:11:46" 1313 | }, 1314 | { 1315 | "name": "webmozart/path-util", 1316 | "version": "2.3.0", 1317 | "source": { 1318 | "type": "git", 1319 | "url": "https://github.com/webmozart/path-util.git", 1320 | "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725" 1321 | }, 1322 | "dist": { 1323 | "type": "zip", 1324 | "url": "https://api.github.com/repos/webmozart/path-util/zipball/d939f7edc24c9a1bb9c0dee5cb05d8e859490725", 1325 | "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725", 1326 | "shasum": "" 1327 | }, 1328 | "require": { 1329 | "php": ">=5.3.3", 1330 | "webmozart/assert": "~1.0" 1331 | }, 1332 | "require-dev": { 1333 | "phpunit/phpunit": "^4.6", 1334 | "sebastian/version": "^1.0.1" 1335 | }, 1336 | "type": "library", 1337 | "extra": { 1338 | "branch-alias": { 1339 | "dev-master": "2.3-dev" 1340 | } 1341 | }, 1342 | "autoload": { 1343 | "psr-4": { 1344 | "Webmozart\\PathUtil\\": "src/" 1345 | } 1346 | }, 1347 | "notification-url": "https://packagist.org/downloads/", 1348 | "license": [ 1349 | "MIT" 1350 | ], 1351 | "authors": [ 1352 | { 1353 | "name": "Bernhard Schussek", 1354 | "email": "bschussek@gmail.com" 1355 | } 1356 | ], 1357 | "description": "A robust cross-platform utility for normalizing, comparing and modifying file paths.", 1358 | "time": "2015-12-17 08:42:14" 1359 | } 1360 | ], 1361 | "packages-dev": [], 1362 | "aliases": [], 1363 | "minimum-stability": "stable", 1364 | "stability-flags": { 1365 | "puli/composer-plugin": 10, 1366 | "puli/repository": 10, 1367 | "puli/discovery": 10, 1368 | "puli/url-generator": 10, 1369 | "puli/twig-extension": 10 1370 | }, 1371 | "prefer-stable": false, 1372 | "prefer-lowest": false, 1373 | "platform": [], 1374 | "platform-dev": [] 1375 | } 1376 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "puli-demo-application", 3 | "devDependencies": { 4 | "bootstrap-sass": "^3.3.4", 5 | "gulp": "^3.8.11", 6 | "gulp-concat": "^2.5.2", 7 | "gulp-sass": "^1.3.3", 8 | "jquery": "^2.1.3" 9 | }, 10 | "private": true 11 | } 12 | -------------------------------------------------------------------------------- /puli.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "1.0", 3 | "name": "puli/demo-application", 4 | "path-mappings": { 5 | "/app": "res" 6 | }, 7 | "bindings": { 8 | "c96beab7-fe49-4447-93d7-cfabc97cfa52": { 9 | "_class": "Puli\\Discovery\\Binding\\ResourceBinding", 10 | "query": "/app/public{,/**/*}", 11 | "type": "puli/public-resource", 12 | "parameters": { 13 | "path": "/", 14 | "server": "localhost" 15 | } 16 | } 17 | }, 18 | "extra": { 19 | "servers": { 20 | "localhost": { 21 | "installer": "symlink", 22 | "document-root": "web" 23 | } 24 | } 25 | }, 26 | "packages": { 27 | "justinrainbow/json-schema": { 28 | "install-path": "vendor/justinrainbow/json-schema", 29 | "installer": "composer" 30 | }, 31 | "pimple/pimple": { 32 | "install-path": "vendor/pimple/pimple", 33 | "installer": "composer" 34 | }, 35 | "psr/log": { 36 | "install-path": "vendor/psr/log", 37 | "installer": "composer" 38 | }, 39 | "puli/composer-plugin": { 40 | "install-path": "vendor/puli/composer-plugin", 41 | "installer": "composer" 42 | }, 43 | "puli/discovery": { 44 | "install-path": "vendor/puli/discovery", 45 | "installer": "composer" 46 | }, 47 | "puli/repository": { 48 | "install-path": "vendor/puli/repository", 49 | "installer": "composer" 50 | }, 51 | "puli/twig-extension": { 52 | "install-path": "vendor/puli/twig-extension", 53 | "installer": "composer" 54 | }, 55 | "puli/url-generator": { 56 | "install-path": "vendor/puli/url-generator", 57 | "installer": "composer" 58 | }, 59 | "ramsey/uuid": { 60 | "install-path": "vendor/ramsey/uuid", 61 | "installer": "composer" 62 | }, 63 | "seld/jsonlint": { 64 | "install-path": "vendor/seld/jsonlint", 65 | "installer": "composer" 66 | }, 67 | "silex/silex": { 68 | "install-path": "vendor/silex/silex", 69 | "installer": "composer" 70 | }, 71 | "symfony/debug": { 72 | "install-path": "vendor/symfony/debug", 73 | "installer": "composer" 74 | }, 75 | "symfony/event-dispatcher": { 76 | "install-path": "vendor/symfony/event-dispatcher", 77 | "installer": "composer" 78 | }, 79 | "symfony/filesystem": { 80 | "install-path": "vendor/symfony/filesystem", 81 | "installer": "composer" 82 | }, 83 | "symfony/http-foundation": { 84 | "install-path": "vendor/symfony/http-foundation", 85 | "installer": "composer" 86 | }, 87 | "symfony/http-kernel": { 88 | "install-path": "vendor/symfony/http-kernel", 89 | "installer": "composer" 90 | }, 91 | "symfony/process": { 92 | "install-path": "vendor/symfony/process", 93 | "installer": "composer" 94 | }, 95 | "symfony/routing": { 96 | "install-path": "vendor/symfony/routing", 97 | "installer": "composer" 98 | }, 99 | "twig/twig": { 100 | "install-path": "vendor/twig/twig", 101 | "installer": "composer" 102 | }, 103 | "webmozart/assert": { 104 | "install-path": "vendor/webmozart/assert", 105 | "installer": "composer" 106 | }, 107 | "webmozart/expression": { 108 | "install-path": "vendor/webmozart/expression", 109 | "installer": "composer" 110 | }, 111 | "webmozart/glob": { 112 | "install-path": "vendor/webmozart/glob", 113 | "installer": "composer" 114 | }, 115 | "webmozart/json": { 116 | "install-path": "vendor/webmozart/json", 117 | "installer": "composer" 118 | }, 119 | "webmozart/path-util": { 120 | "install-path": "vendor/webmozart/path-util", 121 | "installer": "composer" 122 | } 123 | } 124 | } 125 | -------------------------------------------------------------------------------- /res/js/script.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/puli/demo-application/683610f92d3dcfcdd7c48b6c9e57bfcd234ca162/res/js/script.js -------------------------------------------------------------------------------- /res/public/images/puli-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/puli/demo-application/683610f92d3dcfcdd7c48b6c9e57bfcd234ca162/res/public/images/puli-logo.png -------------------------------------------------------------------------------- /res/scss/style.scss: -------------------------------------------------------------------------------- 1 | /* Put your SASS definitions here */ 2 | -------------------------------------------------------------------------------- /res/views/index.html.twig: -------------------------------------------------------------------------------- 1 | {% extends 'layout.html.twig' %} 2 | 3 | {% block content %} 4 | 5 | 6 |

Welcome to the Puli Demo Application!

7 | 8 |

This application demonstrates the use of Puli, 9 | Silex and 10 | Gulp JS in a web application.

11 | {% endblock %} 12 | -------------------------------------------------------------------------------- /res/views/layout.html.twig: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Puli Demo Application 8 | 9 | 10 | 11 | {% block stylesheets %}{% endblock %} 12 | 13 | 17 | 18 | 19 | 20 | {% block content %}{% endblock %} 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | {% block javascripts %}{% endblock %} 30 | 31 | 32 | -------------------------------------------------------------------------------- /src/DemoApplication.php: -------------------------------------------------------------------------------- 1 | register(new TwigServiceProvider()); 21 | 22 | $this['puli.factory'] = $this->share(function () { 23 | $factoryClass = PULI_FACTORY_CLASS; 24 | 25 | return new $factoryClass(); 26 | }); 27 | 28 | $this['puli.repository'] = $this->share(function (Application $app) { 29 | return $app['puli.factory']->createRepository(); 30 | }); 31 | 32 | $this['puli.discovery'] = $this->share(function (Application $app) { 33 | return $app['puli.factory']->createDiscovery($app['puli.repository']); 34 | }); 35 | 36 | $this['puli.asset_url_generator'] = $this->share(function (Application $app) { 37 | return $app['puli.factory']->createUrlGenerator($app['puli.discovery']); 38 | }); 39 | 40 | /** @var Closure $twig */ 41 | $twig = $this->raw('twig'); 42 | 43 | $this['twig.options'] = array( 44 | 'cache' => realpath(__DIR__.'/..').'/var/cache/twig', 45 | ); 46 | 47 | $this['twig.loader'] = $this->share(function (Application $app) { 48 | return new PuliTemplateLoader($app['puli.repository']); 49 | }); 50 | 51 | $this['twig'] = $this->share(function (Application $app) use ($twig) { 52 | $twig = $twig($app); 53 | 54 | /** @var Twig_Environment $twig */ 55 | $twig->addExtension(new PuliExtension($app['puli.repository'], $app['puli.asset_url_generator'])); 56 | 57 | return $twig; 58 | }); 59 | 60 | $this->get('/', function () use ($app) { 61 | return $app['twig']->render('/app/views/index.html.twig'); 62 | }); 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /var/cache/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/puli/demo-application/683610f92d3dcfcdd7c48b6c9e57bfcd234ca162/var/cache/.gitkeep -------------------------------------------------------------------------------- /var/logs/.gitkeep: -------------------------------------------------------------------------------- 1 | .htaccess 2 | -------------------------------------------------------------------------------- /web/.htaccess: -------------------------------------------------------------------------------- 1 | # Use the front controller as index file. It serves as fallback solution when 2 | # every other rewrite/redirect fails (e.g. in an aliased environment without 3 | # mod_rewrite). Additionally, this reduces the matching process for the 4 | # startpage (path "/") because otherwise Apache will apply the rewritting rules 5 | # to each configured DirectoryIndex file (e.g. index.php, index.html, index.pl). 6 | DirectoryIndex app.php 7 | 8 | 9 | RewriteEngine On 10 | 11 | # Determine the RewriteBase automatically and set it as environment variable. 12 | # If you are using Apache aliases to do mass virtual hosting or installed the 13 | # project in a subdirectory, the base path will be prepended to allow proper 14 | # resolution of the app.php file and to redirect to the correct URI. It will 15 | # work in environments without path prefix as well, providing a safe, one-size 16 | # fits all solution. But as you do not need it in this case, you can comment 17 | # the following 2 lines to eliminate the overhead. 18 | RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$ 19 | RewriteRule ^(.*) - [E=BASE:%1] 20 | 21 | # Redirect to URI without front controller to prevent duplicate content 22 | # (with and without `/app.php`). Only do this redirect on the initial 23 | # rewrite by Apache and not on subsequent cycles. Otherwise we would get an 24 | # endless redirect loop (request -> rewrite to front controller -> 25 | # redirect -> request -> ...). 26 | # So in case you get a "too many redirects" error or you always get redirected 27 | # to the startpage because your Apache does not expose the REDIRECT_STATUS 28 | # environment variable, you have 2 choices: 29 | # - disable this feature by commenting the following 2 lines or 30 | # - use Apache >= 2.3.9 and replace all L flags by END flags and remove the 31 | # following RewriteCond (best solution) 32 | RewriteCond %{ENV:REDIRECT_STATUS} ^$ 33 | RewriteRule ^app\.php(/(.*)|$) %{ENV:BASE}/$2 [R=301,L] 34 | 35 | # If the requested filename exists, simply serve it. 36 | # We only want to let Apache serve files and not directories. 37 | RewriteCond %{REQUEST_FILENAME} -f 38 | RewriteRule .? - [L] 39 | 40 | # Rewrite all other queries to the front controller. 41 | RewriteRule .? %{ENV:BASE}/app.php [L] 42 | 43 | 44 | 45 | 46 | # When mod_rewrite is not available, we instruct a temporary redirect of 47 | # the startpage to the front controller explicitly so that the website 48 | # and the generated links can still be used. 49 | RedirectMatch 302 ^/$ /app.php/ 50 | # RedirectTemp cannot be used instead 51 | 52 | 53 | -------------------------------------------------------------------------------- /web/app.php: -------------------------------------------------------------------------------- 1 | run(); 9 | -------------------------------------------------------------------------------- /web/app_dev.php: -------------------------------------------------------------------------------- 1 | run(); 10 | --------------------------------------------------------------------------------