icanhazstring / tempa-php
Template file parsing library
Installs: 13 778
Dependents: 1
Suggesters: 0
Security: 0
Stars: 2
Watchers: 1
Forks: 2
Open Issues: 3
Requires
- php: ^8.1
- symfony/console: ^5.4|^6.0
Requires (Dev)
- adlawson/vfs: ^0.12.1
- phpunit/phpunit: ^9.6.3
- squizlabs/php_codesniffer: ^3.7.1
README
What for?
You all came across some *.dist
or *.skel
files of some sort. This library can be used to replace every existing substitute in those files as well as simply list them.
Install
To install this library simply use composer.
$ composer require icanhazstring/tempa-php
After you have done this you need to create a tempa.json
file inside you project. This file holds some basic information about the template files.
Here is an example
{ "fileExtensions": ["dist", "skel"], "prefix": "{$", "suffix": "}" }
Usage
Scan
You can scan a directory or single file using the scan command.
$ vendor/bin/tempa file:scan <dir> [<config>]
You can deliver every other config you want. By default the script will take the tempa.json
from the location you executed the script.
$ vendor/bin/tempa file:scan test/Demo $ vendor/bin/tempa file:scan test/Demo test/Demo/tempa.json Scanning for template files in: /home/icanhazstring/tempa-php/test/Demo ======================================================================= 2/2 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100% /home/ando/tempa-php/test/Demo/Sub/test.php.dist ------------------------------------------------ Line 3 : 'database' => '{$database}', Line 4 : 'username' => '{$user}' /home/ando/tempa-php/test/Demo/test.php.dist -------------------------------------------- Line 3 : 'placeholder' => '{$superAwesome}'
Substitute
To replace stuff run the following:
$ vendor/bin/tempa file:substitute [-f|--mapfile [MAPFILE]] [--] <dir> [<config>] [<map>]...
$ vendor/bin/tempa file:substitute test/Demo/
$ vendor/bin/tempa file:substitute test/Demo/ --mapfile=test/Demo/maps/map.[json|php]
$ vendor/bin/tempa file:substitute test/Demo/ test/Demo/tempa.json database=localhost user=icanhazstring superAwesome=mega
Processing template files in: /home/icanhazstring/tempa-php/test/Demo
=====================================================================
2/2 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Interactive
You can replace every with an interactive mode:
$ vendor/bin/tempa file:interactive test/Demo $ vendor/bin/tempa file:interactive test/Demo test/Demo/tempa.json Interactive substitution for template files in: /home/icanhazstring/tempa-php/test/Demo ======================================================================================= Found 3 substitutes ------------------- database: > ...