annotate README.md @ 57:9e556e91fbf6 draft

Use absolute paths for running extensions found in .aya Signed-off-by: Izuru Yakumo <yakumo.izuru@chaotic.ninja>
author yakumo.izuru
date Thu, 13 Apr 2023 23:37:34 +0000
parents c6785950280e
children cf7277e42ece
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
55
c6785950280e The fastest, period.
yakumo.izuru
parents: 47
diff changeset
1 # aya
8
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
2
55
c6785950280e The fastest, period.
yakumo.izuru
parents: 47
diff changeset
3 aya is an extremely minimal static site generator written in Go.
8
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
4
55
c6785950280e The fastest, period.
yakumo.izuru
parents: 47
diff changeset
5 This crow tengu stands for 'the fastest one in Gensokyo' and yes this is also a Touhou Project reference.
8
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
6
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
7 ## Features
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
8
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
9 * Zero configuration (no configuration file needed)
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
10 * Cross-platform
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
11 * Highly extensible
38
ea1bcd29a195 updated README
zaitsev.serge
parents: 12
diff changeset
12 * Works well for blogs and generic static websites (landing pages etc)
8
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
13 * Easy to learn
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
14 * Fast
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
15
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
16 ## Installation
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
17
55
c6785950280e The fastest, period.
yakumo.izuru
parents: 47
diff changeset
18 Build it manually assuming you have Go installed:
8
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
19
55
c6785950280e The fastest, period.
yakumo.izuru
parents: 47
diff changeset
20 $ go install marisa.chaotic.ninja/aya@latest
8
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
21
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
22 ## Ideology
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
23
47
0adadd497d23 Forked project
prologic
parents: 38
diff changeset
24 Keep your texts in markdown, or HTML format right in the main directory
38
ea1bcd29a195 updated README
zaitsev.serge
parents: 12
diff changeset
25 of your blog/site.
8
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
26
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
27 Keep all service files (extensions, layout pages, deployment scripts etc)
55
c6785950280e The fastest, period.
yakumo.izuru
parents: 47
diff changeset
28 in the `.aya` subdirectory.
8
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
29
38
ea1bcd29a195 updated README
zaitsev.serge
parents: 12
diff changeset
30 Define variables in the header of the content files using [YAML]:
8
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
31
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
32 title: My web site
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
33 keywords: best website, hello, world
38
ea1bcd29a195 updated README
zaitsev.serge
parents: 12
diff changeset
34 ---
8
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
35
38
ea1bcd29a195 updated README
zaitsev.serge
parents: 12
diff changeset
36 Markdown text goes after a header *separator*
8
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
37
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
38 Use placeholders for variables and plugins in your markdown or html
38
ea1bcd29a195 updated README
zaitsev.serge
parents: 12
diff changeset
39 files, e.g. `{{ title }}` or `{{ command arg1 arg2 }}.
8
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
40
55
c6785950280e The fastest, period.
yakumo.izuru
parents: 47
diff changeset
41 Write extensions in any language you like and put them into the `.aya`
8
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
42 subdiretory.
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
43
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
44 Everything the extensions prints to stdout becomes the value of the
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
45 placeholder.
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
46
55
c6785950280e The fastest, period.
yakumo.izuru
parents: 47
diff changeset
47 Every variable from the content header will be passed via environment variables like `title` becomes `$AYA_TITLE` and so on. There are some special variables:
8
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
48
55
c6785950280e The fastest, period.
yakumo.izuru
parents: 47
diff changeset
49 * `$AYA` - a path to the `aya` executable
c6785950280e The fastest, period.
yakumo.izuru
parents: 47
diff changeset
50 * `$AYA_OUTDIR` - a path to the directory with generated files
c6785950280e The fastest, period.
yakumo.izuru
parents: 47
diff changeset
51 * `$AYA_FILE` - a path to the currently processed markdown file
c6785950280e The fastest, period.
yakumo.izuru
parents: 47
diff changeset
52 * `$AYA_URL` - a URL for the currently generated page
8
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
53
38
ea1bcd29a195 updated README
zaitsev.serge
parents: 12
diff changeset
54 ## Example of RSS generation
ea1bcd29a195 updated README
zaitsev.serge
parents: 12
diff changeset
55
ea1bcd29a195 updated README
zaitsev.serge
parents: 12
diff changeset
56 Extensions can be written in any language you know (Bash, Python, Lua, JavaScript, Go, even Assembler). Here's an example of how to scan all markdown blog posts and create RSS items:
8
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
57
38
ea1bcd29a195 updated README
zaitsev.serge
parents: 12
diff changeset
58 ``` bash
ea1bcd29a195 updated README
zaitsev.serge
parents: 12
diff changeset
59 for f in ./blog/*.md ; do
55
c6785950280e The fastest, period.
yakumo.izuru
parents: 47
diff changeset
60 d=$($AYA var $f date)
38
ea1bcd29a195 updated README
zaitsev.serge
parents: 12
diff changeset
61 if [ ! -z $d ] ; then
ea1bcd29a195 updated README
zaitsev.serge
parents: 12
diff changeset
62 timestamp=`date --date "$d" +%s`
55
c6785950280e The fastest, period.
yakumo.izuru
parents: 47
diff changeset
63 url=`$AYA var $f url`
c6785950280e The fastest, period.
yakumo.izuru
parents: 47
diff changeset
64 title=`$AYA var $f title | tr A-Z a-z`
c6785950280e The fastest, period.
yakumo.izuru
parents: 47
diff changeset
65 descr=`$AYA var $f description`
38
ea1bcd29a195 updated README
zaitsev.serge
parents: 12
diff changeset
66 echo $timestamp \
ea1bcd29a195 updated README
zaitsev.serge
parents: 12
diff changeset
67 "<item>" \
ea1bcd29a195 updated README
zaitsev.serge
parents: 12
diff changeset
68 "<title>$title</title>" \
55
c6785950280e The fastest, period.
yakumo.izuru
parents: 47
diff changeset
69 "<link>http://ayaerge.com/$url</link>" \
38
ea1bcd29a195 updated README
zaitsev.serge
parents: 12
diff changeset
70 "<description>$descr</description>" \
ea1bcd29a195 updated README
zaitsev.serge
parents: 12
diff changeset
71 "<pubDate>$(date --date @$timestamp -R)</pubDate>" \
55
c6785950280e The fastest, period.
yakumo.izuru
parents: 47
diff changeset
72 "<guid>http://ayaerge.com/$url</guid>" \
38
ea1bcd29a195 updated README
zaitsev.serge
parents: 12
diff changeset
73 "</item>"
ea1bcd29a195 updated README
zaitsev.serge
parents: 12
diff changeset
74 fi
ea1bcd29a195 updated README
zaitsev.serge
parents: 12
diff changeset
75 done | sort -r -n | cut -d' ' -f2-
ea1bcd29a195 updated README
zaitsev.serge
parents: 12
diff changeset
76 ```
8
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
77
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
78 ## Hooks
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
79
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
80 There are two special plugin names that are executed every time the build
38
ea1bcd29a195 updated README
zaitsev.serge
parents: 12
diff changeset
81 happens - `prehook` and `posthook`. You can define some global actions here like
ea1bcd29a195 updated README
zaitsev.serge
parents: 12
diff changeset
82 content generation, or additional commands, like LESS to CSS conversion:
8
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
83
55
c6785950280e The fastest, period.
yakumo.izuru
parents: 47
diff changeset
84 # .aya/post
8
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
85
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
86 #!/bin/sh
55
c6785950280e The fastest, period.
yakumo.izuru
parents: 47
diff changeset
87 lessc < $AYA_OUTDIR/styles.less > $AYA_OUTDIR/styles.css
c6785950280e The fastest, period.
yakumo.izuru
parents: 47
diff changeset
88 rm -f $AYA_OUTDIR/styles.css
8
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
89
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
90 ## Command line usage
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
91
55
c6785950280e The fastest, period.
yakumo.izuru
parents: 47
diff changeset
92 `aya build` re-builds your site.
8
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
93
55
c6785950280e The fastest, period.
yakumo.izuru
parents: 47
diff changeset
94 `aya build <file>` re-builds one file and prints resulting content to stdout.
38
ea1bcd29a195 updated README
zaitsev.serge
parents: 12
diff changeset
95
55
c6785950280e The fastest, period.
yakumo.izuru
parents: 47
diff changeset
96 `aya watch` rebuilds your site every time you modify any file.
8
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
97
55
c6785950280e The fastest, period.
yakumo.izuru
parents: 47
diff changeset
98 `aya var <filename> [var1 var2...]` prints a list of variables defined in the
8
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
99 header of a given markdown file, or the values of certain variables (even if
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
100 it's an empty string).
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
101
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
102 ## License
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
103
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
104 The software is distributed under the MIT license.