annotate README.md @ 65:6d985efa0f7a draft

Add support for bfchroma syntax highlighting Signed-off-by: Izuru Yakumo <yakumo.izuru@chaotic.ninja>
author yakumo.izuru
date Mon, 08 May 2023 21:10:36 +0000
parents 0716397c44e8
children 4edfa07d5fe0
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
64
0716397c44e8 Update documentation
yakumo.izuru
parents: 60
diff changeset
5 Named after [Aya Shameimaru](https://en.touhouwiki.net/wiki/Aya_Shameimaru) from [Touhou 9.5: Shoot the Bullet](https://en.touhouwiki.net/wiki/Shoot_the_Bullet)
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
65
6d985efa0f7a Add support for bfchroma syntax highlighting
yakumo.izuru
parents: 64
diff changeset
14 * Code highlighting with [bfchroma](https://github.com/Depado/bfchroma)
64
0716397c44e8 Update documentation
yakumo.izuru
parents: 60
diff changeset
15 * Fast (duh!)
8
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
16
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
17 ## Installation
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
18
55
c6785950280e The fastest, period.
yakumo.izuru
parents: 47
diff changeset
19 Build it manually assuming you have Go installed:
8
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
20
60
cf7277e42ece Add serve function, update documentation accordingly
yakumo.izuru
parents: 55
diff changeset
21 $ go install marisa.chaotic.ninja/aya/cmd/aya@latest
64
0716397c44e8 Update documentation
yakumo.izuru
parents: 60
diff changeset
22 --- or ---
0716397c44e8 Update documentation
yakumo.izuru
parents: 60
diff changeset
23 $ git clone https://git.chaotic.ninja/yakumo.izuru/aya
0716397c44e8 Update documentation
yakumo.izuru
parents: 60
diff changeset
24 $ cd aya
0716397c44e8 Update documentation
yakumo.izuru
parents: 60
diff changeset
25 $ make
0716397c44e8 Update documentation
yakumo.izuru
parents: 60
diff changeset
26 # make install
0716397c44e8 Update documentation
yakumo.izuru
parents: 60
diff changeset
27
8
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
28 ## Ideology
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
29
47
0adadd497d23 Forked project
prologic
parents: 38
diff changeset
30 Keep your texts in markdown, or HTML format right in the main directory
38
ea1bcd29a195 updated README
zaitsev.serge
parents: 12
diff changeset
31 of your blog/site.
8
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
32
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
33 Keep all service files (extensions, layout pages, deployment scripts etc)
55
c6785950280e The fastest, period.
yakumo.izuru
parents: 47
diff changeset
34 in the `.aya` subdirectory.
8
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
35
38
ea1bcd29a195 updated README
zaitsev.serge
parents: 12
diff changeset
36 Define variables in the header of the content files using [YAML]:
8
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
37
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
38 title: My web site
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
39 keywords: best website, hello, world
38
ea1bcd29a195 updated README
zaitsev.serge
parents: 12
diff changeset
40 ---
8
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
41
38
ea1bcd29a195 updated README
zaitsev.serge
parents: 12
diff changeset
42 Markdown text goes after a header *separator*
8
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
43
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
44 Use placeholders for variables and plugins in your markdown or html
38
ea1bcd29a195 updated README
zaitsev.serge
parents: 12
diff changeset
45 files, e.g. `{{ title }}` or `{{ command arg1 arg2 }}.
8
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
46
55
c6785950280e The fastest, period.
yakumo.izuru
parents: 47
diff changeset
47 Write extensions in any language you like and put them into the `.aya`
8
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
48 subdiretory.
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
49
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
50 Everything the extensions prints to stdout becomes the value of the
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
51 placeholder.
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
52
55
c6785950280e The fastest, period.
yakumo.izuru
parents: 47
diff changeset
53 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
54
55
c6785950280e The fastest, period.
yakumo.izuru
parents: 47
diff changeset
55 * `$AYA` - a path to the `aya` executable
c6785950280e The fastest, period.
yakumo.izuru
parents: 47
diff changeset
56 * `$AYA_OUTDIR` - a path to the directory with generated files
c6785950280e The fastest, period.
yakumo.izuru
parents: 47
diff changeset
57 * `$AYA_FILE` - a path to the currently processed markdown file
c6785950280e The fastest, period.
yakumo.izuru
parents: 47
diff changeset
58 * `$AYA_URL` - a URL for the currently generated page
8
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
59
38
ea1bcd29a195 updated README
zaitsev.serge
parents: 12
diff changeset
60 ## Example of RSS generation
ea1bcd29a195 updated README
zaitsev.serge
parents: 12
diff changeset
61
ea1bcd29a195 updated README
zaitsev.serge
parents: 12
diff changeset
62 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
63
38
ea1bcd29a195 updated README
zaitsev.serge
parents: 12
diff changeset
64 ``` bash
64
0716397c44e8 Update documentation
yakumo.izuru
parents: 60
diff changeset
65 #!/bin/sh
0716397c44e8 Update documentation
yakumo.izuru
parents: 60
diff changeset
66 echo "Generating RSS feed"
0716397c44e8 Update documentation
yakumo.izuru
parents: 60
diff changeset
67
0716397c44e8 Update documentation
yakumo.izuru
parents: 60
diff changeset
68 echo '<?xml version="1.0" encoding="utf-8"?>' > $AYA_OUTDIR/blog/rss.xml
0716397c44e8 Update documentation
yakumo.izuru
parents: 60
diff changeset
69 echo '<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">' >> $AYA_OUTDIR/blog/rss.xml
0716397c44e8 Update documentation
yakumo.izuru
parents: 60
diff changeset
70 echo '<channel>' >> $AYA_OUTDIR/blog/rss.xml
0716397c44e8 Update documentation
yakumo.izuru
parents: 60
diff changeset
71 for f in ./blog/*/*.md ; do
0716397c44e8 Update documentation
yakumo.izuru
parents: 60
diff changeset
72 d=$($AYA var $f date)
0716397c44e8 Update documentation
yakumo.izuru
parents: 60
diff changeset
73 if [ ! -z $d ] ; then
0716397c44e8 Update documentation
yakumo.izuru
parents: 60
diff changeset
74 timestamp=`gdate --date "$d" +%s`
0716397c44e8 Update documentation
yakumo.izuru
parents: 60
diff changeset
75 url=`$AYA var $f url`
0716397c44e8 Update documentation
yakumo.izuru
parents: 60
diff changeset
76 title=`$AYA var $f title | tr A-Z a-z`
0716397c44e8 Update documentation
yakumo.izuru
parents: 60
diff changeset
77 descr=`$AYA var $f description`
0716397c44e8 Update documentation
yakumo.izuru
parents: 60
diff changeset
78 echo $timestamp "<item><title>$title</title><link>https://technicalmarisa.chaotic.ninja/blog/$url</link><description>$descr</description><pubDate>$(gdate --date @$timestamp -R)</pubDate><guid>http://technicalmarisa.chaotic.ninja/blog/$url</guid></item>"
0716397c44e8 Update documentation
yakumo.izuru
parents: 60
diff changeset
79 fi
0716397c44e8 Update documentation
yakumo.izuru
parents: 60
diff changeset
80 done | sort -r -n | cut -d' ' -f2- >> $AYA_OUTDIR/blog/rss.xml
0716397c44e8 Update documentation
yakumo.izuru
parents: 60
diff changeset
81 echo '</channel>' >> $AYA_OUTDIR/blog/rss.xml
0716397c44e8 Update documentation
yakumo.izuru
parents: 60
diff changeset
82 echo '</rss>' >> $AYA_OUTDIR/blog/rss.xml
38
ea1bcd29a195 updated README
zaitsev.serge
parents: 12
diff changeset
83 ```
8
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
84
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
85 ## Hooks
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
86
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
87 There are two special plugin names that are executed every time the build
38
ea1bcd29a195 updated README
zaitsev.serge
parents: 12
diff changeset
88 happens - `prehook` and `posthook`. You can define some global actions here like
ea1bcd29a195 updated README
zaitsev.serge
parents: 12
diff changeset
89 content generation, or additional commands, like LESS to CSS conversion:
8
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
90
55
c6785950280e The fastest, period.
yakumo.izuru
parents: 47
diff changeset
91 # .aya/post
8
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
92
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
93 #!/bin/sh
55
c6785950280e The fastest, period.
yakumo.izuru
parents: 47
diff changeset
94 lessc < $AYA_OUTDIR/styles.less > $AYA_OUTDIR/styles.css
c6785950280e The fastest, period.
yakumo.izuru
parents: 47
diff changeset
95 rm -f $AYA_OUTDIR/styles.css
8
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
96
64
0716397c44e8 Update documentation
yakumo.izuru
parents: 60
diff changeset
97 ## Extras
0716397c44e8 Update documentation
yakumo.izuru
parents: 60
diff changeset
98
0716397c44e8 Update documentation
yakumo.izuru
parents: 60
diff changeset
99 `aya` also supports generating `.html` and `.css` by means of using `.amber`
0716397c44e8 Update documentation
yakumo.izuru
parents: 60
diff changeset
100 and `.gcss` files. See more at [eknkc/amber](https://github.com/eknkc/amber) [yosssi/gcss](https://github.com/yosssi/gcss)
0716397c44e8 Update documentation
yakumo.izuru
parents: 60
diff changeset
101
8
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
102 ## Command line usage
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
103
55
c6785950280e The fastest, period.
yakumo.izuru
parents: 47
diff changeset
104 `aya build` re-builds your site.
8
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
105
55
c6785950280e The fastest, period.
yakumo.izuru
parents: 47
diff changeset
106 `aya build <file>` re-builds one file and prints resulting content to stdout.
38
ea1bcd29a195 updated README
zaitsev.serge
parents: 12
diff changeset
107
60
cf7277e42ece Add serve function, update documentation accordingly
yakumo.izuru
parents: 55
diff changeset
108 `aya serve` serves your site over HTTP.
8
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
109
55
c6785950280e The fastest, period.
yakumo.izuru
parents: 47
diff changeset
110 `aya var <filename> [var1 var2...]` prints a list of variables defined in the
8
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
111 header of a given markdown file, or the values of certain variables (even if
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
112 it's an empty string).
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
113
60
cf7277e42ece Add serve function, update documentation accordingly
yakumo.izuru
parents: 55
diff changeset
114 `aya watch` rebuilds your site every time you modify any file.
cf7277e42ece Add serve function, update documentation accordingly
yakumo.izuru
parents: 55
diff changeset
115
8
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
116 ## License
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
117
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
118 The software is distributed under the MIT license.