ignis - File README.md
ignis
A Static Website Building Program
[GIT] git clone git://vigrey.com/git/ignis
README.md - (6972 Bytes)
# ignis
**_ignis is created by Vi Grey (https://vigrey.com) <vi@vigrey.com> and is licensed under the BSD 2-Clause License. Read LICENSE for more license text._**
#### Platforms:
- BSD
- GNU/Linux
- OS X
#### Dependencies:
- Python >= 3.0
#### Install:
$ sudo ./INSTALL.sh
#### UNINSTALL:
$ sudo ./UNINSTALL.sh
#### Usage:
$ ignis -h
Usage: ignis [ OPTIONS ]... [ -o <path="./__website__"> ] [ <input_path="./"> ]
Options:
-h, --help Print Help (this message) and exit
--include-extensions Include .html and .htm extensions in @FILEPATH
--include-htaccess Include .htaccess to match ignis server
-L, --LAN Open test server up to local network
-M, --mock Run a mock website build
-o, --output <path> Path for finished website (path=./__website__)
-P, --port <port> Port for finished website (port=9999)
-T, --test Run test web server after build
-V, --verbose Print verbose messages while building
-v, --version Print version information and exit
Examples:
ignis -o path/for/website path/to/files
ignis --verbose -o example-site
ignis -V -T -L -o example-site
ignis -VTL
ignis -VT --include-extensions
ignis -TL --include-htaccess --include-extensions
ignis --port 9090 -VTL
ignis -MV
#### For Loops:
Handle *`content`* for every case in which a page's header has a *`variable`* that is *`value`* and then sort the cases by *`sort_variable`*. If you place a negative symbol (-) in front of {sort_variable}, it will sort in reverse. *`sort_variable`* will be sorted by its placement in the Unicode standard.
[!- for {variable} is "value" by {sort_variable} -!]
content
[!- endfor -!]
Examples:
<!-- Sort products by price (Low to High) -->
[!- for {type} is "product" by {price} -!]
[!- forprint {title} -!]
<br><br>
[!- forprint {price} -!]
[!- endfor -!]
<!-- Sort products by price (High to Low) -->
[!- for {type} is "product" by -{price} -!]
[!- forprint {title} -!]
<br><br>
[!- forprint {price} -!]
[!- endfor -!]
#### If Statements:
Only handle *`content`* if the value of *`variable`* is *`value`* for the header the page this 'if' statement is on. The word **not** can be used instead of **is** to see check if the value of *`variable`* is not *`value`*. This differs from 'forif' commands because the value of *`variable`* is only taken from the header of the file currently being handled, not from any other file.
[!- if {variable} is "value" -!]
content
[!- endif -!]
Examples:
<!-- Check if the value of type is product -->
[!- if {type} is "product" -!]
This is a product and it costs:
[!- print {price} -!]
[!- endif -!]
<!-- Check if the value of type is not product -->
[!- if {type} not "product" -!]
This is not a product
[!- endif -!]
#### Forif Statements:
Only handle *`content`* if the value of *`variable`* is *`value`* from the header of the current iteration of a 'for' loop. The word **not** can be used instead of **is** to see check if the value of *`variable`* is not *`value`*. This differs from 'if' statements because the value of *`variable`* is not taken from the header of the file currently being handled.
[!- forif {variable} is "value -!]
content
[!- endforif -!]
Examples:
[!- for {date} is "2015-12-31" by {title} -!]
<!-- Check if the value of type in the current iteration is product -->
[!- forif {type} is "product" -!]
This is a product and it costs:
[!- print {price} -!]
[!- endforif -!]
<!-- Check if the value of type in the current iteration is not product -->
[!- forif {type} not "product" -!]
This is not a product
[!- endforif -!]
[!- endfor -!]
#### Print commands:
Print the value of *`variable`* for the header of the file this 'print' command is on. This differs from 'forprint' commands because the value of *`variable`* is only taken from the header of the file currently being handled, not from any other file.
[!- print {variable} -!]
Example:
<!-- Will print the value of title from the current page's header -->
[!- print {title} -!]
#### Forprint commands:
Print the value of the *`variable`* from the header of the current 'for' loop iteration. This differs from 'print' commands because the value of *`variable`* is not taken from the header of the file currently being handled.
[!- forprint {variable} -!]
Example:
[!- for {type} is "product" by -{price} -!]
<!-- Will print the value of title from the current iteration's header -->
[!- forprint {title} -!]
[!- endfor -!]
#### File Headers:
The file header is included on the top of pages that are not template files that you wish to manipulate with the **ignis** engine. Variables will be created with anything to the right of the first equal sign being the value of that variable. Variables can include letters, numbers, underscores and hyphens. The file path of the file will be stored in the variable *`@FILEPATH`* and anything after the file header will be stored in the variable *`@CONTENT`*. *`%TEMPLATE`* is the location of the template file for the page based on the root of the filesystem being the input path of the website.
Any file (excluding template files) you wish to use *`[!- -!]`* commands, statements, or loops to build or modify must have a file header, even if you leave it empty. `!-header` must be the first line of the file and `-!` must start on a new line. *`%TEMPLATE`* is not required, but is highly suggested to use.
!-header
%TEMPLATE=/path/to/template/file
variable=value
-!
Example:
!-header
%TEMPLATE=/templates/template.html
type=product
-!
In this example, the template file will be located at `templates/template.html` inside of the input path location specified when you run `ignis` in the command line.
#### Template Header:
The template header states that the file is a template and should not be written into the output path for the website, but instead should just be applied to pages that call for that template file specifically.
`!-template-!` must be the first line of any template file.
!-template-!
#### Example Site:
This example site should be included in `/etc/ignis/example/` after installing **ignis**. This example site is just to show how files can be formatted to work with the **ignis** engine. To view the site at http://localhost:9999, you can use the command `$ ignis -T -o <output_path> -i /etc/ignis/example/` where *`<output_path>`* is the path were you want the website to be built. This command will use the built-in web server in **ignis** to serve the website.