saait - www.codemadness.org - www.codemadness.org saait content files
 (HTM) git clone git://git.codemadness.org/www.codemadness.org
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
       saait (14018B)
       ---
            1 1<- Back        /        codemadness.org        70
            2 i                codemadness.org        70
            3 i                codemadness.org        70
            4 i# Saait: a boring HTML page generator                codemadness.org        70
            5 i                codemadness.org        70
            6 iLast modification on 2020-07-20                codemadness.org        70
            7 i                codemadness.org        70
            8 iSaait is the most boring static HTML page generator.                codemadness.org        70
            9 i                codemadness.org        70
           10 iMeaning of saai (dutch): boring. Pronunciation: site                codemadness.org        70
           11 i                codemadness.org        70
           12 1Read the README for more information about it.        /git/saait/file/README.gph        codemadness.org        70
           13 i                codemadness.org        70
           14 1I used to use »shellscripts« to generate the static pages, but realised I        /git/static-site-scripts/files.gph        codemadness.org        70
           15 iwanted a small program that works on each platform consistently.  There are                codemadness.org        70
           16 imany incompatibilities or unimplemented features in base tools across different                codemadness.org        70
           17 iplatforms: Linux, UNIX, Windows.                codemadness.org        70
           18 i                codemadness.org        70
           19 i                codemadness.org        70
           20 iThis site is created using saait.                codemadness.org        70
           21 i                codemadness.org        70
           22 i                codemadness.org        70
           23 i## Features                codemadness.org        70
           24 i                codemadness.org        70
           25 i* Single small binary that handles all the things. At run-time no dependency on                codemadness.org        70
           26 i  other tools.                codemadness.org        70
           27 i* Few lines of code (about 575 lines of C) and no dependencies except: a C                codemadness.org        70
           28 i  compiler and libc.                codemadness.org        70
           29 i* Works on most platforms: tested on Linux, *BSD, Windows.                codemadness.org        70
           30 i* Simple template syntax.                codemadness.org        70
           31 i* Uses HTML output by default, but can easily be modified to generate any                codemadness.org        70
           32 i  textual content, like gopher pages, wiki pages or other kinds of documents.                codemadness.org        70
           33 i* Out-of-the-box supports: creating an index page of all pages, Atom feed,                codemadness.org        70
           34 i  twtxt.txt feed, sitemap.xml and urllist.txt.                codemadness.org        70
           35 i                codemadness.org        70
           36 i                codemadness.org        70
           37 i## Cons                codemadness.org        70
           38 i                codemadness.org        70
           39 i* Simple template syntax, but very basic. Requires C knowledge to extend it if                codemadness.org        70
           40 i  needed.                codemadness.org        70
           41 i* Only basic (no nested) template blocks supported.                codemadness.org        70
           42 i                codemadness.org        70
           43 i                codemadness.org        70
           44 i## Clone                codemadness.org        70
           45 i                codemadness.org        70
           46 i        git clone git://git.codemadness.org/saait                codemadness.org        70
           47 i                codemadness.org        70
           48 i                codemadness.org        70
           49 i## Browse                codemadness.org        70
           50 i                codemadness.org        70
           51 iYou can browse the source-code at:                codemadness.org        70
           52 i                codemadness.org        70
           53 h* https://git.codemadness.org/saait/        URL:https://git.codemadness.org/saait/        codemadness.org        70
           54 1* gopher://codemadness.org/1/git/saait        /git/saait        codemadness.org        70
           55 i                codemadness.org        70
           56 i                codemadness.org        70
           57 i## Download releases                codemadness.org        70
           58 i                codemadness.org        70
           59 iReleases are available at:                codemadness.org        70
           60 i                codemadness.org        70
           61 h* https://codemadness.org/releases/saait/        URL:https://codemadness.org/releases/saait/        codemadness.org        70
           62 1* gopher://codemadness.org/1/releases/saait        /releases/saait        codemadness.org        70
           63 i                codemadness.org        70
           64 i                codemadness.org        70
           65 i## Documentation / man page                codemadness.org        70
           66 i                codemadness.org        70
           67 iBelow is the saait(1) man page, which includes usage examples.                codemadness.org        70
           68 i                codemadness.org        70
           69 i                        codemadness.org        70
           70 i        SAAIT(1)                    General Commands Manual                      SAAIT(1)                codemadness.org        70
           71 i                        codemadness.org        70
           72 i        NAME                codemadness.org        70
           73 i             saait  the most boring static page generator                codemadness.org        70
           74 i                        codemadness.org        70
           75 i        SYNOPSIS                codemadness.org        70
           76 i             saait [-c configfile] [-o outputdir] [-t templatesdir] pages...                codemadness.org        70
           77 i                        codemadness.org        70
           78 i        DESCRIPTION                codemadness.org        70
           79 i             saait writes HTML pages to the output directory.                codemadness.org        70
           80 i                        codemadness.org        70
           81 i             The arguments pages are page config files, which are processed in the                codemadness.org        70
           82 i             given order.                codemadness.org        70
           83 i                        codemadness.org        70
           84 i             The options are as follows:                codemadness.org        70
           85 i                        codemadness.org        70
           86 i             -c configfile                codemadness.org        70
           87 i                     The global configuration file, the default is "config.cfg". Each                codemadness.org        70
           88 i                     page configuration file inherits variables from this file. These                codemadness.org        70
           89 i                     variables can be overwritten per page.                codemadness.org        70
           90 i                        codemadness.org        70
           91 i             -o outputdir                codemadness.org        70
           92 i                     The output directory, the default is "output".                codemadness.org        70
           93 i                        codemadness.org        70
           94 i             -t templatesdir                codemadness.org        70
           95 i                     The templates directory, the default is "templates".                codemadness.org        70
           96 i                        codemadness.org        70
           97 i        DIRECTORY AND FILE STRUCTURE                codemadness.org        70
           98 i             A recommended directory structure for pages, although the names can be                codemadness.org        70
           99 i             anything:                codemadness.org        70
          100 i             pages/001-page.cfg                codemadness.org        70
          101 i             pages/001-page.html                codemadness.org        70
          102 i             pages/002-page.cfg                codemadness.org        70
          103 i             pages/002-page.html                codemadness.org        70
          104 i                        codemadness.org        70
          105 i             The directory and file structure for templates must be:                codemadness.org        70
          106 i             templates/<templatename>/header.ext                codemadness.org        70
          107 i             templates/<templatename>/item.ext                codemadness.org        70
          108 i             templates/<templatename>/footer.ext                codemadness.org        70
          109 i                        codemadness.org        70
          110 i             The following filename prefixes are detected for template blocks and                codemadness.org        70
          111 i             processed in this order:                codemadness.org        70
          112 i                        codemadness.org        70
          113 i             "header."                codemadness.org        70
          114 i                     Header block.                codemadness.org        70
          115 i                        codemadness.org        70
          116 i             "item."                codemadness.org        70
          117 i                     Item block.                codemadness.org        70
          118 i                        codemadness.org        70
          119 i             "footer."                codemadness.org        70
          120 i                     Footer block.                codemadness.org        70
          121 i                        codemadness.org        70
          122 i             The files are saved as output/<templatename>, for example                codemadness.org        70
          123 i             templates/atom.xml/* will become: output/atom.xml. If a template block                codemadness.org        70
          124 i             file does not exist then it is treated as if it was empty.                codemadness.org        70
          125 i                        codemadness.org        70
          126 i             Template directories starting with a dot (".") are ignored.                codemadness.org        70
          127 i                        codemadness.org        70
          128 i             The "page" templatename is special and will be used per page.                codemadness.org        70
          129 i                        codemadness.org        70
          130 i        CONFIG FILE                codemadness.org        70
          131 i             A config file has a simple key=value configuration syntax, for example:                codemadness.org        70
          132 i                        codemadness.org        70
          133 i             # this is a comment line.                codemadness.org        70
          134 i             filename = example.html                codemadness.org        70
          135 i             title = Example page                codemadness.org        70
          136 i             description = This is an example page                codemadness.org        70
          137 i             created = 2009-04-12                codemadness.org        70
          138 i             updated = 2009-04-14                codemadness.org        70
          139 i                        codemadness.org        70
          140 i             The following variable names are special with their respective defaults:                codemadness.org        70
          141 i                        codemadness.org        70
          142 i             contentfile                codemadness.org        70
          143 i                     Path to the input content filename, by default this is the path                codemadness.org        70
          144 i                     of the config file with the last extension replaced to ".html".                codemadness.org        70
          145 i                        codemadness.org        70
          146 i             filename                codemadness.org        70
          147 i                     The filename or relative file path for the output file for this                codemadness.org        70
          148 i                     page.  By default the value is the basename of the contentfile.                codemadness.org        70
          149 i                     The path of the written output file is the value of filename                codemadness.org        70
          150 i                     appended to the outputdir path.                codemadness.org        70
          151 i                        codemadness.org        70
          152 i             A line starting with # is a comment and is ignored.                codemadness.org        70
          153 i                        codemadness.org        70
          154 i             TABs and spaces before and after a variable name are ignored.  TABs and                codemadness.org        70
          155 i             spaces before a value are ignored.                codemadness.org        70
          156 i                        codemadness.org        70
          157 i        TEMPLATES                codemadness.org        70
          158 i             A template (block) is text.  Variables are replaced with the values set                codemadness.org        70
          159 i             in the config files.                codemadness.org        70
          160 i                        codemadness.org        70
          161 i             The possible operators for variables are:                codemadness.org        70
          162 i                        codemadness.org        70
          163 i             $             Escapes a XML string, for example: < to the entity &lt;.                codemadness.org        70
          164 i                        codemadness.org        70
          165 i             #             Literal raw string value.                codemadness.org        70
          166 i                        codemadness.org        70
          167 i             %             Insert contents of file of the value of the variable.                codemadness.org        70
          168 i                        codemadness.org        70
          169 i             For example in a HTML item template:                codemadness.org        70
          170 i                        codemadness.org        70
          171 i             <article>                codemadness.org        70
          172 i                     <header>                codemadness.org        70
          173 i                             <h1><a href="">${title}</a></h1>                codemadness.org        70
          174 i                             <p>                codemadness.org        70
          175 i                                     <strong>Last modification on </strong>                codemadness.org        70
          176 i                                     <time datetime="${updated}">${updated}</time>                codemadness.org        70
          177 i                             </p>                codemadness.org        70
          178 i                     </header>                codemadness.org        70
          179 i                     %{contentfile}                codemadness.org        70
          180 i             </article>                codemadness.org        70
          181 i                        codemadness.org        70
          182 i        EXIT STATUS                codemadness.org        70
          183 i             The saait utility exits 0 on success, and >0 if an error occurs.                codemadness.org        70
          184 i                        codemadness.org        70
          185 i        EXAMPLES                codemadness.org        70
          186 i             A basic usage example:                codemadness.org        70
          187 i                        codemadness.org        70
          188 i             1.   Create a directory for a new site:                codemadness.org        70
          189 i                        codemadness.org        70
          190 i                  mkdir newsite                codemadness.org        70
          191 i                        codemadness.org        70
          192 i             2.   Copy the example pages, templates, global config file and example                codemadness.org        70
          193 i                  stylesheets to a directory:                codemadness.org        70
          194 i                        codemadness.org        70
          195 i                  cp -r pages templates config.cfg style.css print.css newsite/                codemadness.org        70
          196 i                        codemadness.org        70
          197 i             3.   Change the current directory to the created directory.                codemadness.org        70
          198 i                        codemadness.org        70
          199 i                  cd newsite/                codemadness.org        70
          200 i                        codemadness.org        70
          201 i             4.   Change the values in the global config.cfg file.                codemadness.org        70
          202 i                        codemadness.org        70
          203 i             5.   If you want to modify parts of the header, like the navigation menu                codemadness.org        70
          204 i                  items, you can change the following two template files:                codemadness.org        70
          205 i                  templates/page/header.html                codemadness.org        70
          206 i                  templates/index.html/header.html                codemadness.org        70
          207 i                        codemadness.org        70
          208 i             6.   Create any new pages in the pages directory. For each config file                codemadness.org        70
          209 i                  there has to be a corresponding HTML file.  By default this HTML                codemadness.org        70
          210 i                  file has the path of the config file, but with the last extension                codemadness.org        70
          211 i                  (".cfg" in this case) replaced to ".html".                codemadness.org        70
          212 i                        codemadness.org        70
          213 i             7.   Create an output directory:                codemadness.org        70
          214 i                        codemadness.org        70
          215 i                  mkdir -p output                codemadness.org        70
          216 i                        codemadness.org        70
          217 i             8.   After any modifications the following commands can be used to                codemadness.org        70
          218 i                  generate the output and process the pages in descending order:                codemadness.org        70
          219 i                        codemadness.org        70
          220 i                  find pages -type f -name '*.cfg' -print0 | sort -zr | xargs -0 saait                codemadness.org        70
          221 i                        codemadness.org        70
          222 i             9.   Copy the modified stylesheets to the output directory also:                codemadness.org        70
          223 i                        codemadness.org        70
          224 i                  cp style.css print.css output/                codemadness.org        70
          225 i                        codemadness.org        70
          226 i             10.  Open output/index.html locally in your webbrowser to review the                codemadness.org        70
          227 i                  changes.                codemadness.org        70
          228 i                        codemadness.org        70
          229 i             11.  To synchronize files, you can securely transfer them via SSH using                codemadness.org        70
          230 i                  rsync:                codemadness.org        70
          231 i                        codemadness.org        70
          232 i                  rsync -av output/ user@somehost:/var/www/htdocs/                codemadness.org        70
          233 i                        codemadness.org        70
          234 i        TRIVIA                codemadness.org        70
          235 i             The most boring static page generator.                codemadness.org        70
          236 i                        codemadness.org        70
          237 i             Meaning of saai (dutch): boring, pronunciation of saait: site                codemadness.org        70
          238 i                        codemadness.org        70
          239 i        SEE ALSO                codemadness.org        70
          240 i             find(1), sort(1), xargs(1)                codemadness.org        70
          241 i                        codemadness.org        70
          242 i        AUTHORS                codemadness.org        70
          243 i             Hiltjo Posthuma <hiltjo@codemadness.org>                codemadness.org        70
          244 .