1 --- title: /blog-6.0.0.html
2 --- description: Documentation for deprecated blog 6.0.0, a tool to author and manage a semi-ephemeralâ„¢ blog with a gemini archive.
5 NOTE: This documentation is for the deprecated javascript-based blog 6.0.0. For the newer blog, you should go to the main documentation[1].
7 => ./blog.gmi [1] Main documentation for blog
9 Command line tool to author and manage a semi-ephemeralâ„¢ blog with a gemini archive.
11 => https://git.r.bdr.sh/rbdr/blog view source @ git.r.bdr.sh
12 => https://git.sr.ht/~rbdr/blog source mirror @ sourcehut
16 At the moment only installation from source is available. Clone this repository and run:
22 This will add the `blog` command to your shell.
28 Create a `.gmi` gemini file.
30 You can add this to the blog using the following command:
32 blog --add path/to/blog_post.gmi
35 This it will shift all posts and remove the oldest one if the limit of posts is reached (defualts to 3). This will also regenerate the static files.
37 ### Updating the Latest post
39 If you need to make corrections to the latest post, use:
42 blog --update path/to/blog_post.gmi
45 This will replace the latest with the contents of the `path` without shifting the existing entries. It will also regenerate files.
47 ### Regenerate Static files.
49 Adding and updating posts regenerates the blog and archive, but you can always regenerate manually (eg. if you updated your static assets or templates):
55 ## Usage II: Publishing
57 Publishing the blog and archive requires `rsync`.
59 ### Publishing the Blog
61 You can publish to any valid `rsync` target (eg. ruben@coolserver.local:blog)
64 blog --publish <remote_server>
67 This publishes the static files, including the html index, rss feed and plaintext version of the ephemeral blog.
69 ### Publishing the Archive
71 You can also publish the archive of posts as a gemlog by passing a valid rsync target
74 blog --publish-archive <remote_server>
77 This will include *all the posts* in gemtext format.
79 ## Usage III: Source Control
81 Blog supports saving snapshots of the blog in git, and you can add and remove remotes with the following commands:
84 blog --add-remote <git_url>
88 If a remote is present, it will be pulled before adding or updating, and pushed after it finishes. You can manually trigger this by calling
95 The blog will always sync down before adding to avoid going out of sync.
97 **IF YOU CHANGE ANY FILES MANUALLY, REMEMBER TO SYNC UP, OTHERWISE YOUR CHANGES WILL BE LOST**
99 ## Usage IV: Customizing
101 The default templates included in blog are very generic and likely not helpful for your use case. However, you can customize this freely:
103 ### Using Custom Templates
105 You can override the default templates by creating a `templates` directory inside your blog data root (`$XDG_DATA_HOME/blog`).
107 For the ephemeral blog you can create `feed.xml`, `index.html`, and `index.txt` inside of `templates`. These files are then parsed with [dot][dot] and passed the following variables:
110 it.posts <Array<Post>>
113 +id <String> // The numerical timestamp when the blog post was added.
114 +createdOn <String> // The UTC String of post creation date. (only feed.xml)
115 +title <String> // The title of the post. (only feed.xml)
116 +raw <String> // The raw gemini text of the template.
117 +html <String> // The parsed html generated from the gemini.
120 To customize your gemini archive you can provide an `index.gmi` file that will be used as a template for the archive. However the data structure is different, as it's just the gemini URL strings:
123 it.posts <Array<String>>
126 ### Using Static Files
128 Any files inside the `static` directory of your blog data root (`$XDG_DATA_HOME/blog`) will be copied as is. This is useful for any images, javascript files or stylesheets that you use in your posts or templates.
130 ## Usage V: Where is Data Stored?
132 Blog uses three diretories to store data, all of them using the XDG User
135 => https://wiki.archlinux.org/title/XDG_user_directories XDG User Directories.
137 - Configuration is stored in $XDG_CONFIG_HOME/blog
138 - Data such as the raw blog, templates, and static files are stored in $XDG_DATA_HOME/blog
139 - Generated "ready to upload" files are stored in $XDG_CACHE_HOME/blog
141 All of these can be overridden by environment variables.
143 ## Usage VI: Configuration
145 You can control the number of posts in the ephemeral blog, and the location of
146 all the data by using environment variables.
148 ### Overriding Number of Posts
150 Updating the `BLOG_MAX_POSTS` environment variable sets the number of posts
153 ### Overriding Configuration Directory
155 You can set the `BLOG_CONFIG_DIRECTORY` to any directory you want. This
156 defaults to `$XDG_CONFIG_HOME/blog/` and is used to store the blog remote
159 ### Overriding Data Directory
161 Setting `BLOG_DATA_DIRECTORY` will update where the posts, archive, static
162 files, and templates are saved. The default is the `$XDG_DATA_HOME/blog`.
164 ### Overriding the location of generated files.
166 Setting `BLOG_OUTPUT_DIRECTORY` will update where generated files are placed.
168 The default is `$XDG_CACHE_HOME/blog`.
172 * 6.0.0 Use custom templates, use XDG directories.
173 * 5.0.2 Internal template changes
174 * 5.0.1 Dependency update
175 * 5.0.0 Publish using rsync instead of s3
176 * 4.0.0 Add gemini archive
177 * 3.0.0 Add support for RSS and TXT
178 * 2.0.0 Add support for S3 publishing
179 * 1.0.1 Bugs and dependency fixes
180 * 1.0.0 Initial release