icecave / slate
A template engine for filesystem structures.
Installs: 648
Dependents: 0
Suggesters: 0
Security: 0
Stars: 15
Watchers: 2
Forks: 2
Open Issues: 0
pkg:composer/icecave/slate
Requires
- php: >=5.3
 - ext-mbstring: *
 - ext-zip: *
 - doctrine/inflector: ~1
 - eloquent/asplode: ~2
 - icecave/collections: ~1
 - icecave/isolator: ~2
 - justinrainbow/json-schema: ~1
 - symfony/console: ~2
 - symfony/yaml: ~2
 
Requires (Dev)
- eloquent/liberator: ~1
 - icecave/archer: ~1
 
This package is not auto-updated.
Last update: 2019-05-28 03:19:56 UTC
README
Slate is a utility for creating directory and file structures from templates.
- Download executable PHAR
 - Install via Composer package icecave/slate
 
Slate was originally conceived to simplify and expedite the process of creating new repositories on GitHub, but can be used in any situation where a filesystem structure must be created from a template, such as user home directories, placeholder websites, filesystem based test fixtures, etc.
Prior to version 0.4.0 Slate was named Chassis.
Template format
A template is simply a collection of files and directories structured in the desired way, similar to /etc/skel on Unix
systems. File and directory names may contain variables that will be substituted for other values when the template is
cloned.
Variables
Variables are expressed as a variable name enclosed in braces, eg: {foo}. Variable names are case-sensitive and may
contain letters, digits and the hyphen (-) character. Variables names must begin with a letter.
Variables can be escaped by prefixing the variable name with a backslash, eg: {\foo}. This prevents Slate from
substituing the variable value and results in the output {foo}.
Slate can also substitute variable values inside text files. Any file with a .slate extension is passed through
the template engine and the .slate extension is removed.
Variable transforms
Variable values can be modified by using a transform. A transform is specified using a pipe character (|) and transform
name after the variable name. For example, {foo|lowercase} will convert the value of the foo variable to lower case in
the output.
The following transforms are available:
- base64-decode
 - base64-encode
 - camelcase
 - hex-decode
 - hex-encode
 - html-decode
 - html-encode
 - json-decode
 - json-encode
 - lowercase
 - lowercase-first
 - md5
 - newline-to-br
 - pluralize
 - rot13
 - sha1
 - singularize
 - snakecase
 - studlycaps
 - trim
 - trim-left
 - trim-right
 - uppercase
 - uppercase-first
 - url-decode
 - url-encode
 - yaml-decode
 - yaml-encode
 
Example templates
The Icecave Studios PHP template is a real-world example of a Slate template that we use when creating new PHP projects.
Usage
To create a filesystem structure from a template, use the clone command.
The following command clones from a template located in /path/to/template and writes the output to /path/to/output
with the variable {foo} substituted with bar.
slate clone --define foo=bar --path /path/to/template /path/to/output
Slate will prompt for undefined variable values it requires, unless the --no-interaction option is used, in which
case missing variable values will result in an error.
Online templates
Slate provides a set of online templates at https://github.com/IcecaveStudios/slate-templates. To use one of these templates pass the
--template option to the clone command (instead of --path).
The following command clones the Icecave Studios PHP template
to the /path/to/output folder.
slate clone --template php-icecave /path/to/output
Contact us
- Follow @IcecaveStudios on Twitter
 - Visit the Icecave Studios website
 - Join 
#icecaveon irc.freenode.net