annotate README.md @ 83:d8c30f64e301 draft

何をしていたか忘れてしまった Signed-off-by: Izuru Yakumo <yakumo.izuru@chaotic.ninja>
author yakumo.izuru
date Tue, 26 Mar 2024 02:18:06 +0000
parents ab4829ba7a8a
children 897d57a7ec95
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)
74
d8727551f403 The Empress (III)
yakumo.izuru
parents: 67
diff changeset
13 * Easy to learn (you literally don't need to)
d8727551f403 The Empress (III)
yakumo.izuru
parents: 67
diff changeset
14 * Fast (goes without saying)
8
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
67
4edfa07d5fe0 bfchroma turned out to be a hassle
yakumo.izuru
parents: 65
diff changeset
18 Build it manually assuming you have Go (>=1.17) installed:
8
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
19
79
7b122b71fcfa A good time to finally release a stable version
yakumo.izuru
parents: 74
diff changeset
20 $ go install marisa.chaotic.ninja/aya/cmd/aya@latest (1)
64
0716397c44e8 Update documentation
yakumo.izuru
parents: 60
diff changeset
21 --- or ---
83
d8c30f64e301 何をしていたか忘れてしまった
yakumo.izuru
parents: 80
diff changeset
22 $ git clone https://git.chaotic.ninja/yakumo_izuru/aya
64
0716397c44e8 Update documentation
yakumo.izuru
parents: 60
diff changeset
23 $ cd aya
0716397c44e8 Update documentation
yakumo.izuru
parents: 60
diff changeset
24 $ make
0716397c44e8 Update documentation
yakumo.izuru
parents: 60
diff changeset
25 # make install
79
7b122b71fcfa A good time to finally release a stable version
yakumo.izuru
parents: 74
diff changeset
26
7b122b71fcfa A good time to finally release a stable version
yakumo.izuru
parents: 74
diff changeset
27 (1) If you use this method, the `aya version` subcommand may print the wrong string,
7b122b71fcfa A good time to finally release a stable version
yakumo.izuru
parents: 74
diff changeset
28 but it should not be a problem unless you use it on a page.
7b122b71fcfa A good time to finally release a stable version
yakumo.izuru
parents: 74
diff changeset
29
8
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
30 ## Ideology
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
31
79
7b122b71fcfa A good time to finally release a stable version
yakumo.izuru
parents: 74
diff changeset
32 Keep your texts in markdown, [amber](https://github.com/eknkc/amber), or html format right in the main directory
38
ea1bcd29a195 updated README
zaitsev.serge
parents: 12
diff changeset
33 of your blog/site.
8
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
34
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
35 Keep all service files (extensions, layout pages, deployment scripts etc)
55
c6785950280e The fastest, period.
yakumo.izuru
parents: 47
diff changeset
36 in the `.aya` subdirectory.
8
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
37
79
7b122b71fcfa A good time to finally release a stable version
yakumo.izuru
parents: 74
diff changeset
38 Define variables in the header of the content files using [YAML](https://www.yaml.io) :
8
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
39
79
7b122b71fcfa A good time to finally release a stable version
yakumo.izuru
parents: 74
diff changeset
40 ```markdown
7b122b71fcfa A good time to finally release a stable version
yakumo.izuru
parents: 74
diff changeset
41 title: My web site
7b122b71fcfa A good time to finally release a stable version
yakumo.izuru
parents: 74
diff changeset
42 keywords: best website, hello, world
7b122b71fcfa A good time to finally release a stable version
yakumo.izuru
parents: 74
diff changeset
43 ---
8
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
44
79
7b122b71fcfa A good time to finally release a stable version
yakumo.izuru
parents: 74
diff changeset
45 Markdown text goes after a header *separator*
7b122b71fcfa A good time to finally release a stable version
yakumo.izuru
parents: 74
diff changeset
46 ```
8
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
47
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
48 Use placeholders for variables and plugins in your markdown or html
38
ea1bcd29a195 updated README
zaitsev.serge
parents: 12
diff changeset
49 files, e.g. `{{ title }}` or `{{ command arg1 arg2 }}.
8
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
50
55
c6785950280e The fastest, period.
yakumo.izuru
parents: 47
diff changeset
51 Write extensions in any language you like and put them into the `.aya`
8
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
52 subdiretory.
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
53
79
7b122b71fcfa A good time to finally release a stable version
yakumo.izuru
parents: 74
diff changeset
54 Everything the extensions prints to [stdout](https://man.freebsd.org/cgi/man.cgi?fd) becomes the value of the
8
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
55 placeholder.
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
56
80
ab4829ba7a8a Update README
yakumo.izuru
parents: 79
diff changeset
57 Every variable from the content header will be passed via environment variables like `title` becomes `$AYA_TITLE` and so on.
79
7b122b71fcfa A good time to finally release a stable version
yakumo.izuru
parents: 74
diff changeset
58 There are some special variables:
8
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
59
55
c6785950280e The fastest, period.
yakumo.izuru
parents: 47
diff changeset
60 * `$AYA` - a path to the `aya` executable
80
ab4829ba7a8a Update README
yakumo.izuru
parents: 79
diff changeset
61 * `$AYA_OUTDIR` - a path to the directory with generated files
ab4829ba7a8a Update README
yakumo.izuru
parents: 79
diff changeset
62 * `$AYA_FILE` - a path to the currently processed markdown file
ab4829ba7a8a Update README
yakumo.izuru
parents: 79
diff changeset
63 * `$AYA_URL` - a URL for the currently generated page
8
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
64
38
ea1bcd29a195 updated README
zaitsev.serge
parents: 12
diff changeset
65 ## Example of RSS generation
ea1bcd29a195 updated README
zaitsev.serge
parents: 12
diff changeset
66
ea1bcd29a195 updated README
zaitsev.serge
parents: 12
diff changeset
67 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
68
38
ea1bcd29a195 updated README
zaitsev.serge
parents: 12
diff changeset
69 ``` bash
64
0716397c44e8 Update documentation
yakumo.izuru
parents: 60
diff changeset
70 #!/bin/sh
0716397c44e8 Update documentation
yakumo.izuru
parents: 60
diff changeset
71 echo "Generating RSS feed"
0716397c44e8 Update documentation
yakumo.izuru
parents: 60
diff changeset
72
0716397c44e8 Update documentation
yakumo.izuru
parents: 60
diff changeset
73 echo '<?xml version="1.0" encoding="utf-8"?>' > $AYA_OUTDIR/blog/rss.xml
0716397c44e8 Update documentation
yakumo.izuru
parents: 60
diff changeset
74 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
75 echo '<channel>' >> $AYA_OUTDIR/blog/rss.xml
0716397c44e8 Update documentation
yakumo.izuru
parents: 60
diff changeset
76 for f in ./blog/*/*.md ; do
0716397c44e8 Update documentation
yakumo.izuru
parents: 60
diff changeset
77 d=$($AYA var $f date)
0716397c44e8 Update documentation
yakumo.izuru
parents: 60
diff changeset
78 if [ ! -z $d ] ; then
0716397c44e8 Update documentation
yakumo.izuru
parents: 60
diff changeset
79 timestamp=`gdate --date "$d" +%s`
0716397c44e8 Update documentation
yakumo.izuru
parents: 60
diff changeset
80 url=`$AYA var $f url`
0716397c44e8 Update documentation
yakumo.izuru
parents: 60
diff changeset
81 title=`$AYA var $f title | tr A-Z a-z`
0716397c44e8 Update documentation
yakumo.izuru
parents: 60
diff changeset
82 descr=`$AYA var $f description`
0716397c44e8 Update documentation
yakumo.izuru
parents: 60
diff changeset
83 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
84 fi
0716397c44e8 Update documentation
yakumo.izuru
parents: 60
diff changeset
85 done | sort -r -n | cut -d' ' -f2- >> $AYA_OUTDIR/blog/rss.xml
0716397c44e8 Update documentation
yakumo.izuru
parents: 60
diff changeset
86 echo '</channel>' >> $AYA_OUTDIR/blog/rss.xml
0716397c44e8 Update documentation
yakumo.izuru
parents: 60
diff changeset
87 echo '</rss>' >> $AYA_OUTDIR/blog/rss.xml
38
ea1bcd29a195 updated README
zaitsev.serge
parents: 12
diff changeset
88 ```
8
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
89
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
90 ## Hooks
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
91 There are two special plugin names that are executed every time the build
38
ea1bcd29a195 updated README
zaitsev.serge
parents: 12
diff changeset
92 happens - `prehook` and `posthook`. You can define some global actions here like
83
d8c30f64e301 何をしていたか忘れてしまった
yakumo.izuru
parents: 80
diff changeset
93 content generation, or additional commands, like LESS to CSS conversion
8
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
94
79
7b122b71fcfa A good time to finally release a stable version
yakumo.izuru
parents: 74
diff changeset
95 Note, you can also place `.gcss` files for [gcss](https://github.com/yosssi/gcss) to process instead
64
0716397c44e8 Update documentation
yakumo.izuru
parents: 60
diff changeset
96
8
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
97 ## Command line usage
83
d8c30f64e301 何をしていたか忘れてしまった
yakumo.izuru
parents: 80
diff changeset
98 Read `aya(1)`
60
cf7277e42ece Add serve function, update documentation accordingly
yakumo.izuru
parents: 55
diff changeset
99
8
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
100 ## License
83
d8c30f64e301 何をしていたか忘れてしまった
yakumo.izuru
parents: 80
diff changeset
101 The software is distributed under the [MIT/X11](LICENSE) license.
8
90f73028f891 added readme
zaitsev.serge
parents:
diff changeset
102
83
d8c30f64e301 何をしていたか忘れてしまった
yakumo.izuru
parents: 80
diff changeset
103 ## Sites using Aya!
d8c30f64e301 何をしていたか忘れてしまった
yakumo.izuru
parents: 80
diff changeset
104 (I know, I made the majority of them, but they still count)
d8c30f64e301 何をしていたか忘れてしまった
yakumo.izuru
parents: 80
diff changeset
105
d8c30f64e301 何をしていたか忘れてしまった
yakumo.izuru
parents: 80
diff changeset
106 | Title | Author | Link |
d8c30f64e301 何をしていたか忘れてしまった
yakumo.izuru
parents: 80
diff changeset
107 |------------------------|--------------------------------------------------|---------------------------------------|
d8c30f64e301 何をしていたか忘れてしまった
yakumo.izuru
parents: 80
diff changeset
108 | Aya (project homepage) | Izuru Yakumo | https://aya.chaotic.ninja |
d8c30f64e301 何をしていたか忘れてしまった
yakumo.izuru
parents: 80
diff changeset
109 | Chaotic Ninja | Izuru Yakumo, Mima-sama | https://chaotic.ninja |
d8c30f64e301 何をしていたか忘れてしまった
yakumo.izuru
parents: 80
diff changeset
110 | Geidontei | Izuru Yakumo | https://geidontei.chaotic.ninja |
d8c30f64e301 何をしていたか忘れてしまった
yakumo.izuru
parents: 80
diff changeset
111 | ChaoticIRC Network | Izuru Yakumo | https://im.chaotic.ninja |
d8c30f64e301 何をしていたか忘れてしまった
yakumo.izuru
parents: 80
diff changeset
112 | Kanako | Izuru Yakumo | https://kanako.chaotic.ninja |
d8c30f64e301 何をしていたか忘れてしまった
yakumo.izuru
parents: 80
diff changeset
113 | Kill-9 The Revival | Various authors | https://kill-9.chaotic.ninja |
d8c30f64e301 何をしていたか忘れてしまった
yakumo.izuru
parents: 80
diff changeset
114 | PXIMG(7) | Izuru Yakumo | https://pximg.chaotic.ninja |
d8c30f64e301 何をしていたか忘れてしまった
yakumo.izuru
parents: 80
diff changeset
115 | Shinmyoumaru | Mima-sama | https://shinmyoumaru.chaotic.ninja |
d8c30f64e301 何をしていたか忘れてしまった
yakumo.izuru
parents: 80
diff changeset
116 | Suika | Izuru Yakumo | https://suika.chaotic.ninja |
d8c30f64e301 何をしていたか忘れてしまった
yakumo.izuru
parents: 80
diff changeset
117 | TechnicalMarisa | Izuru Yakumo | https://technicalmarisa.chaotic.ninja |
d8c30f64e301 何をしていたか忘れてしまった
yakumo.izuru
parents: 80
diff changeset
118 | Tengu Space | [DeviousTengu](https://fedi.tengu.space/devious) | https://tengu.space |
d8c30f64e301 何をしていたか忘れてしまった
yakumo.izuru
parents: 80
diff changeset
119 | WindowMaker Shrine | Izuru Yakumo | https://themes.chaotic.ninja |
67
4edfa07d5fe0 bfchroma turned out to be a hassle
yakumo.izuru
parents: 65
diff changeset
120
4edfa07d5fe0 bfchroma turned out to be a hassle
yakumo.izuru
parents: 65
diff changeset
121 ---
4edfa07d5fe0 bfchroma turned out to be a hassle
yakumo.izuru
parents: 65
diff changeset
122
4edfa07d5fe0 bfchroma turned out to be a hassle
yakumo.izuru
parents: 65
diff changeset
123 Ayaya~